Skip to content

Commit 6df3215

Browse files
committed
Add Success and Failure Callbacks to setLanguage
* Add success and failure callbacks to OneSignal.setLanguage * Add success and failure callbacks to OSStateSynchronizer.UpdateLanguage
1 parent e937e06 commit 6df3215

File tree

4 files changed

+42
-17
lines changed

4 files changed

+42
-17
lines changed

iOS_SDK/OneSignalSDK/Source/OSStateSynchronizer.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ withSMSAuthHashToken:(NSString * _Nullable)hashToken
7777
onFailure:(OSMultipleFailureBlock _Nullable)failureBlock;
7878

7979
- (void)updateLanguage:(NSString * _Nonnull)language
80-
appId:(NSString * _Nonnull)appId;
80+
appId:(NSString * _Nonnull)appId
81+
withSuccess:(OSUpdateLanguageSuccessBlock)successBlock
82+
withFailure:(OSUpdateLanguageFailureBlock)failureBlock;
8183

8284
@end

iOS_SDK/OneSignalSDK/Source/OSStateSynchronizer.m

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,14 +382,29 @@ - (void)callSMSSuccessBlockOnMainThread:(OSSMSSuccessBlock)successBlock withSMSN
382382
}
383383

384384
- (void)updateLanguage:(NSString * _Nonnull)language
385-
appId:(NSString * _Nonnull)appId {
385+
appId:(NSString * _Nonnull)appId
386+
withSuccess:(OSUpdateLanguageSuccessBlock)successBlock
387+
withFailure:(OSUpdateLanguageFailureBlock)failureBlock {
386388
let stateSyncronizer = [self getStateSynchronizers];
387389
let requests = [NSMutableDictionary new];
388390
for (OSUserStateSynchronizer* userStateSynchronizer in stateSyncronizer) {
389391
requests[userStateSynchronizer.getChannelId] = [userStateSynchronizer setLanguage:language withAppId:appId];
390392
}
391393

392-
[OneSignalClient.sharedClient executeSimultaneousRequests:requests withSuccess:nil onFailure:nil];
394+
[OneSignalClient.sharedClient executeSimultaneousRequests:requests withCompletion:^(NSDictionary<NSString *,NSDictionary *> *results) {
395+
if (results[OS_PUSH] && results[OS_PUSH][OS_SUCCESS] && [results[OS_PUSH][OS_SUCCESS] boolValue]) {
396+
[OneSignalUserDefaults.initStandard saveStringForKey:OSUD_LANGUAGE withValue:language];
397+
}
398+
else if (results[OS_EMAIL] && results[OS_EMAIL][OS_SUCCESS] && [results[OS_EMAIL][OS_SUCCESS] boolValue]) {
399+
[OneSignalUserDefaults.initStandard saveStringForKey:OSUD_LANGUAGE withValue:language];
400+
}
401+
else if (results[OS_SMS] && results[OS_SMS][OS_SUCCESS] && [results[OS_SMS][OS_SUCCESS] boolValue]) {
402+
[OneSignalUserDefaults.initStandard saveStringForKey:OSUD_LANGUAGE withValue:language];
403+
}
404+
405+
if (successBlock)
406+
successBlock(results);
407+
}];
393408
}
394409

395410
@end

iOS_SDK/OneSignalSDK/Source/OneSignal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,8 +564,12 @@ typedef void (^OSSMSSuccessBlock)(NSDictionary *results);
564564
+ (void)logoutSMSNumberWithSuccess:(OSSMSSuccessBlock _Nullable)successBlock withFailure:(OSSMSFailureBlock _Nullable)failureBlock;
565565

566566
#pragma mark Language
567+
// Typedefs defining completion blocks for updating language
568+
typedef void (^OSUpdateLanguageFailureBlock)(NSError *error);
569+
typedef void (^OSUpdateLanguageSuccessBlock)(NSDictionary *results);
567570

568571
+ (void)setLanguage:(NSString * _Nonnull)language;
572+
+ (void)setLanguage:(NSString * _Nonnull)language withSuccess:(OSUpdateLanguageSuccessBlock _Nullable)successBlock withFailure:(OSUpdateLanguageFailureBlock)failureBlock;
569573

570574
#pragma mark External User Id
571575
// Typedefs defining completion blocks for updating the external user id

iOS_SDK/OneSignalSDK/Source/OneSignal.m

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@
9090
#import "OneSignalLifecycleObserver.h"
9191
#import "OSPlayerTags.h"
9292

93-
#import "Language/LanguageProviderAppDefined.h"
94-
#import "Language/LanguageContext.h"
93+
#import "LanguageProviderAppDefined.h"
94+
#import "LanguageContext.h"
9595

9696
#pragma clang diagnostic push
9797
#pragma clang diagnostic ignored "-Wundeclared-selector"
@@ -2705,26 +2705,30 @@ + (void)setLanguage:(NSString * _Nonnull)language {
27052705
if ([self shouldLogMissingPrivacyConsentErrorWithMethodName:@"setLanguage"])
27062706
return;
27072707

2708-
let languageProviderAppDefined = [LanguageProviderAppDefined new];
2709-
[languageProviderAppDefined setLanguage:language];
2710-
[languageContext setStrategy:languageProviderAppDefined];
2711-
27122708
//Can't send Language if there exists not LanguageContext or language
27132709
if (languageContext.language)
2714-
[self setLanguageOnServer];
2710+
[self setLanguageOnServer:language WithSuccess:nil withFailure:nil];
27152711
}
27162712

2717-
// Called only with a delay to batch network calls.
2718-
+ (void)setLanguageOnServer {
2719-
2713+
+ (void)setLanguage:(NSString * _Nonnull)language withSuccess:(OSUpdateLanguageSuccessBlock)successBlock withFailure:(OSUpdateLanguageFailureBlock)failureBlock {
27202714
// return if the user has not granted privacy permissions
2721-
if ([self shouldLogMissingPrivacyConsentErrorWithMethodName:nil])
2715+
if ([self shouldLogMissingPrivacyConsentErrorWithMethodName:@"setLanguage"])
27222716
return;
27232717

2724-
if (!languageContext.language) //Add Language null check
2725-
return;
2718+
//Can't send Language if there exists not LanguageContext or language
2719+
if (languageContext.language)
2720+
[self setLanguageOnServer:language WithSuccess:successBlock withFailure:failureBlock];
2721+
}
2722+
2723+
+ (void)setLanguageOnServer:(NSString * _Nonnull)language WithSuccess:(OSUpdateLanguageSuccessBlock)successBlock withFailure:(OSUpdateLanguageFailureBlock)failureBlock {
2724+
2725+
[OneSignal.stateSynchronizer updateLanguage:language appId:appId withSuccess:successBlock withFailure:failureBlock];
27262726

2727-
[OneSignal.stateSynchronizer updateLanguage:languageContext.language appId:appId];
2727+
if(successBlock) {
2728+
let languageProviderAppDefined = [LanguageProviderAppDefined new];
2729+
[languageProviderAppDefined setLanguage:language];
2730+
[languageContext setStrategy:languageProviderAppDefined];
2731+
}
27282732
}
27292733

27302734
+ (void)setExternalUserId:(NSString * _Nonnull)externalId {

0 commit comments

Comments
 (0)