From 5e63a73b7ecad4fa4518bd7f9687794b6ad4c914 Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Thu, 18 Jul 2024 14:57:54 +0200 Subject: [PATCH] fix(android): replace `onCatalystInstanceDestroy` with `invalidate` --- .changeset/quiet-snakes-count.md | 5 +++++ .../asyncstorage/AsyncStorageModule.java | 22 +++++-------------- packages/default-storage/package.json | 2 +- yarn.lock | 2 +- 4 files changed, 13 insertions(+), 18 deletions(-) create mode 100644 .changeset/quiet-snakes-count.md diff --git a/.changeset/quiet-snakes-count.md b/.changeset/quiet-snakes-count.md new file mode 100644 index 00000000..070bdede --- /dev/null +++ b/.changeset/quiet-snakes-count.md @@ -0,0 +1,5 @@ +--- +"@react-native-async-storage/async-storage": major +--- + +Support 0.74 (by migrating off deprecated `onCatalystInstanceDestroy`) — unfortunately, this also means that we must bump the minimum supported version to 0.65 diff --git a/packages/default-storage/android/src/main/java/com/reactnativecommunity/asyncstorage/AsyncStorageModule.java b/packages/default-storage/android/src/main/java/com/reactnativecommunity/asyncstorage/AsyncStorageModule.java index 3e402486..cff01c0d 100644 --- a/packages/default-storage/android/src/main/java/com/reactnativecommunity/asyncstorage/AsyncStorageModule.java +++ b/packages/default-storage/android/src/main/java/com/reactnativecommunity/asyncstorage/AsyncStorageModule.java @@ -15,7 +15,6 @@ import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.GuardedAsyncTask; -import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; @@ -34,7 +33,7 @@ @ReactModule(name = AsyncStorageModule.NAME) public final class AsyncStorageModule - extends NativeAsyncStorageModuleSpec implements ModuleDataCleaner.Cleanable, LifecycleEventListener { + extends NativeAsyncStorageModuleSpec implements ModuleDataCleaner.Cleanable { // changed name to not conflict with AsyncStorage from RN repo public static final String NAME = "RNCAsyncStorage"; @@ -60,11 +59,12 @@ public AsyncStorageModule(ReactApplicationContext reactContext) { @VisibleForTesting AsyncStorageModule(ReactApplicationContext reactContext, Executor executor) { super(reactContext); + // The migration MUST run before the AsyncStorage database is created for the first time. AsyncStorageExpoMigration.migrate(reactContext); this.executor = new SerialExecutor(executor); - reactContext.addLifecycleEventListener(this); + // Creating the database MUST happen after the migration. mReactDatabaseSupplier = ReactDatabaseSupplier.getInstance(reactContext); } @@ -81,8 +81,10 @@ public void initialize() { } @Override - public void onCatalystInstanceDestroy() { + public void invalidate() { mShuttingDown = true; + // ensure we close database when activity is destroyed + mReactDatabaseSupplier.closeDatabase(); } @Override @@ -93,18 +95,6 @@ public void clearSensitiveData() { mReactDatabaseSupplier.clearAndCloseDatabase(); } - @Override - public void onHostResume() {} - - @Override - public void onHostPause() {} - - @Override - public void onHostDestroy() { - // ensure we close database when activity is destroyed - mReactDatabaseSupplier.closeDatabase(); - } - /** * Given an array of keys, this returns a map of (key, value) pairs for the keys found, and * (key, null) for the keys that haven't been found. diff --git a/packages/default-storage/package.json b/packages/default-storage/package.json index 28997ad6..57b8fde5 100644 --- a/packages/default-storage/package.json +++ b/packages/default-storage/package.json @@ -66,7 +66,7 @@ "merge-options": "^3.0.4" }, "peerDependencies": { - "react-native": "^0.0.0-0 || >=0.60 <1.0" + "react-native": "^0.0.0-0 || >=0.65 <1.0" }, "devDependencies": { "@babel/core": "^7.20.0", diff --git a/yarn.lock b/yarn.lock index 817ccf2d..91b0d304 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4238,7 +4238,7 @@ __metadata: typescript: "npm:^5.3.0" webdriverio: "npm:^8.24.0" peerDependencies: - react-native: ^0.0.0-0 || >=0.60 <1.0 + react-native: ^0.0.0-0 || >=0.65 <1.0 languageName: unknown linkType: soft