Skip to content

Commit c125af4

Browse files
committed
Do a migration in Core of the cached SDK versions
1 parent b9ddda6 commit c125af4

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

iOS_SDK/OneSignalSDK/OneSignalCore/Source/OneSignalCore.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
// TODO: Testing: Should this class be defined in this file?
6363
@interface OneSignalCoreImpl : NSObject
6464

65+
+ (void)migrate;
6566
+ (void)setSharedClient:(nonnull id<IOneSignalClient>)client;
6667
+ (nonnull id<IOneSignalClient>)sharedClient;
6768

iOS_SDK/OneSignalSDK/OneSignalCore/Source/OneSignalCore.m

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,33 @@
3030

3131
@implementation OneSignalCoreImpl
3232

33+
+ (void)migrate {
34+
[self migrateCachedSdkVersion];
35+
[self saveCurrentSDKVersion];
36+
}
37+
38+
/// Every module should be responsible for its own migration, as it is possible for one module
39+
/// to finish migrating without another undergoing migration yet. See PR xxxxxxxx.
40+
+ (void)migrateCachedSdkVersion {
41+
if (![OneSignalUserDefaults.initShared keyExists:OSUD_LEGACY_CACHED_SDK_VERSION_FOR_MIGRATION]) {
42+
return;
43+
}
44+
45+
// The default value should never be used, however the getSavedIntegerForKey method requires it
46+
long sdkVersion = [OneSignalUserDefaults.initShared getSavedIntegerForKey:OSUD_LEGACY_CACHED_SDK_VERSION_FOR_MIGRATION defaultValue:0];
47+
[OneSignalLog onesignalLog:ONE_S_LL_DEBUG message:[NSString stringWithFormat:@"OneSignalCoreImpl migrating cached SDK versions from version: %ld", sdkVersion]];
48+
49+
[OneSignalUserDefaults.initShared saveIntegerForKey:OSUD_CACHED_SDK_VERSION_FOR_CORE withValue:sdkVersion];
50+
[OneSignalUserDefaults.initShared saveIntegerForKey:OSUD_CACHED_SDK_VERSION_FOR_OUTCOMES withValue:sdkVersion];
51+
[OneSignalUserDefaults.initShared saveIntegerForKey:OSUD_CACHED_SDK_VERSION_FOR_IAM withValue:sdkVersion];
52+
[OneSignalUserDefaults.initShared removeValueForKey:OSUD_LEGACY_CACHED_SDK_VERSION_FOR_MIGRATION];
53+
}
54+
55+
+ (void)saveCurrentSDKVersion {
56+
int currentVersion = [ONESIGNAL_VERSION intValue];
57+
[OneSignalUserDefaults.initShared saveIntegerForKey:OSUD_CACHED_SDK_VERSION_FOR_CORE withValue:currentVersion];
58+
}
59+
3360
static id<IOneSignalClient> _sharedClient;
3461
+ (id<IOneSignalClient>)sharedClient {
3562
if (!_sharedClient) {

iOS_SDK/OneSignalSDK/OneSignalExtension/OneSignalNotificationServiceExtensionHandler.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ + (void)addActionButtonsToExtentionRequest:(UNNotificationRequest*)request
132132
+ (void)onNotificationReceived:(NSString *)receivedNotificationId withBlockingTask:(dispatch_semaphore_t)semaphore {
133133
if (receivedNotificationId && ![receivedNotificationId isEqualToString:@""]) {
134134
// If update was made without app being initialized/launched before -> migrate
135+
[OneSignalCoreImpl migrate];
135136
[OSOutcomes migrate];
136137
[OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"NSE request received, sessionManager: %@", [OSSessionManager sharedSessionManager]]];
137138
// Save received notification id

iOS_SDK/OneSignalSDK/Source/OSMigrationController.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ + (OSOutcomeEventsCache *)outcomeEventsCache;
4040
@implementation OSMigrationController
4141

4242
- (void)migrate {
43+
[OneSignalCoreImpl migrate];
4344
[OSOutcomes migrate];
4445
let oneSignalInAppMessages = NSClassFromString(ONE_SIGNAL_IN_APP_MESSAGES_CLASS_NAME);
4546
if (oneSignalInAppMessages != nil && [oneSignalInAppMessages respondsToSelector:@selector(migrate)]) {

0 commit comments

Comments
 (0)