Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ SPEC CHECKSUMS:
OCMockito: 4981140c9a9ec06c31af40f636e3c0f25f27e6b2
Specta: 96fe05fe5c7348b5223f85e862904f6e832abb14

COCOAPODS: 0.37.0
COCOAPODS: 0.38.2
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ UserDefaults.boolForKey('keyForMyBool')
});
```

#### Writing to user defined suite name
```javascript
//Set the suite name
var suiteName = 'mySuiteName';
UserDefaults.setSuiteName(suiteName);
// then start reading and writing to UserDefaults as the standardUserDefaults

### Todos for 1.0 release

- [ ] Implement `dataForKey:`
Expand Down
6 changes: 5 additions & 1 deletion RNUserDefaultsIOS.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var { NativeModules } = require('react-native');
var Promise = require('bluebird'); // jshint ignore:line
var UserDefaults = NativeModules.RNUserDefaultsIOS;

var _setSuiteName = Promise.promisify(UserDefaults.setUserDefaultsSuiteName);
var _setObjectForKey = Promise.promisify(UserDefaults.setObjectForKey);
var _setBoolForKey = Promise.promisify(UserDefaults.setBoolForKey);

Expand Down Expand Up @@ -41,7 +42,10 @@ var UserDefaults = {
},
removeItemForKey(key) {
return _removeItemForKey(key);
}
},
setSuiteName(name) {
return _setSuiteName(name);
},
};

module.exports = UserDefaults;
9 changes: 9 additions & 0 deletions RNUserDefaultsIOS.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
Expand Down Expand Up @@ -339,6 +340,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
Expand All @@ -351,6 +353,7 @@
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.1;
MTL_ENABLE_DEBUG_INFO = NO;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
Expand All @@ -366,6 +369,7 @@
"$(SRCROOT)/../react-native/React/**",
"$(SRCROOT)/node_modules/react-native/React/**",
);
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
Expand All @@ -382,6 +386,7 @@
"$(SRCROOT)/../react-native/React/**",
"$(SRCROOT)/node_modules/react-native/React/**",
);
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
Expand All @@ -392,6 +397,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 809831CEBAB242911E70061A /* Pods-RNUserDefaultsIOSTests.debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
Expand All @@ -402,6 +408,7 @@
);
INFOPLIST_FILE = RNUserDefaultsIOSTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
Expand All @@ -410,12 +417,14 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 8A87FCE5AE5E0842B36D1575 /* Pods-RNUserDefaultsIOSTests.release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
INFOPLIST_FILE = RNUserDefaultsIOSTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
Expand Down
34 changes: 27 additions & 7 deletions RNUserDefaultsIOS/RNUserDefaultsIOS.m
Original file line number Diff line number Diff line change
Expand Up @@ -9,34 +9,54 @@
#import "RNUserDefaultsIOS.h"
#import "UserDefaultsManager.h"

@interface RNUserDefaultsIOS ()

@property (nonatomic, strong) UserDefaultsManager *userDefaultsManager;

@end

@implementation RNUserDefaultsIOS

RCT_EXPORT_MODULE()

- (id) init
{
self = [super init];
if (self) {
_userDefaultsManager = [UserDefaultsManager new];
}
return self;
}

RCT_EXPORT_METHOD(setUserDefaultsSuiteName:(NSString *)suiteName callback:(RCTResponseSenderBlock)callback) {
[self.userDefaultsManager setUserDefaultsSuiteName:suiteName];
callback(@[[NSNull null], @"success"]);
}

RCT_EXPORT_METHOD(setObjectForKey:(id)object key:(NSString *)key callback:(RCTResponseSenderBlock)callback) {

[UserDefaultsManager setObject:object forKey:key];
[self.userDefaultsManager setObject:object forKey:key];

callback(@[[NSNull null], @"success"]);
}

RCT_EXPORT_METHOD(setBoolForKey:(BOOL)value key:(NSString *)key callback:(RCTResponseSenderBlock)callback) {

[UserDefaultsManager setBool:value forKey:key];
[self.userDefaultsManager setBool:value forKey:key];

callback(@[[NSNull null], @"success"]);
}

RCT_EXPORT_METHOD(removeObjectForKey:(NSString *)key callback:(RCTResponseSenderBlock)callback) {

[UserDefaultsManager removeObjectForKey:key];
[self.userDefaultsManager removeObjectForKey:key];

callback(@[[NSNull null], @"success"]);
}

RCT_EXPORT_METHOD(arrayForKey:(NSString *)key callback:(RCTResponseSenderBlock)callback) {

id response = [UserDefaultsManager arrayForKey:key];
id response = [self.userDefaultsManager arrayForKey:key];

if (response) {

Expand All @@ -50,7 +70,7 @@ @implementation RNUserDefaultsIOS

RCT_EXPORT_METHOD(stringForKey:(NSString *)key callback:(RCTResponseSenderBlock)callback) {

id response = [UserDefaultsManager stringForKey:key];
id response = [self.userDefaultsManager stringForKey:key];

if (response) {

Expand All @@ -64,7 +84,7 @@ @implementation RNUserDefaultsIOS

RCT_EXPORT_METHOD(objectForKey:(NSString *)key callback:(RCTResponseSenderBlock)callback) {

id response = [UserDefaultsManager objectForKey:key];
id response = [self.userDefaultsManager objectForKey:key];

if (response) {

Expand All @@ -78,7 +98,7 @@ @implementation RNUserDefaultsIOS

RCT_EXPORT_METHOD(boolForKey:(NSString *)key callback:(RCTResponseSenderBlock)callback) {

bool response = [UserDefaultsManager boolForKey:key];
bool response = [self.userDefaultsManager boolForKey:key];

callback(@[[NSNull null], [NSNumber numberWithBool:response]]);
}
Expand Down
16 changes: 9 additions & 7 deletions RNUserDefaultsIOS/UserDefaultsManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,20 @@

@interface UserDefaultsManager : NSObject

+ (void)setObject:(id)object forKey:(NSString *)key;
- (void)setUserDefaultsSuiteName:(NSString *)suiteName;

+ (void)setBool:(bool)value forKey:(NSString *)key;
- (void)setObject:(id)object forKey:(NSString *)key;

+ (void)removeObjectForKey:(NSString *)key;
- (void)setBool:(bool)value forKey:(NSString *)key;

+ (NSArray *)arrayForKey:(NSString *)key;
- (void)removeObjectForKey:(NSString *)key;

+ (NSString *)stringForKey:(NSString *)key;
- (NSArray *)arrayForKey:(NSString *)key;

+ (id)objectForKey:(NSString *)key;
- (NSString *)stringForKey:(NSString *)key;

+ (bool)boolForKey:(NSString *)key;
- (id)objectForKey:(NSString *)key;

- (bool)boolForKey:(NSString *)key;

@end
51 changes: 37 additions & 14 deletions RNUserDefaultsIOS/UserDefaultsManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,41 +8,64 @@

#import "UserDefaultsManager.h"

@interface UserDefaultsManager ()

@property (nonatomic, strong) NSUserDefaults *userDefaults;

@end

@implementation UserDefaultsManager

+ (void)setObject:(id)object forKey:(NSString *)key {
- (id)init
{
self = [super init];
if (self) {
_userDefaults = [NSUserDefaults standardUserDefaults];
}
return self;
}

- (void)setUserDefaultsSuiteName:(NSString *)suiteName
{
_userDefaults = [[NSUserDefaults alloc] initWithSuiteName:suiteName];
}

- (void)setObject:(id)object forKey:(NSString *)key {

[[NSUserDefaults standardUserDefaults] setObject:object forKey:key];
[self.userDefaults setObject:object forKey:key];
[self.userDefaults synchronize];
}

+ (void)setBool:(bool)value forKey:(NSString *)key {
- (void)setBool:(bool)value forKey:(NSString *)key {

[[NSUserDefaults standardUserDefaults] setBool:value forKey:key];
[self.userDefaults setBool:value forKey:key];
[self.userDefaults synchronize];
}

+ (void)removeObjectForKey:(NSString *)key {
- (void)removeObjectForKey:(NSString *)key {

[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
[self.userDefaults removeObjectForKey:key];
[self.userDefaults synchronize];
}

+ (NSArray *)arrayForKey:(NSString *)key {
- (NSArray *)arrayForKey:(NSString *)key {

return [[NSUserDefaults standardUserDefaults] arrayForKey:key];
return [self.userDefaults arrayForKey:key];
}

+ (NSString *)stringForKey:(NSString *)key {
- (NSString *)stringForKey:(NSString *)key {

return [[NSUserDefaults standardUserDefaults] stringForKey:key];
return [self.userDefaults stringForKey:key];
}

+ (id)objectForKey:(NSString *)key {
- (id)objectForKey:(NSString *)key {

return [[NSUserDefaults standardUserDefaults] objectForKey:key];
return [self.userDefaults objectForKey:key];
}

+ (bool)boolForKey:(NSString *)key {
- (bool)boolForKey:(NSString *)key {

return [[NSUserDefaults standardUserDefaults] boolForKey:key];
return [self.userDefaults boolForKey:key];
}

@end
Loading