# HG changeset patch
# User antonc27 <antonc27@mail.ru>
# Date 1520807045 -3600
# Node ID c129707eb1e6f7cc259f47d3267c019db1753c9b
# Parent  ba5c794adae31532d03df0bc05f63ecb8e2d3da4
- Remember user settings on app update

P.S. Ideally must not erase user's saves and schemes too...

diff -r ba5c794adae3 -r c129707eb1e6 project_files/HedgewarsMobile/Classes/CreationChamber.m
--- a/project_files/HedgewarsMobile/Classes/CreationChamber.m	Sun Mar 11 22:39:40 2018 +0100
+++ b/project_files/HedgewarsMobile/Classes/CreationChamber.m	Sun Mar 11 23:24:05 2018 +0100
@@ -72,16 +72,15 @@
 #pragma mark Settings
 + (void)createSettings {
     NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
-    [settings setObject:[NSNumber numberWithBool:NO] forKey:@"alternate"];
-    [settings setObject:[NSNumber numberWithBool:YES] forKey:@"music"];
-    [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sound"];
-    [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sync_ws"];
+    
+    [settings setDefaultBool:NO forNonExistingKey:@"alternate"];
+    [settings setDefaultBool:YES forNonExistingKey:@"music"];
+    [settings setDefaultBool:YES forNonExistingKey:@"sound"];
+    [settings setDefaultBool:YES forNonExistingKey:@"sync_ws"];
 
     // don't overwrite these two strings when present
-    if ([settings objectForKey:@"username"] == nil)
-        [settings setObject:@"" forKey:@"username"];
-    if ([settings objectForKey:@"password"] == nil)
-        [settings setObject:@"" forKey:@"password"];
+    [settings setDefaultValue:@"" forNonExistingKey:@"username"];
+    [settings setDefaultValue:@"" forNonExistingKey:@"password"];
 
     [settings synchronize];
 }
diff -r ba5c794adae3 -r c129707eb1e6 project_files/HedgewarsMobile/Classes/ExtraCategories.h
--- a/project_files/HedgewarsMobile/Classes/ExtraCategories.h	Sun Mar 11 22:39:40 2018 +0100
+++ b/project_files/HedgewarsMobile/Classes/ExtraCategories.h	Sun Mar 11 23:24:05 2018 +0100
@@ -72,3 +72,9 @@
 
 @end
 
+@interface NSUserDefaults (setNonExisting)
+
+- (void)setDefaultValue:(nullable id)value forNonExistingKey:(NSString *_Nonnull)key;
+- (void)setDefaultBool:(BOOL)boolValue forNonExistingKey:(NSString *_Nonnull)key;
+
+@end
diff -r ba5c794adae3 -r c129707eb1e6 project_files/HedgewarsMobile/Classes/ExtraCategories.m
--- a/project_files/HedgewarsMobile/Classes/ExtraCategories.m	Sun Mar 11 22:39:40 2018 +0100
+++ b/project_files/HedgewarsMobile/Classes/ExtraCategories.m	Sun Mar 11 23:24:05 2018 +0100
@@ -190,3 +190,19 @@
 }
 
 @end
+
+
+#pragma mark -
+@implementation NSUserDefaults (setNonExisting)
+
+- (void)setDefaultValue:(nullable id)value forNonExistingKey:(NSString *_Nonnull)key {
+    if ([self objectForKey:key] == nil) {
+        [self setObject:value forKey:key];
+    }
+}
+
+- (void)setDefaultBool:(BOOL)boolValue forNonExistingKey:(NSString *_Nonnull)key {
+    [self setDefaultValue:[NSNumber numberWithBool:boolValue] forNonExistingKey:key];
+}
+
+@end