forked from Ivasoft/mattermost-mobile
127 lines
3.9 KiB
Objective-C
127 lines
3.9 KiB
Objective-C
//
|
|
// MattermostBucket.m
|
|
// Mattermost
|
|
//
|
|
// Created by Elias Nahum on 12/11/17.
|
|
// Copyright © 2017 Facebook. All rights reserved.
|
|
//
|
|
|
|
#import "MattermostBucket.h"
|
|
|
|
@implementation MattermostBucket
|
|
|
|
+(BOOL)requiresMainQueueSetup
|
|
{
|
|
return YES;
|
|
}
|
|
|
|
RCT_EXPORT_MODULE();
|
|
|
|
RCT_EXPORT_METHOD(writeToFile:(NSString *)fileName
|
|
content:(NSString *)content
|
|
bucketName:(NSString *)bucketName) {
|
|
[self writeToFile:fileName content:content appGroupId:bucketName];
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(readFromFile:(NSString *)fileName
|
|
bucketName:(NSString*)bucketName
|
|
getWithResolver:(RCTPromiseResolveBlock)resolve
|
|
rejecter:(RCTPromiseRejectBlock)reject)
|
|
{
|
|
id value = [self readFromFile:fileName appGroupId:bucketName];
|
|
|
|
if (value == nil) {
|
|
value = [NSNull null];
|
|
}
|
|
|
|
resolve(value);
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(removeFile:(NSString *)fileName
|
|
bucketName:(NSString*)bucketName)
|
|
{
|
|
[self removeFile:fileName appGroupId:bucketName];
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(setPreference:(NSString *) key
|
|
value:(NSString *) value
|
|
bucketName:(NSString*) bucketName)
|
|
{
|
|
[self setPreference:key value:value appGroupId:bucketName];
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(getPreference:(NSString *) key
|
|
bucketName:(NSString*) bucketName
|
|
getWithResolver:(RCTPromiseResolveBlock)resolve
|
|
rejecter:(RCTPromiseRejectBlock)reject)
|
|
{
|
|
id value = [self getPreference:key appGroupId:bucketName];
|
|
|
|
if (value == nil) {
|
|
value = [NSNull null];
|
|
}
|
|
|
|
resolve(value);
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(removePreference:(NSString *) key
|
|
bucketName:(NSString*) bucketName)
|
|
{
|
|
[self removePreference:key appGroupId:bucketName];
|
|
}
|
|
|
|
-(NSString *)fileUrl:(NSString *)fileName appGroupdId:(NSString *)appGroupId {
|
|
NSURL *fileManagerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:appGroupId];
|
|
return [NSString stringWithFormat:@"%@/%@", fileManagerURL.path, fileName];
|
|
}
|
|
|
|
-(void)writeToFile:(NSString *)fileName content:(NSString *)content appGroupId:(NSString *)appGroupId {
|
|
NSString *filePath = [self fileUrl:fileName appGroupdId:appGroupId];
|
|
NSFileManager *fileManager= [NSFileManager defaultManager];
|
|
if(![fileManager fileExistsAtPath:filePath]) {
|
|
[fileManager createFileAtPath:filePath contents:nil attributes:nil];
|
|
}
|
|
if ([content length] > 0) {
|
|
[content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
|
|
}
|
|
}
|
|
|
|
-(NSString *)readFromFile:(NSString *)fileName appGroupId:(NSString *)appGroupId {
|
|
NSString *filePath = [self fileUrl:fileName appGroupdId:appGroupId];
|
|
NSFileManager *fileManager= [NSFileManager defaultManager];
|
|
if(![fileManager fileExistsAtPath:filePath]) {
|
|
return nil;
|
|
}
|
|
return [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
|
|
}
|
|
|
|
-(void)removeFile:(NSString *)fileName appGroupId:(NSString *)appGroupId {
|
|
NSString *filePath = [self fileUrl:fileName appGroupdId:appGroupId];
|
|
NSFileManager *fileManager= [NSFileManager defaultManager];
|
|
if([fileManager isDeletableFileAtPath:filePath]) {
|
|
[fileManager removeItemAtPath:filePath error:nil];
|
|
}
|
|
}
|
|
|
|
-(NSUserDefaults *)bucketByName:(NSString*)name {
|
|
return [[NSUserDefaults alloc] initWithSuiteName: name];
|
|
}
|
|
|
|
-(void) setPreference:(NSString *)key value:(NSString *) value appGroupId:(NSString*)appGroupId {
|
|
NSUserDefaults* bucket = [self bucketByName: appGroupId];
|
|
if (bucket && [key length] > 0 && [value length] > 0) {
|
|
[bucket setObject:value forKey:key];
|
|
}
|
|
}
|
|
|
|
-(id) getPreference:(NSString *)key appGroupId:(NSString*)appGroupId {
|
|
NSUserDefaults* bucket = [self bucketByName: appGroupId];
|
|
return [bucket objectForKey:key];
|
|
}
|
|
|
|
-(void) removePreference:(NSString *)key appGroupId:(NSString*)appGroupId {
|
|
NSUserDefaults* bucket = [self bucketByName: appGroupId];
|
|
[bucket removeObjectForKey: key];
|
|
}
|
|
@end
|