diff --git a/android/build.gradle b/android/build.gradle
index 21946e6d..084b6541 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -4,12 +4,12 @@ import org.apache.tools.ant.taskdefs.condition.Os
buildscript {
ext {
- buildToolsVersion = "34.0.0"
+ buildToolsVersion = "35.0.0"
minSdkVersion = 28
- compileSdkVersion = 34
- targetSdkVersion = 34
- ndkVersion = "26.1.10909125"
- kotlinVersion = "1.9.24"
+ compileSdkVersion = 35
+ targetSdkVersion = 35
+ ndkVersion = "27.1.12297006"
+ kotlinVersion = "1.9.25"
glideVersion= "4.12.0"
firebaseIidVersion = "21.1.0"
}
diff --git a/android/gradle.properties b/android/gradle.properties
index c7b4d1b3..1d3f3366 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -39,3 +39,6 @@ newArchEnabled=false
# Use this property to enable or disable the Hermes JS engine.
# If set to false, you will be using JSC instead.
hermesEnabled=true
+
+# Suppress warning about using compileSdk = 35 with older Android Gradle Plugin
+android.suppressUnsupportedCompileSdk=35
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index c4355a8d..fb4ca323 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -1375,7 +1375,7 @@ PODS:
- React-Core
- react-native-safe-area-context (4.10.5):
- React-Core
- - react-native-skia (1.5.3):
+ - react-native-skia (1.12.4):
- DoubleConversion
- glog
- hermes-engine
@@ -1684,7 +1684,7 @@ PODS:
- React-logger (= 0.75.4)
- React-perflogger (= 0.75.4)
- React-utils (= 0.75.4)
- - RealmJS (12.13.2):
+ - RealmJS (12.14.2):
- React
- RNArgon2 (2.0.1):
- CatCrypto
@@ -2299,7 +2299,7 @@ SPEC CHECKSUMS:
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
react-native-netinfo: f0a9899081c185db1de5bb2fdc1c88c202a059ac
react-native-safe-area-context: a240ad4b683349e48b1d51fed1611138d1bdad97
- react-native-skia: 2ddddc0cda79a7fe0bbae14a9844f01c0fdff743
+ react-native-skia: 56d126fa2d216f4056929db508102126663bce93
react-native-slider: 97ce0bd921f40de79cead9754546d5e4e7ba44f8
react-native-tcp-socket: e724380c910c2e704816ec817ed28f1342246ff7
react-native-webview-mm: c518409c962c1f0f95c08bb6a700b9f97aff131b
@@ -2329,7 +2329,7 @@ SPEC CHECKSUMS:
React-utils: cbe8b8b3d7b2ac282e018e46f0e7b25cdc87c5a0
ReactCodegen: 4bcb34e6b5ebf6eef5cee34f55aa39991ea1c1f1
ReactCommon: 6a952e50c2a4b694731d7682aaa6c79bc156e4ad
- RealmJS: bfe9a997a1f813c05c432c94405753879572a1a2
+ RealmJS: ab0e1afd06ef856f8ae396520da1690bcaa669f8
RNArgon2: 1481820722fd4af1575c09f7fc9ad67c00ee8a42
RNBootSplash: e025d4ee98d942ee6c8b495a6fe66339a6b5f6dd
RNCAsyncStorage: d35c79ffba52c1013013e16b1fc295aec2feabb6
diff --git a/loc/en-US.json b/loc/en-US.json
index 4d0f9b16..e6cd4940 100644
--- a/loc/en-US.json
+++ b/loc/en-US.json
@@ -714,6 +714,7 @@
"rationaleCreateWallet": "Your password is required to create a new wallet",
"rationaleSeeRecoveryPhrase": "to view your Secret Recovery Phrase",
"rationaleGetXPub": "Your password is required to see your extended public key",
+ "rationaleUpdateStorage": "Your password is required to update the storage",
"authFailed": "Authentication Failed",
"authFailedDescription": "You can try again, or you may completely wipe and reset the app",
"retry": "Retry",
@@ -890,6 +891,7 @@
"technicalIssues": "We are experiencing an issue, please try again later",
"address": "Enter address...",
"addressOrENS": "Enter address or ENS domain...",
+ "eip681Warning": "Warning: QR scan includes transfer instructions. Confirm the recipient address before proceeding.",
"max": "Max",
"minAmount": "Min transfer value: {minAmount} {token}",
"balance": "Balance {0}",
@@ -932,6 +934,10 @@
"advanced": "Advanced",
"deleteAll": "Delete all data",
"refreshAll": "Refresh metadata",
+ "updateStorage": "Update storage",
+ "updateStorageNotification": "Processing...",
+ "updateStorageNotificationSuccess": "Storage updated Successfully!",
+ "updateStorageNotificationError": "Error: Storage not updated!",
"refreshAllDesc": "Clears cache for all NFTs and assets",
"header": "Settings",
"hideBalances": "Hide balances",
diff --git a/package.json b/package.json
index 478df73f..67cb807c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "superwallet",
- "version": "1.18.1",
+ "version": "1.21.0",
"private": true,
"scripts": {
"android": "react-native run-android",
@@ -9,7 +9,7 @@
"dev": "react-native start --experimental-debugger",
"android-reverse": "adb reverse tcp:8081 tcp:8081",
"git2json": "./tools/git-info.sh > git-info.json",
- "cleanstart": "cd android/; ./gradlew clean; cd ..; rm -r -f /tmp/metro-cache/; rm -r -f node_modules/; yarn cache clean; yarn; yarn start --reset-cache",
+ "cleanstart": "cd android/; ./gradlew clean; cd ..; rm -r -f /tmp/metro-cache/; rm -r -f node_modules/; rm -rf ios/.xcode.env.local; yarn cache clean; yarn; yarn start --reset-cache",
"postinstall": "rn-nodeify --install events,process --hack; yarn git2json; yarn patch-package",
"android:emu:build": "cd android && ./gradlew assembleRelease",
"android:install": "adb install android/app/build/outputs/apk/release/app-release.apk",
@@ -42,7 +42,7 @@
"@realm/react": "0.11.0",
"@reown/walletkit": "1.0.0",
"@shopify/flash-list": "1.7.1",
- "@shopify/react-native-skia": "1.5.3",
+ "@shopify/react-native-skia": "1.12.4",
"@solana/spl-token": "0.3.8",
"@solana/web3.js": "1.91.7",
"@tanstack/react-query": "5.51.9",
@@ -112,7 +112,7 @@
"react-native-svg": "15.8.0",
"react-native-tcp-socket": "6.0.6",
"react-native-url-polyfill": "1.3.0",
- "realm": "12.13.2",
+ "realm": "12.14.2",
"rn-nodeify": "10.3.0",
"serialize-error": "11.0.1",
"stream-browserify": "3.0.0",
diff --git a/patches/expo-modules-core+1.12.26.patch b/patches/expo-modules-core+1.12.26.patch
new file mode 100644
index 00000000..c38b4811
--- /dev/null
+++ b/patches/expo-modules-core+1.12.26.patch
@@ -0,0 +1,451 @@
+diff --git a/node_modules/expo-modules-core/android/build/generated/source/buildConfig/debug/expo/modules/BuildConfig.java b/node_modules/expo-modules-core/android/build/generated/source/buildConfig/debug/expo/modules/BuildConfig.java
+new file mode 100644
+index 0000000..3ded53c
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/generated/source/buildConfig/debug/expo/modules/BuildConfig.java
+@@ -0,0 +1,12 @@
++/**
++ * Automatically generated file. DO NOT MODIFY
++ */
++package expo.modules;
++
++public final class BuildConfig {
++ public static final boolean DEBUG = Boolean.parseBoolean("true");
++ public static final String LIBRARY_PACKAGE_NAME = "expo.modules";
++ public static final String BUILD_TYPE = "debug";
++ // Field from default config.
++ public static final boolean IS_NEW_ARCHITECTURE_ENABLED = false;
++}
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml b/node_modules/expo-modules-core/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml
+new file mode 100644
+index 0000000..2e9937d
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml
+@@ -0,0 +1,18 @@
++
++
++
++
++
++
++
++
++
++
++
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json b/node_modules/expo-modules-core/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json
+new file mode 100644
+index 0000000..abb1565
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json
+@@ -0,0 +1,18 @@
++{
++ "version": 3,
++ "artifactType": {
++ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
++ "kind": "Directory"
++ },
++ "applicationId": "expo.modules",
++ "variantName": "debug",
++ "elements": [
++ {
++ "type": "SINGLE",
++ "filters": [],
++ "attributes": [],
++ "outputFile": "AndroidManifest.xml"
++ }
++ ],
++ "elementType": "File"
++}
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties b/node_modules/expo-modules-core/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties
+new file mode 100644
+index 0000000..1211b1e
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties
+@@ -0,0 +1,6 @@
++aarFormatVersion=1.0
++aarMetadataVersion=1.0
++minCompileSdk=1
++minCompileSdkExtension=0
++minAndroidGradlePluginVersion=1.0.0
++coreLibraryDesugaringEnabled=false
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json b/node_modules/expo-modules-core/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json
+new file mode 100644
+index 0000000..9e26dfe
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json
+@@ -0,0 +1 @@
++{}
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar b/node_modules/expo-modules-core/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar
+new file mode 100644
+index 0000000..913cc58
+Binary files /dev/null and b/node_modules/expo-modules-core/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar differ
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt b/node_modules/expo-modules-core/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt
+new file mode 100644
+index 0000000..e69de29
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties b/node_modules/expo-modules-core/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties
+new file mode 100644
+index 0000000..441a118
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties
+@@ -0,0 +1 @@
++#Tue Sep 02 12:36:11 CEST 2025
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml b/node_modules/expo-modules-core/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml
+new file mode 100644
+index 0000000..aaed38d
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml
+@@ -0,0 +1,2 @@
++
++
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/incremental/mergeDebugShaders/merger.xml b/node_modules/expo-modules-core/android/build/intermediates/incremental/mergeDebugShaders/merger.xml
+new file mode 100644
+index 0000000..034b368
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/incremental/mergeDebugShaders/merger.xml
+@@ -0,0 +1,2 @@
++
++
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/incremental/packageDebugAssets/merger.xml b/node_modules/expo-modules-core/android/build/intermediates/incremental/packageDebugAssets/merger.xml
+new file mode 100644
+index 0000000..21e6ead
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/incremental/packageDebugAssets/merger.xml
+@@ -0,0 +1,2 @@
++
++
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt b/node_modules/expo-modules-core/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt
+new file mode 100644
+index 0000000..78ac5b8
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt
+@@ -0,0 +1,2 @@
++R_DEF: Internal format may change without notice
++local
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt b/node_modules/expo-modules-core/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt
+new file mode 100644
+index 0000000..846b8e6
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt
+@@ -0,0 +1,26 @@
++1
++2
++5
++6
++7
++8
++8-->/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:4:5-12:19
++9 /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:5:9-7:89
++10 android:name="org.unimodules.core.AppLoader#react-native-headless"
++10-->/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:6:13-79
++11 android:value="expo.modules.adapters.react.apploader.RNHeadlessAppLoader" />
++11-->/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:7:13-86
++12 /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:8:9-11:45
++13 android:name="com.facebook.soloader.enabled"
++13-->/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:9:13-57
++14 android:value="true"
++14-->/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:10:13-33
++15 tools:replace="android:value" />
++15-->/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:11:13-42
++16
++17
++18
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml b/node_modules/expo-modules-core/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml
+new file mode 100644
+index 0000000..2e9937d
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml
+@@ -0,0 +1,18 @@
++
++
++
++
++
++
++
++
++
++
++
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json b/node_modules/expo-modules-core/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json
+new file mode 100644
+index 0000000..0637a08
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json
+@@ -0,0 +1 @@
++[]
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt b/node_modules/expo-modules-core/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt
+new file mode 100644
+index 0000000..08f4ebe
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt
+@@ -0,0 +1 @@
++0 Warning/Error
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt b/node_modules/expo-modules-core/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt
+new file mode 100644
+index 0000000..eeeb776
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt
+@@ -0,0 +1 @@
++expo.modules
+diff --git a/node_modules/expo-modules-core/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt b/node_modules/expo-modules-core/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt
+new file mode 100644
+index 0000000..a64c2b8
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/kotlin/compileDebugKotlin/cacheable/dirty-sources.txt
+@@ -0,0 +1,170 @@
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/apifeatures/Features.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/AnyTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityaware/OnActivityAvailableListener.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/Either.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/net/URLTypConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ViewTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/DateTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/JSTypeConverterHelper.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/com/facebook/react/uimanager/ReactStylesDiffMapHelper.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/adapters/react/apploader/HeadlessAppLoaderNotifier.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/LoggerTimer.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/SetTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ExpoView.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ReactLifecycleDelegate.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ViewWrapperDelegateHolder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/DynamicExtenstions.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/defaultmodules/NativeModulesProxyModule.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/ReadableArgumentsTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/typedarray/TypedArrayIterator.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/interfaces/permissions/PermissionsResponse.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/uuidv5/Exceptions.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ViewManagerDefinition.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JavaScriptWeakObject.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/tracing/ExpoTrace.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/events/EventListener.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/SuspendFunctionComponent.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/ListTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/allocators/ObjectConstructorFactory.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/PersistentFileLogHandler.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ReactExtensions.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/objects/ObjectDefinitionBuilder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/FunctionBuilder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityaware/AppCompatActivityAware.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/ColorTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/folly/FollyDynamicExtensionConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/EitherTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/EnumTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/net/UriTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ConcatIterator.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JavaCallback.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/modules/ModuleDefinitionBuilder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/LogHandlers.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/TypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/PromiseImpl.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/SimpleViewManagerWrapper.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/Utils.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/classcomponent/ClassComponentBuilder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/ByteArrayTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JavaScriptObject.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/defaultmodules/CoreModule.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ExpoBridgeModule.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityresult/DataPersistor.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/viewevent/ViewEventDelegate.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultContract.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/exception/CommonExceptions.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ConcreteViewProp.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/events/OnActivityResultPayload.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/objects/ObjectDefinitionData.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/LogType.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/sharedobjects/SharedObjectRegistry.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityresult/ActivityResultsManager.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/Promise.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/CppType.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/utilities/EmulatorUtilities.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/JSTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ModuleHolder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/KotlinInteropModuleRegistry.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/TypeConverterProvider.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/AnyFunction.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/records/ValidationBinder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/BaseAsyncFunctionComponent.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ReadableTypeExtensions.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JavaScriptFunction.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/interfaces/filesystem/AppDirectoriesModuleInterface.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ModuleRegistry.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/devtools/OkHttpHeadersExtension.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ReadableArrayIterator.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultLauncher.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/classcomponent/ClassDefinitionData.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/records/Record.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ViewGroupDefinition.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/typedarray/ConcreteTypedArrays.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/typedarray/TypedArray.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/records/Field.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/events/KModuleEventEmitterWrapper.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/io/FileTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/AsyncFunctionWithPromiseComponent.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JNIFunctionBody.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/sharedobjects/SharedRef.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/records/Validators.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/SyncFunctionComponent.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/events/EventName.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/ModulePriorities.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/devtools/ExpoRequestCdpInterceptor.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/modules/DefinitionMarker.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JavaScriptValue.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/exception/ExceptionDecorator.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/LogHandler.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/io/PathTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ViewManagerType.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ViewDefinitionBuilder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/sharedobjects/SharedObject.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/KPromiseWrapper.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/allocators/ObjectConstructor.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/Logger.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/events/EventEmitter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/ExpectedType.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/AndroidExtensions.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/FilteredIterator.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/devtools/cdp/CdpNetworkTypes.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/adapters/react/FabricComponentsRegistry.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/GroupViewManagerWrapper.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultRegistry.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/CallbacksDefinition.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/AnyType.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/records/RecordTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/AnyViewProp.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/events/EventsDefinition.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ErrorView.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/allocators/UnsafeAllocator.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/adapters/react/apploader/RNHeadlessAppLoader.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultCaller.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/errors/ContextDestroyedException.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ArrayExtenstions.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/providers/CurrentActivityProvider.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/devtools/ExpoNetworkInspectOkHttpInterceptors.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/utilities/KotlinUtilities.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/CoreLogger.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ViewManagerWrapperDelegate.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/exception/CodedException.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/AsyncFunctionComponent.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/records/FieldValidator.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/PairTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/uuidv5/Uuidv5.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JavaScriptTypedArray.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/FilteredReadableMap.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityresult/AppContextActivityResultFallbackCallback.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/PersistentFileLogSerialDispatchQueue.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/Enumerable.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/AppContext.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/EnforceType.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/MapTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/PersistentFileLog.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JNIDeallocator.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/records/Required.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/ArrayTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/typedarray/GenericTypedArray.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/objects/PropertyComponent.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/defaultmodules/ErrorManagerModule.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JSIContext.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/modules/Module.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/TypedArrayTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ModulesProvider.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/adapters/react/permissions/PermissionsService.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/modules/ModuleDefinitionData.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/views/ViewGroupDefinitionBuilder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/logging/OSLogHandler.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/UnitTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/AsyncFunctionBuilder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/jni/JavaScriptModuleObject.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/activityaware/AppCompatActivityAwareHelper.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/objects/PropertyComponentBuilder.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/providers/AppContextProvider.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/types/JavaScriptFunctionTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/functions/AsyncFunction.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/sharedobjects/SharedObjectTypeConverter.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/ExpoModulesHelper.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/viewevent/ViewEvent.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/errors/ModuleDestroyedException.kt
++/Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/java/expo/modules/kotlin/sharedobjects/ClassRegistry.kt
+\ No newline at end of file
+diff --git a/node_modules/expo-modules-core/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin b/node_modules/expo-modules-core/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin
+new file mode 100644
+index 0000000..6d58234
+Binary files /dev/null and b/node_modules/expo-modules-core/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin differ
+diff --git a/node_modules/expo-modules-core/android/build/outputs/logs/manifest-merger-debug-report.txt b/node_modules/expo-modules-core/android/build/outputs/logs/manifest-merger-debug-report.txt
+new file mode 100644
+index 0000000..52087d2
+--- /dev/null
++++ b/node_modules/expo-modules-core/android/build/outputs/logs/manifest-merger-debug-report.txt
+@@ -0,0 +1,34 @@
++-- Merging decision tree log ---
++manifest
++ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:1:1-14:12
++INJECTED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:1:1-14:12
++ package
++ INJECTED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml
++ xmlns:tools
++ ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:2:11-57
++ xmlns:android
++ ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:1:11-69
++application
++ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:4:5-12:19
++meta-data#org.unimodules.core.AppLoader#react-native-headless
++ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:5:9-7:89
++ android:value
++ ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:7:13-86
++ android:name
++ ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:6:13-79
++meta-data#com.facebook.soloader.enabled
++ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:8:9-11:45
++ tools:replace
++ ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:11:13-42
++ android:value
++ ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:10:13-33
++ android:name
++ ADDED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml:9:13-57
++uses-sdk
++INJECTED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml reason: use-sdk injection requested
++INJECTED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml
++INJECTED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml
++ android:targetSdkVersion
++ INJECTED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml
++ android:minSdkVersion
++ INJECTED from /Users/am/Projects/mobile/node_modules/expo-modules-core/android/src/main/AndroidManifest.xml
+diff --git a/node_modules/expo-modules-core/android/src/main/java/expo/modules/adapters/react/permissions/PermissionsService.kt b/node_modules/expo-modules-core/android/src/main/java/expo/modules/adapters/react/permissions/PermissionsService.kt
+index ae0a811..180b46c 100644
+--- a/node_modules/expo-modules-core/android/src/main/java/expo/modules/adapters/react/permissions/PermissionsService.kt
++++ b/node_modules/expo-modules-core/android/src/main/java/expo/modules/adapters/react/permissions/PermissionsService.kt
+@@ -163,7 +163,7 @@ open class PermissionsService(val context: Context) : InternalModule, Permission
+ override fun isPermissionPresentInManifest(permission: String): Boolean {
+ try {
+ context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_PERMISSIONS)?.run {
+- return requestedPermissions.contains(permission)
++ return requestedPermissions?.contains(permission) ?: false
+ }
+ return false
+ } catch (e: PackageManager.NameNotFoundException) {
diff --git a/patches/patch-package+6.5.1.patch b/patches/patch-package+6.5.1.patch
new file mode 100644
index 00000000..69adb7ba
--- /dev/null
+++ b/patches/patch-package+6.5.1.patch
@@ -0,0 +1,28 @@
+diff --git a/node_modules/patch-package/dist/makePatch.js b/node_modules/patch-package/dist/makePatch.js
+index a76e39c..0104982 100644
+--- a/node_modules/patch-package/dist/makePatch.js
++++ b/node_modules/patch-package/dist/makePatch.js
+@@ -64,12 +64,12 @@ function makePatch({ packagePathSpecifier, appPath, packageManager, includePaths
+ fs_extra_2.copySync(rcPath, path_1.join(tmpRepo.name, rcFile), { dereference: true });
+ }
+ });
+- if (packageManager === "yarn") {
++ if (packageManager === "npm") {
+ console.info(chalk_1.default.grey("•"), `Installing ${packageDetails.name}@${packageVersion} with yarn`);
+ try {
+ // try first without ignoring scripts in case they are required
+ // this works in 99.99% of cases
+- spawnSafe_1.spawnSafeSync(`yarn`, ["install", "--ignore-engines"], {
++ spawnSafe_1.spawnSafeSync(`npm`, ["install", "--ignore-engines"], {
+ cwd: tmpRepoNpmRoot,
+ logStdErrOnError: false,
+ });
+@@ -77,7 +77,7 @@ function makePatch({ packagePathSpecifier, appPath, packageManager, includePaths
+ catch (e) {
+ // try again while ignoring scripts in case the script depends on
+ // an implicit context which we havn't reproduced
+- spawnSafe_1.spawnSafeSync(`yarn`, ["install", "--ignore-engines", "--ignore-scripts"], {
++ spawnSafe_1.spawnSafeSync(`npm`, ["install", "--ignore-engines", "--ignore-scripts"], {
+ cwd: tmpRepoNpmRoot,
+ });
+ }
diff --git a/patches/realm+12.14.2.patch b/patches/realm+12.14.2.patch
new file mode 100644
index 00000000..9b393c60
--- /dev/null
+++ b/patches/realm+12.14.2.patch
@@ -0,0 +1,12 @@
+diff --git a/node_modules/realm/binding/android/CMakeLists.txt b/node_modules/realm/binding/android/CMakeLists.txt
+index 87af51f..0c953be 100644
+--- a/node_modules/realm/binding/android/CMakeLists.txt
++++ b/node_modules/realm/binding/android/CMakeLists.txt
+@@ -28,6 +28,7 @@ set_target_properties(realm-js-android-binding PROPERTIES
+
+ set(CMAKE_INTERPROCEDURAL_OPTIMIZATION OFF)
+ set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -Oz")
++set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,max-page-size=16384")
+
+ target_link_options(realm-js-android-binding PUBLIC -fvisibility=hidden)
+
diff --git a/src/components/SeedDisplay/useSeedPhrase.ts b/src/components/SeedDisplay/useSeedPhrase.ts
index c5c92d4f..a4028613 100644
--- a/src/components/SeedDisplay/useSeedPhrase.ts
+++ b/src/components/SeedDisplay/useSeedPhrase.ts
@@ -11,7 +11,8 @@ const useSeed = () => {
const { getMnemonic } = useSecuredKeychain();
const fetchSeed = async () => {
- const res = await getMnemonic();
+ const response = await getMnemonic();
+ const res = typeof response === 'boolean' ? false : response.secret;
if (res) {
setSeed(res);
}
diff --git a/src/onChain/wallets/solana.ts b/src/onChain/wallets/solana.ts
index d4f887a7..05acc9ee 100644
--- a/src/onChain/wallets/solana.ts
+++ b/src/onChain/wallets/solana.ts
@@ -1,6 +1,6 @@
import * as splToken from '@solana/spl-token';
import * as web3 from '@solana/web3.js';
-import { ComputeBudgetProgram } from '@solana/web3.js';
+import { ComputeBudgetProgram, Connection, clusterApiUrl } from '@solana/web3.js';
import BigNumber from 'bignumber.js';
import bs58 from 'bs58';
import * as ed25519 from 'ed25519-hd-key';
@@ -57,6 +57,7 @@ type SolanaTransactionPlan = {
address: web3.PublicKey;
mint: web3.PublicKey;
owner: web3.PublicKey;
+ programId: web3.PublicKey;
}[];
instructions: web3.TransactionInstruction[];
@@ -99,8 +100,16 @@ export class SolanaHarmonyTransport extends HarmonyTransport {
return {
address: ata.address.toString(),
-
- instruction: serializeInstruction(splToken.createAssociatedTokenAccountInstruction(new web3.PublicKey(payer), ata.address, ata.owner, ata.mint)),
+ instruction: serializeInstruction(
+ splToken.createAssociatedTokenAccountIdempotentInstruction(
+ new web3.PublicKey(payer),
+ ata.address,
+ ata.owner,
+ ata.mint,
+ ata.programId,
+ splToken.ASSOCIATED_TOKEN_PROGRAM_ID,
+ ),
+ ),
};
}),
instructions,
@@ -215,8 +224,17 @@ export class SolanaNetwork implements Network {
const { colors } = useTheme();
const chartColors: ChartColorSet = useMemo(() => {
if (!hasData || isPending) {
- return { highLow: 'transparent', gradient: [colors.purple_40] };
+ return { highLow: 'transparent', gradient: [colors.purple_40, colors.purple_40] };
}
return valueChange >= 0 ? ASCENDING_COLOR_SET : DESCENDING_COLOR_SET;
diff --git a/src/screens/Send/SendScreen.tsx b/src/screens/Send/SendScreen.tsx
index 79efe686..11a860e6 100644
--- a/src/screens/Send/SendScreen.tsx
+++ b/src/screens/Send/SendScreen.tsx
@@ -12,6 +12,7 @@ import { FloatingBottomContainer } from '@/components/FloatingBottomContainer';
import { GradientScreenView } from '@/components/Gradients';
import { KeyboardAvoider } from '@/components/Keyboard';
import { NftBlock } from '@/components/NftBlock';
+import { showToast } from '@/components/Toast';
import { useGetWalletStorage } from '@/hooks/useGetWalletStorage';
import { PrepareError } from '@/onChain/wallets/bitcoin';
import { getImplForWallet } from '@/onChain/wallets/registry';
@@ -264,11 +265,12 @@ const Send = ({ navigation, route: { params } }: SendNavigationProps<'Send'>) =>
if (qrCode) {
try {
const value = decodeQrCodeAddress(qrCode);
- if (typeof value === 'string') {
- onChangeAddress(value);
- } else if (typeof value === 'object') {
+ if (value) {
onChangeAddress(value.address);
- if (value.options.amount) {
+ if (value.isEip681) {
+ showToast({ type: 'info', text: loc.send.eip681Warning });
+ }
+ if (value.options?.amount) {
amountInputRef.current?.setAssetAmount(`${value.options.amount}`);
}
}
diff --git a/src/screens/Send/utils/decodeQrCodeAddress.ts b/src/screens/Send/utils/decodeQrCodeAddress.ts
index 0446e03e..b0e5f973 100644
--- a/src/screens/Send/utils/decodeQrCodeAddress.ts
+++ b/src/screens/Send/utils/decodeQrCodeAddress.ts
@@ -1,15 +1,60 @@
import { decode } from 'bip21';
-type BIP21Data = ReturnType;
const PREFIX_REGEX = /^[^:]*:/;
const SUFFIX_REGEX = /[@?].*/;
-export const decodeQrCodeAddress = (data?: string): string | BIP21Data | undefined => {
- if (data) {
- try {
- return decode(data);
- } catch (e) {
- return data.replace(PREFIX_REGEX, '').replace(SUFFIX_REGEX, '');
+export interface DecodedQrCodeAddress {
+ address: string;
+ isEip681: boolean;
+ options?: {
+ amount?: number;
+ };
+}
+
+const EIP_681_REGEX = /^ethereum:0x[a-fA-F0-9]{40}(@\d+)?\/[a-zA-Z_][a-zA-Z0-9_]*\?/;
+
+const parseEip681Address = (data: string): string | undefined => {
+ try {
+ const url = new URL(data);
+
+ return url.searchParams.get('address') || undefined;
+ } catch (e) {
+ const addressMatch = data.match(/[?&]address=([^&]*)/);
+ return addressMatch ? decodeURIComponent(addressMatch[1]) : undefined;
+ }
+};
+
+const isEip681Format = (data: string): boolean => {
+ return EIP_681_REGEX.test(data);
+};
+
+export const decodeQrCodeAddress = (data?: string): DecodedQrCodeAddress | undefined => {
+ if (!data) {
+ return undefined;
+ }
+
+ if (isEip681Format(data)) {
+ const address = parseEip681Address(data);
+ if (address) {
+ return {
+ address,
+ isEip681: true,
+ };
}
}
+
+ try {
+ const bip21Data = decode(data);
+ return {
+ address: bip21Data.address,
+ isEip681: false,
+ options: bip21Data.options,
+ };
+ } catch (e) {
+ const cleanedAddress = data.replace(PREFIX_REGEX, '').replace(SUFFIX_REGEX, '');
+ return {
+ address: cleanedAddress,
+ isEip681: false,
+ };
+ }
};
diff --git a/src/screens/Settings/AdvancedSettingsScreen.tsx b/src/screens/Settings/AdvancedSettingsScreen.tsx
index 50f22299..76293d8e 100644
--- a/src/screens/Settings/AdvancedSettingsScreen.tsx
+++ b/src/screens/Settings/AdvancedSettingsScreen.tsx
@@ -1,23 +1,55 @@
+import { useRef } from 'react';
import { StyleSheet, View } from 'react-native';
import { GradientScreenView } from '@/components/Gradients';
import { Label } from '@/components/Label';
+import { hideToast, showToast } from '@/components/Toast';
import { useHeaderTitle } from '@/hooks/useHeaderTitle';
import { useSettingsMutations } from '@/realm/settings';
import { useClearAppCache } from '@/realm/settings/useClearAppCache';
import { useIsTestnetEnabled } from '@/realm/settings/useIsTestnetEnabled';
import { Routes } from '@/Routes';
+import { useIsAppLockUsed } from '@/screens/Settings/appLock/hooks';
import { SettingsItem, SettingsSwitch } from '@/screens/Settings/components';
import { SettingsBox } from '@/screens/Settings/components/SettingsBox';
import type { SettingsNavigationProps } from '@/screens/Settings/SettingsRouter';
+import { getAppLockSecret, saveAppLockProtectedValue } from '@/secureStore';
+import { KeychainKey, setInKeychain } from '@/secureStore/keychain';
+import { useSecuredKeychain } from '@/secureStore/SecuredKeychainProvider';
+import { arrayBufferToHexString, encryptValue } from '@/secureStore/utils';
+import { loadMnemonicSlow } from '@/utils/loadMnemonicSlow';
import { navigationStyle } from '@/utils/navigationStyle';
+import { handleError } from '/helpers/errorHandler';
import loc from '/loc';
+const UPDATE_STORAGE_TOAST_ID = 'updatingStorage';
+
+export const showProcessing = async () =>
+ showToast({
+ type: 'info',
+ text: loc.settings.updateStorageNotification,
+ id: UPDATE_STORAGE_TOAST_ID,
+ testID: UPDATE_STORAGE_TOAST_ID,
+ dismissMode: 'event',
+ iconLottieSource: require('@/assets/lottie/refreshSpinner.json'),
+ });
+
+export const showSuccess = async () =>
+ showToast({
+ type: 'success',
+ text: loc.settings.updateStorageNotificationSuccess,
+ duration: 3000,
+ });
+
export const AdvancedSettingsScreen = ({ navigation }: SettingsNavigationProps<'AdvancedSettings'>) => {
const isTestNetEnabled = useIsTestnetEnabled();
const { setIsTestnetEnabled } = useSettingsMutations();
const { clearAppCache } = useClearAppCache();
+ const { getMnemonic } = useSecuredKeychain();
+ const { isAppLockUsed } = useIsAppLockUsed();
+
+ const isUpdatingStorage = useRef(false);
useHeaderTitle(loc.settings.advanced);
@@ -29,6 +61,38 @@ export const AdvancedSettingsScreen = ({ navigation }: SettingsNavigationProps<'
navigation.navigate(Routes.DeleteAllDataWarningScreen);
};
+ const updateStorage = async () => {
+ if (isUpdatingStorage.current) {
+ return;
+ }
+ await showProcessing();
+ isUpdatingStorage.current = true;
+ const response = await getMnemonic(undefined, 'updateStorage');
+ if (typeof response === 'boolean') {
+ handleError('Can not read mnemonic', 'ERROR_CONTEXT_PLACEHOLDER', { text: loc.settings.updateStorageNotificationError });
+ isUpdatingStorage.current = false;
+ return;
+ }
+ const { secret: mnemonic, password } = response;
+
+ if (mnemonic) {
+ const seedBuffer = await loadMnemonicSlow(mnemonic);
+ let seedBufferString = arrayBufferToHexString(seedBuffer);
+ if (password) {
+ seedBufferString = await encryptValue(seedBufferString, password, 'hex');
+ }
+ if (isAppLockUsed) {
+ const appLockSecret = await getAppLockSecret();
+ await saveAppLockProtectedValue(KeychainKey.seedBufferKey, seedBufferString, appLockSecret, 'hex');
+ } else {
+ await setInKeychain(KeychainKey.seedBufferKey, seedBufferString, false);
+ }
+ }
+ hideToast({ id: UPDATE_STORAGE_TOAST_ID });
+ await showSuccess();
+ isUpdatingStorage.current = false;
+ };
+
return (
@@ -39,6 +103,7 @@ export const AdvancedSettingsScreen = ({ navigation }: SettingsNavigationProps<'
+
diff --git a/src/screens/Settings/passwordProtection/PasswordProtectionSheet.tsx b/src/screens/Settings/passwordProtection/PasswordProtectionSheet.tsx
index 132a5a30..6511f137 100644
--- a/src/screens/Settings/passwordProtection/PasswordProtectionSheet.tsx
+++ b/src/screens/Settings/passwordProtection/PasswordProtectionSheet.tsx
@@ -19,7 +19,7 @@ type Props = {
lockout: ReturnType;
};
-export type Rationale = 'createWallet' | 'sign' | 'viewPhrase' | 'getXPub';
+export type Rationale = 'createWallet' | 'sign' | 'viewPhrase' | 'getXPub' | 'updateStorage';
export const PasswordProtectionSheet = forwardRef(({ checkPassword, onDismiss, lockout }, ref) => {
const modalRef = useRef(null);
@@ -36,6 +36,8 @@ export const PasswordProtectionSheet = forwardRef {
useEffect(() => {
const getSecret = async () => {
- const mnemonic = await getMnemonic();
+ const response = await getMnemonic();
+ const mnemonic = typeof response === 'boolean' ? false : response.secret;
+
if (mnemonic) {
setSecret(mnemonic);
}
diff --git a/src/screens/Transactions/components/TokenMarketData/HistoricalAssetPriceChart.tsx b/src/screens/Transactions/components/TokenMarketData/HistoricalAssetPriceChart.tsx
index f8c2e13a..8d737599 100644
--- a/src/screens/Transactions/components/TokenMarketData/HistoricalAssetPriceChart.tsx
+++ b/src/screens/Transactions/components/TokenMarketData/HistoricalAssetPriceChart.tsx
@@ -96,7 +96,7 @@ export const HistoricalAssetPriceChart = ({ assetId, tokenId, size, price }: Pro
const { colors } = useTheme();
- const chartColor = !dataInitialised ? [colors.purple_40] : priceChange !== undefined && priceChange >= 0 ? GREEN_GRADIENT : RED_GRADIENT;
+ const chartColor = !dataInitialised ? [colors.purple_40, colors.purple_40] : priceChange !== undefined && priceChange >= 0 ? GREEN_GRADIENT : RED_GRADIENT;
const onChangePeriod = (value: PriceHistoryPeriod) => {
setPeriod(value);
diff --git a/src/screens/UniversalSend/UniversalSendScreen.tsx b/src/screens/UniversalSend/UniversalSendScreen.tsx
index e970ba07..04bbbf08 100644
--- a/src/screens/UniversalSend/UniversalSendScreen.tsx
+++ b/src/screens/UniversalSend/UniversalSendScreen.tsx
@@ -1,6 +1,7 @@
import { useCallback, useEffect, useMemo, useState } from 'react';
import { BottomSheet } from '@/components/BottomSheet';
+import { showToast } from '@/components/Toast';
import { useBottomSheetScreenProps } from '@/hooks/useBottomSheetScreenProps';
import { useGetWalletStorage } from '@/hooks/useGetWalletStorage';
import type { Network } from '@/onChain/wallets/base';
@@ -20,6 +21,8 @@ import { navigationStyle } from '@/utils/navigationStyle';
import { SendAsset, SendTo } from './components';
+import loc from '/loc';
+
type ScreenMode = 'sendTo' | 'sendAsset';
export type UniversalSendRouteParams = {
@@ -70,10 +73,11 @@ const UniversalSend = ({ navigation, route: { params } }: NavigationProps<'Unive
if (params?.qrCode) {
try {
const value = decodeQrCodeAddress(params.qrCode);
- if (typeof value === 'string') {
- setAddressFromQrcode(value);
- } else if (typeof value === 'object') {
+ if (value) {
setAddressFromQrcode(value.address);
+ if (value.isEip681) {
+ showToast({ type: 'info', text: loc.send.eip681Warning });
+ }
}
} catch {
setAddressFromQrcode(params.qrCode);
diff --git a/src/screens/WalletCloudBackup/WalletCloudBackupScreen.tsx b/src/screens/WalletCloudBackup/WalletCloudBackupScreen.tsx
index 784f0013..e5da18e7 100644
--- a/src/screens/WalletCloudBackup/WalletCloudBackupScreen.tsx
+++ b/src/screens/WalletCloudBackup/WalletCloudBackupScreen.tsx
@@ -62,7 +62,7 @@ export const WalletCloudBackupScreen = ({ navigation, route }: NavigationProps<'
const writePasskeyData = async ({ credentialID, backupDate, backupName }: PendingBackup) => {
try {
- const mnemonic = await getMnemonic(true);
+ const { secret: mnemonic } = await getMnemonic(true);
await CloudBackupManager.writeData(credentialID, mnemonic);
} catch (e) {
if (e instanceof Error) {
diff --git a/src/secureStore/SecuredKeychainProvider.tsx b/src/secureStore/SecuredKeychainProvider.tsx
index a6d9a2b7..546f81bd 100644
--- a/src/secureStore/SecuredKeychainProvider.tsx
+++ b/src/secureStore/SecuredKeychainProvider.tsx
@@ -2,18 +2,25 @@ import type { PropsWithChildren } from 'react';
import { createContext, useCallback, useContext, useMemo, useRef } from 'react';
-import { Keyboard } from 'react-native';
+import { Keyboard, Platform } from 'react-native';
import { useLockout } from '@/screens/Settings/passwordProtection/hooks/useLockout';
import { PasswordProtectionSheet } from '@/screens/Settings/passwordProtection/PasswordProtectionSheet';
import type { PasswordProtectionModalRef, Rationale } from '@/screens/Settings/passwordProtection/PasswordProtectionSheet';
+import { loadMnemonicSlow } from '@/utils/loadMnemonicSlow';
+
import { getAppLockSecret, retrieveMnemonic, retrieveSeed } from './domains';
import { KeychainKey, getFromKeychain } from './keychain';
import { hexStringToBuffer } from './utils';
+interface SecretWithPassword {
+ secret: string;
+ password: string | undefined;
+}
+
export interface SecuredKeychainContext {
- getMnemonic: (throwOnError?: T) => Promise;
+ getMnemonic: (throwOnError?: T, rationale?: Rationale) => Promise;
getSeed: (rationale: Rationale, throwOnError?: T) => Promise;
}
const SecuredKeychainContext = createContext({
@@ -23,7 +30,7 @@ const SecuredKeychainContext = createContext({
export const SecuredKeychainProvider = ({ children }: PropsWithChildren) => {
const sheetRef = useRef(null);
- const resolveResult = useRef<(value: string | PromiseLike) => void>();
+ const resolveResult = useRef<(value: SecretWithPassword | PromiseLike) => void>();
const retrieve = useRef();
const appLockSecret = useRef();
@@ -35,7 +42,7 @@ export const SecuredKeychainProvider = ({ children }: PropsWithChildren) => {
appLockSecret.current = undefined;
};
- const getSecuredValue = useCallback(async (rationale: Rationale): Promise => {
+ const getSecuredValue = useCallback(async (rationale: Rationale): Promise => {
const retrieveSecret = retrieve.current;
console.log('[getSecuredValue] called, rationale: ', rationale);
@@ -55,7 +62,7 @@ export const SecuredKeychainProvider = ({ children }: PropsWithChildren) => {
if (!isPasswordProtected) {
try {
const secret = await retrieveSecret(appLockSecret.current || undefined);
- return secret;
+ return { secret, password: undefined };
} finally {
reset();
}
@@ -74,7 +81,10 @@ export const SecuredKeychainProvider = ({ children }: PropsWithChildren) => {
const value = await retrieve.current(appLockSecret.current || undefined, password);
Keyboard.dismiss();
lockout.onSuccessfulAttempt();
- resolveResult.current?.(value);
+ resolveResult.current?.({
+ secret: value,
+ password,
+ });
sheetRef.current?.dismiss();
reset();
} catch {
@@ -92,16 +102,16 @@ export const SecuredKeychainProvider = ({ children }: PropsWithChildren) => {
};
const getMnemonic = useCallback(
- async (throwOnError?: T) => {
+ async (throwOnError?: T, rationale?: Rationale) => {
try {
console.log('[getMnemonic] called');
setRetrieveFunction(retrieveMnemonic);
- return getSecuredValue('viewPhrase');
+ return getSecuredValue(rationale ?? 'viewPhrase');
} catch (e) {
if (throwOnError) {
throw e;
} else {
- return false as T extends true ? string : false;
+ return false as T extends true ? SecretWithPassword : false;
}
}
},
@@ -112,8 +122,15 @@ export const SecuredKeychainProvider = ({ children }: PropsWithChildren) => {
async (rationale: Rationale, throwOnError?: T) => {
try {
console.log('[getSeed] called');
+ if (Platform.OS === 'android' && Platform.Version === 36) {
+ setRetrieveFunction(retrieveMnemonic);
+ const { secret } = await getSecuredValue(rationale);
+ const seedBuffer = await loadMnemonicSlow(secret);
+ return seedBuffer;
+ }
setRetrieveFunction(retrieveSeed);
- return hexStringToBuffer(await getSecuredValue(rationale));
+ const { secret } = await getSecuredValue(rationale);
+ return hexStringToBuffer(secret);
} catch (e) {
if (throwOnError) {
throw e;
diff --git a/yarn.lock b/yarn.lock
index a262e993..f9699b87 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8036,15 +8036,15 @@ __metadata:
languageName: node
linkType: hard
-"@shopify/react-native-skia@npm:1.5.3":
- version: 1.5.3
- resolution: "@shopify/react-native-skia@npm:1.5.3"
+"@shopify/react-native-skia@npm:1.12.4":
+ version: 1.12.4
+ resolution: "@shopify/react-native-skia@npm:1.12.4"
dependencies:
- canvaskit-wasm: 0.39.1
+ canvaskit-wasm: 0.40.0
react-reconciler: 0.27.0
peerDependencies:
- react: ">=18.0"
- react-native: ">=0.64"
+ react: ">=18.0 <19.0.0"
+ react-native: ">=0.64 <0.78.0"
react-native-reanimated: ">=2.0.0"
peerDependenciesMeta:
react-native:
@@ -8052,8 +8052,8 @@ __metadata:
react-native-reanimated:
optional: true
bin:
- setup-skia-web: ./scripts/setup-canvaskit.js
- checksum: 054ef119a6a1ba0340a8d72d29e54a4e041e902a3c7ee708f886a8f73df77e05952cb80419bb393acdeffbb7b1cd83a3f34d3a5ab67bbadf162931d3836869d2
+ setup-skia-web: scripts/setup-canvaskit.js
+ checksum: 479c8b2b5f83c497cc54a103f7365b505306e7a35f6eada93250a3ef2ae62533db13d1f96acacde3094980d34bf97cca3d34166a2308bba7e0565e8d40b43cf3
languageName: node
linkType: hard
@@ -12785,12 +12785,12 @@ __metadata:
languageName: node
linkType: hard
-"canvaskit-wasm@npm:0.39.1":
- version: 0.39.1
- resolution: "canvaskit-wasm@npm:0.39.1"
+"canvaskit-wasm@npm:0.40.0":
+ version: 0.40.0
+ resolution: "canvaskit-wasm@npm:0.40.0"
dependencies:
- "@webgpu/types": "npm:0.1.21"
- checksum: 0ae60ae5c430aaa88152f3a20f40fc9a6debb15714a2ce1bdebef93005ec6d5e72e0316b91ab637f50aab220dd8694101abac497209bcf16788d00db78f5a898
+ "@webgpu/types": 0.1.21
+ checksum: dde817c0ef979a67afad4ac3adf31c03133af2592efec17f715a98508fdf801104fbf05af29723fb39b4d8b2798ce5306bb3cb5c062209d9d90a750430f3361d
languageName: node
linkType: hard
@@ -24675,9 +24675,9 @@ __metadata:
languageName: node
linkType: hard
-"realm@npm:12.13.2":
- version: 12.13.2
- resolution: "realm@npm:12.13.2"
+"realm@npm:12.14.2":
+ version: 12.14.2
+ resolution: "realm@npm:12.14.2"
dependencies:
"@realm/fetch": ^0.1.1
bson: ^4.7.2
@@ -24691,7 +24691,7 @@ __metadata:
peerDependenciesMeta:
react-native:
optional: true
- checksum: c9a7b8c1d2b19c6ab93089a2da188f30b0a64dffec9ee992964cbe482661e06de28cae0ea7a0cf1a9d140ef87e7ae1a4024d3ea40626bfc928a7e1675c9d2f5f
+ checksum: 80f582862811d75452b2e2e624ed29e7aa5388e60f48eff4eeacd50a1bd6fd3ac1cc7d6979212ba73a08ff1f765f900f0c7b594c2c296a9f4eaf9b62276b5b48
languageName: node
linkType: hard
@@ -26703,7 +26703,7 @@ __metadata:
"@realm/react": 0.11.0
"@reown/walletkit": 1.0.0
"@shopify/flash-list": 1.7.1
- "@shopify/react-native-skia": 1.5.3
+ "@shopify/react-native-skia": 1.12.4
"@solana/spl-token": 0.3.8
"@solana/web3.js": 1.91.7
"@storybook/addon-ondevice-actions": 7.6.20
@@ -26802,7 +26802,7 @@ __metadata:
react-native-tcp-socket: 6.0.6
react-native-url-polyfill: 1.3.0
react-test-renderer: 18.3.1
- realm: 12.13.2
+ realm: 12.14.2
rn-nodeify: 10.3.0
serialize-error: 11.0.1
storybook: 7.6.20