@@ -44,13 +44,32 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
4444#pragma mark - Handle method call
4545
4646- (void )setAppGroup : (FlutterMethodCall *)call result : (FlutterResult)result {
47- self.appGroup = call.arguments [@" appGroup" ];
48- self.userDefaults = [[NSUserDefaults alloc ] initWithSuiteName: _appGroup];
47+ NSDictionary *arguments = call.arguments ;
48+ if (![arguments isKindOfClass: [NSDictionary class ]]) {
49+ result ([FlutterError errorWithCode: @" INVALID_ARGUMENTS" message: @" `setAppGroup` arguments must be a map" details: nil ]);
50+ return ;
51+ }
52+
53+ id appGroup = arguments[@" appGroup" ];
54+ if (![appGroup isKindOfClass: [NSString class ]] || ((NSString *)appGroup).length == 0 ) {
55+ result ([FlutterError errorWithCode: @" INVALID_APP_GROUP" message: @" `appGroup` must be a non-empty string" details: nil ]);
56+ return ;
57+ }
58+
59+ self.appGroup = appGroup;
60+ self.userDefaults = [[NSUserDefaults alloc ] initWithSuiteName: self .appGroup];
61+ if (!self.userDefaults ) {
62+ result ([FlutterError errorWithCode: @" APP_GROUP_COULD_NOT_BE_OPENED" message: @" Could not open the specified app group" details: nil ]);
63+ return ;
64+ }
65+
4966 result (nil );
5067}
5168
5269- (void )setBool : (FlutterMethodCall *)call result : (FlutterResult)result {
53- [self checkAppGroup: result];
70+ if (![self checkAppGroup: result]) {
71+ return ;
72+ }
5473
5574 NSString *key = call.arguments [@" key" ];
5675 NSNumber *value = call.arguments [@" value" ];
@@ -59,7 +78,9 @@ - (void)setBool:(FlutterMethodCall *)call result:(FlutterResult)result {
5978}
6079
6180- (void )setInt : (FlutterMethodCall *)call result : (FlutterResult)result {
62- [self checkAppGroup: result];
81+ if (![self checkAppGroup: result]) {
82+ return ;
83+ }
6384
6485 NSString *key = call.arguments [@" key" ];
6586 NSNumber *value = call.arguments [@" value" ];
@@ -71,7 +92,9 @@ - (void)setInt:(FlutterMethodCall *)call result:(FlutterResult)result {
7192}
7293
7394- (void )setDouble : (FlutterMethodCall *)call result : (FlutterResult)result {
74- [self checkAppGroup: result];
95+ if (![self checkAppGroup: result]) {
96+ return ;
97+ }
7598
7699 NSString *key = call.arguments [@" key" ];
77100 NSNumber *value = call.arguments [@" value" ];
@@ -80,7 +103,9 @@ - (void)setDouble:(FlutterMethodCall *)call result:(FlutterResult)result {
80103}
81104
82105- (void )setString : (FlutterMethodCall *)call result : (FlutterResult)result {
83- [self checkAppGroup: result];
106+ if (![self checkAppGroup: result]) {
107+ return ;
108+ }
84109
85110 NSString *key = call.arguments [@" key" ];
86111 NSString *value = call.arguments [@" value" ];
@@ -89,7 +114,9 @@ - (void)setString:(FlutterMethodCall *)call result:(FlutterResult)result {
89114}
90115
91116- (void )setStringArray : (FlutterMethodCall *)call result : (FlutterResult)result {
92- [self checkAppGroup: result];
117+ if (![self checkAppGroup: result]) {
118+ return ;
119+ }
93120
94121 NSString *key = call.arguments [@" key" ];
95122 NSArray *value = call.arguments [@" value" ];
@@ -98,55 +125,69 @@ - (void)setStringArray:(FlutterMethodCall *)call result:(FlutterResult)result {
98125}
99126
100127- (void )get : (FlutterMethodCall *)call result : (FlutterResult)result {
101- [self checkAppGroup: result];
128+ if (![self checkAppGroup: result]) {
129+ return ;
130+ }
102131
103132 NSString *key = call.arguments [@" key" ];
104133 id value = [self .userDefaults valueForKey: key];
105134 result (value);
106135}
107136
108137- (void )getBool : (FlutterMethodCall *)call result : (FlutterResult)result {
109- [self checkAppGroup: result];
138+ if (![self checkAppGroup: result]) {
139+ return ;
140+ }
110141
111142 NSString *key = call.arguments [@" key" ];
112143 NSNumber *value = [NSNumber numberWithBool: [self .userDefaults boolForKey: key]];
113144 result (value);
114145}
115146
116147- (void )getInt : (FlutterMethodCall *)call result : (FlutterResult)result {
117- [self checkAppGroup: result];
148+ if (![self checkAppGroup: result]) {
149+ return ;
150+ }
118151
119152 NSString *key = call.arguments [@" key" ];
120153 NSNumber *value = [NSNumber numberWithLong: [self .userDefaults integerForKey: key]];
121154 result (value);
122155}
123156
124157- (void )getDouble : (FlutterMethodCall *)call result : (FlutterResult)result {
125- [self checkAppGroup: result];
158+ if (![self checkAppGroup: result]) {
159+ return ;
160+ }
126161
127162 NSString *key = call.arguments [@" key" ];
128163 NSNumber *value = [NSNumber numberWithDouble: [self .userDefaults doubleForKey: key]];
129164 result (value);
130165}
131166
132167- (void )getString : (FlutterMethodCall *)call result : (FlutterResult)result {
133- [self checkAppGroup: result];
168+ if (![self checkAppGroup: result]) {
169+ return ;
170+ }
134171
135172 NSString *key = call.arguments [@" key" ];
136173 NSString *value = [self .userDefaults stringForKey: key];
137174 result (value);
138175}
139176
140177- (void )getStringArray : (FlutterMethodCall *)call result : (FlutterResult)result {
141- [self checkAppGroup: result];
178+ if (![self checkAppGroup: result]) {
179+ return ;
180+ }
142181
143182 NSString *key = call.arguments [@" key" ];
144183 NSArray <NSString *> *value = [self .userDefaults stringArrayForKey: key];
145184 result (value);
146185}
147186
148187- (void )getAll : (FlutterMethodCall *)call result : (FlutterResult)result {
149- [self checkAppGroup: result];
188+ if (![self checkAppGroup: result]) {
189+ return ;
190+ }
150191
151192 NSDictionary *allPreferences = [self .userDefaults persistentDomainForName: self .appGroup];
152193 if (allPreferences && allPreferences.count > 0 ) {
@@ -157,15 +198,19 @@ - (void)getAll:(FlutterMethodCall *)call result:(FlutterResult)result {
157198}
158199
159200- (void )remove : (FlutterMethodCall *)call result : (FlutterResult)result {
160- [self checkAppGroup: result];
201+ if (![self checkAppGroup: result]) {
202+ return ;
203+ }
161204
162205 NSString *key = call.arguments [@" key" ];
163206 [self .userDefaults removeObjectForKey: key];
164207 result (nil );
165208}
166209
167210- (void )removeAll : (FlutterMethodCall *)call result : (FlutterResult)result {
168- [self checkAppGroup: result];
211+ if (![self checkAppGroup: result]) {
212+ return ;
213+ }
169214
170215 NSDictionary *allPreferences = [self .userDefaults persistentDomainForName: self .appGroup];
171216 for (NSString *key in allPreferences) {
@@ -176,10 +221,13 @@ - (void)removeAll:(FlutterMethodCall *)call result:(FlutterResult)result {
176221
177222#pragma mark - Private
178223
179- - (void )checkAppGroup : (FlutterResult)result {
224+ - (BOOL )checkAppGroup : (FlutterResult)result {
180225 if (!self.appGroup || !self.userDefaults ) {
181226 result ([FlutterError errorWithCode: @" APP_GROUP_HAS_NOT_BEEN_SET" message: @" You need to call `setAppGroup` before using" details: nil ]);
227+ return NO ;
182228 }
229+
230+ return YES ;
183231}
184232
185233
0 commit comments