diff --git a/.github/workflows/package-publish.yml b/.github/workflows/package-publish.yml index e263ef7cb..b222a7db2 100644 --- a/.github/workflows/package-publish.yml +++ b/.github/workflows/package-publish.yml @@ -163,7 +163,7 @@ jobs: working-directory: app-monorepo run: | node ../app-modules/scripts/sync-app-monorepo.mjs . "$RELEASE_VERSION" - if git diff --quiet -- apps/mobile/package.json packages/components/package.json package.json; then + if git diff --quiet -- apps/mobile/package.json packages/components/package.json packages/kit/package.json package.json; then echo 'changed=false' >> "$GITHUB_OUTPUT" else echo 'changed=true' >> "$GITHUB_OUTPUT" @@ -198,7 +198,7 @@ jobs: branch="codex/app-modules-v${version}" git config user.name 'onekey-release[bot]' git config user.email 'onekey-release[bot]@users.noreply.github.com' - git add -u apps/mobile/package.json packages/components/package.json package.json yarn.lock + git add -u apps/mobile/package.json packages/components/package.json packages/kit/package.json package.json yarn.lock git diff --cached --check git commit -m "chore: update app-modules to ${version}" gh auth setup-git diff --git a/example/react-native/ios/Podfile.lock b/example/react-native/ios/Podfile.lock index 8867cbabe..b1bc78cfd 100644 --- a/example/react-native/ios/Podfile.lock +++ b/example/react-native/ios/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - AesCrypto (3.0.156): + - AesCrypto (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -21,7 +21,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - AsyncStorage (3.0.156): + - AsyncStorage (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -43,7 +43,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - AutoSizeInput (3.0.156): + - AutoSizeInput (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -67,7 +67,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - BackgroundThread (3.0.156): + - BackgroundThread (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -90,7 +90,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ChartWebview (3.0.156): + - ChartWebview (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -115,7 +115,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - CloudFs (3.0.156): + - CloudFs (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -137,7 +137,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - CloudKitModule (3.0.156): + - CloudKitModule (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -165,7 +165,7 @@ PODS: - CocoaLumberjack/Core (3.9.1) - CocoaLumberjack/Swift (3.9.1): - CocoaLumberjack/Core - - DnsLookup (3.0.156): + - DnsLookup (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -194,7 +194,7 @@ PODS: - hermes-engine (250829098.0.16): - hermes-engine/Pre-built (= 250829098.0.16) - hermes-engine/Pre-built (250829098.0.16) - - KeychainModule (3.0.156): + - KeychainModule (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -234,7 +234,7 @@ PODS: - MMKV (2.4.0): - MMKVCore (~> 2.4.0) - MMKVCore (2.4.0) - - NativeSheet (3.0.156): + - NativeSheet (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -256,7 +256,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - NativeSheet/Tests (3.0.156): + - NativeSheet/Tests (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -278,7 +278,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - NetworkInfo (3.0.156): + - NetworkInfo (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -348,7 +348,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - OneKeyImage (3.0.156): + - OneKeyImage (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -374,9 +374,9 @@ PODS: - SDWebImage (~> 5.21.7) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - Skeleton (= 3.0.156) + - Skeleton (= 3.0.161) - Yoga - - OneKeyImage/Tests (3.0.156): + - OneKeyImage/Tests (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -402,13 +402,13 @@ PODS: - SDWebImage (~> 5.21.7) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - Skeleton (= 3.0.156) + - Skeleton (= 3.0.161) - Yoga - - OneKeyTextInput (3.0.156): + - OneKeyTextInput (3.0.161): - React-Core - - OneKeyTextInput/Tests (3.0.156): + - OneKeyTextInput/Tests (3.0.161): - React-Core - - Pbkdf2 (3.0.156): + - Pbkdf2 (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -430,7 +430,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - PerpDepthBar (3.0.156): + - PerpDepthBar (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -454,7 +454,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - Ping (3.0.156): + - Ping (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1899,10 +1899,10 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-native-list (3.0.156): + - react-native-native-list (3.0.161): - hermes-engine - NitroModules - - OneKeyImage (= 3.0.156) + - OneKeyImage (= 3.0.161) - RCTRequired - RCTTypeSafety - React-callinvoker @@ -1924,10 +1924,10 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-native-list/Tests (3.0.156): + - react-native-native-list/Tests (3.0.161): - hermes-engine - NitroModules - - OneKeyImage (= 3.0.156) + - OneKeyImage (= 3.0.161) - RCTRequired - RCTTypeSafety - React-callinvoker @@ -1949,7 +1949,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-pager-view (3.0.156): + - react-native-pager-view (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -1971,7 +1971,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-pager-view/Tests (3.0.156): + - react-native-pager-view/Tests (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -2062,7 +2062,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-tab-view (3.0.156): + - react-native-tab-view (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -2074,7 +2074,7 @@ PODS: - React-graphics - React-ImageManager - React-jsi - - react-native-tab-view/common (= 3.0.156) + - react-native-tab-view/common (= 3.0.161) - React-NativeModulesApple - React-RCTFabric - React-renderercss @@ -2085,7 +2085,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-tab-view/common (3.0.156): + - react-native-tab-view/common (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -2503,7 +2503,7 @@ PODS: - React-perflogger (= 0.86.2) - React-utils (= 0.86.2) - ReactNativeDependencies - - ReactNativeAppUpdate (3.0.156): + - ReactNativeAppUpdate (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2528,7 +2528,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeBundleCrypto (3.0.156): + - ReactNativeBundleCrypto (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2553,7 +2553,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeBundleCrypto/Tests (3.0.156): + - ReactNativeBundleCrypto/Tests (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2578,7 +2578,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeBundleUpdate (3.0.156): + - ReactNativeBundleUpdate (3.0.161): - hermes-engine - MMKV (= 2.4.0) - NitroModules @@ -2607,7 +2607,7 @@ PODS: - ReactNativeRangeDownloader - SSZipArchive (>= 2.5.4) - Yoga - - ReactNativeCheckBiometricAuthChanged (3.0.156): + - ReactNativeCheckBiometricAuthChanged (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2633,7 +2633,7 @@ PODS: - ReactNativeNativeLogger - Yoga - ReactNativeDependencies (0.86.2) - - ReactNativeDeviceUtils (3.0.156): + - ReactNativeDeviceUtils (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2658,7 +2658,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeGetRandomValues (3.0.156): + - ReactNativeGetRandomValues (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2683,7 +2683,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeImageCropPicker (3.0.156): + - ReactNativeImageCropPicker (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2708,7 +2708,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeLiteCard (3.0.156): + - ReactNativeLiteCard (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -2731,7 +2731,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeNativeLogger (3.0.156): + - ReactNativeNativeLogger (3.0.161): - CocoaLumberjack/Swift (~> 3.8) - hermes-engine - NitroModules @@ -2756,7 +2756,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ReactNativePerfMemory (3.0.156): + - ReactNativePerfMemory (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2781,7 +2781,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativePerfStats (3.0.156): + - ReactNativePerfStats (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2806,7 +2806,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeRangeDownloader (3.0.156): + - ReactNativeRangeDownloader (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2832,7 +2832,7 @@ PODS: - ReactNativeNativeLogger - SSZipArchive (= 2.5.5) - Yoga - - ReactNativeSplashScreen (3.0.156): + - ReactNativeSplashScreen (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2857,7 +2857,7 @@ PODS: - ReactNativeDependencies - ReactNativeNativeLogger - Yoga - - ReactNativeZipArchive (3.0.156): + - ReactNativeZipArchive (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2928,7 +2928,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ScrollGuard (3.0.156): + - ScrollGuard (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2960,7 +2960,7 @@ PODS: - SDWebImageWebPCoder (0.14.6): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.17) - - SegmentSlider (3.0.156): + - SegmentSlider (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -2984,7 +2984,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - Skeleton (3.0.156): + - Skeleton (3.0.161): - hermes-engine - NitroModules - RCTRequired @@ -3008,7 +3008,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - SniConnect (3.0.156): + - SniConnect (3.0.161): - EMASCurl (= 1.5.5) - hermes-engine - RCTRequired @@ -3032,7 +3032,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - SplitBundleLoader (3.0.156): + - SplitBundleLoader (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -3056,7 +3056,7 @@ PODS: - ReactNativeNativeLogger - Yoga - SSZipArchive (2.5.5) - - TcpSocket (3.0.156): + - TcpSocket (3.0.161): - hermes-engine - RCTRequired - RCTTypeSafety @@ -3464,31 +3464,31 @@ EXTERNAL SOURCES: :path: "../../../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - AesCrypto: b218a7ed52263e5eb3ac292938e1b78337a40213 - AsyncStorage: 15c9e8d2981048843744ed853dfed15c52599f5b - AutoSizeInput: 1acc4f267b9f7342443b55188a8c9a1c8ab33373 - BackgroundThread: 12296fefa3fbcd7bfd9e477340543c6ae7241fa3 - ChartWebview: d5fa9b4edf9c932995302bc923a79e3432c6f988 - CloudFs: 3098537768abe6f0cd37cec296147ae305dea1ce - CloudKitModule: 8d429f27eb714bdc40679c321d8d9c96c6ce7d8f + AesCrypto: 58f4e9be8ebd78b597234e6f9ab1b6788752636f + AsyncStorage: 75f61034ab42b75c05080296bd1f2c36953117d8 + AutoSizeInput: 61c31a946c2624ecf9c71b509b5d6716e612a223 + BackgroundThread: 30fd4341cfc3712a21b1ac4bedd3ea80081d8758 + ChartWebview: d1b1d99e90590754841ae92faae03e07ca303693 + CloudFs: ba0d7b732ec5d8ab174292687316751cb2641413 + CloudKitModule: 93f6da59dc6076c3ab88e82cf3a99943df7c6451 CocoaLumberjack: e4ba3b414dfca8c1916c6303d37f63b3a95134c6 - DnsLookup: d2b99c2e1e62e445a6a985ee0a2952f8bd2c79ba + DnsLookup: 4c02633830852ca78b04cc82d0c9bfa3529a899f EMASCurl: d75387e1ce9dec1a75cd25cb33c7a7e7bf21997f FBLazyVector: 3c3be9a019176b5699455f7f66c5444b78a411c6 - hermes-engine: eb14761560c3097b15973a402c116da6187ab9af - KeychainModule: 63cfc0ebbe8fc30a2812f5b9bf2df644fa55e411 + hermes-engine: a6b74f49abc71a760116d4839a42cf82fe13292d + KeychainModule: a04f5c9c5ef2299f0710560d9a835bf2a44dfbc1 libwebp: af5937a13536ef73f3784d69cc342b98961acf33 MMKV: 86859fdfa2b0b21db1fd6e48788474a6416a2c77 MMKVCore: 3d16ce9f7d411e135020915fde98a056859a1efa - NativeSheet: 80cf8a2a7a1cd5af66146246c6d675636c169f93 - NetworkInfo: 08833b9ee1ad3aad57f650bf2c03462260f15854 + NativeSheet: 3b4b15ac6b0115f247185b7291ceecb6ee5262c1 + NetworkInfo: 6e04b09ea506c97b7a00c64d0ad604619bd22d4d NitroMmkv: 85a251e15c39d7c95fe58cf40786fa126b8d143c NitroModules: cda827b31eb05c1bfcc0e2bbd9b647a69c6c314f - OneKeyImage: ba73c4c40feb208a6354b7475fdc9f80f7c6391c - OneKeyTextInput: 2c9a210190cf78c409e06ec204ce7db02885d0f5 - Pbkdf2: 752f795b47ca96e89d263f05d3e0917393b4195d - PerpDepthBar: 15e24c04a0f0ff817855b6cccf5d2ffec5a38277 - Ping: bb21d3858f71884460a7716306888687ed5398df + OneKeyImage: cbc5c835475d3fcd541590f4371d291d2f4f5e4f + OneKeyTextInput: 5b1d9a36f430fd28d7bd6e41b9a86f752b26c2b6 + Pbkdf2: 997f984d7718ecad87e8a6dab0a232aa848a9538 + PerpDepthBar: 22b20244ee6a0d82e3cbc3e5fc99171c007f0aa5 + Ping: b3a6c2900adb976ff3aaad83c18508f1afb67fb6 RCTDeprecation: bccb6545c26db881ecddfd83a3f9ea82aba1605f RCTRequired: b2f74764d596fc0051f00fee94b49bf41a6f7f5a RCTSwiftUI: c6d6a31b849b9dfa64c33b55dc91ac15dd55774c @@ -3526,10 +3526,10 @@ SPEC CHECKSUMS: React-Mapbuffer: 44dd007f917e2396afa0e70bbd70273237d93fde React-microtasksnativemodule: f413ee411341fb3c34d20e85e9f6f524921fab15 React-mutationobservernativemodule: 58f6d2adf7d98e72b241608dfa2ddce414d2a4e7 - react-native-native-list: c586598e9a4902586b091b060d8b594013dc442a - react-native-pager-view: d0165b7fba601f2ce11f4798622122002562c82c + react-native-native-list: 23c59946fe84e98c58bdfb811f9bd60c33062bf8 + react-native-pager-view: 5189c67c97cddb59069706cec4f41f8c956733a9 react-native-safe-area-context: 91a90d98c310adcc90a511e5aeb6046d7c19d885 - react-native-tab-view: b62691e2b0492c55dc436cf2f971c27f4a0165cc + react-native-tab-view: a7fd230fe3f78dac0518877c85b78e54f38e6926 React-NativeModulesApple: 167e532fb9bae30f3c66636b8ee0092bab263667 React-networking: 89f6b69755a3176f30e56ba1ba8e214b1518ecfb React-oscompat: db6675ddaef3bddd1b41533627f3d26ec710c05f @@ -3564,32 +3564,32 @@ SPEC CHECKSUMS: ReactAppDependencyProvider: 0e13d430eadac8a2ef18515a860d5c59df05b475 ReactCodegen: 01cbf7a08c30e8b71ad71489bb56b5bed195fa5e ReactCommon: 9002f006f571256348994183f7d4387aa7cf84e8 - ReactNativeAppUpdate: 4880dff75e3bf33305882760cccaec0bccff2d21 - ReactNativeBundleCrypto: b156193d3236705100440499df94fbcdf1740e6e - ReactNativeBundleUpdate: f07c516f08f30dfecc7c36c63495ca984642442c - ReactNativeCheckBiometricAuthChanged: 6b9c67db94c2a3b9f8454710d7a1eaf4e3b3e2a0 + ReactNativeAppUpdate: 61d1b2a5a5df3f73d4c60c7a951ee8b79bec3be4 + ReactNativeBundleCrypto: 0909eed2a3306aec2734ccdc3c7ef23c00d4c5bb + ReactNativeBundleUpdate: 02576cb70d137af8b5919e1b227354a5af8582c6 + ReactNativeCheckBiometricAuthChanged: 854bc1f5c1af99da22529847acfc02b193b13d19 ReactNativeDependencies: 2bd6854ade79bf1b60586d1ab7813a389df1b6bf - ReactNativeDeviceUtils: 5b6d250ff5b8c8ab60412d65c9f264e23966a6be - ReactNativeGetRandomValues: a742b388d17ed96ddafbdaa7a373fc4fa546b1c9 - ReactNativeImageCropPicker: 7b5924895c249de7f4fcf5f2a1b9d20f8b2268b4 - ReactNativeLiteCard: b79da2fd6d8b9b4b937bbfff3639fb84527fa59c - ReactNativeNativeLogger: a65544512307eaa7d837231f1e8e5dd81f6f3924 - ReactNativePerfMemory: b524752f61b1ffd81f6205f608d82862619e257f - ReactNativePerfStats: f9c8c23d82c4ce4141647327d6e6e3c1b4e6a75e - ReactNativeRangeDownloader: 82f0be0eb546c9310fd34e7aabdd4baf0932f2f5 - ReactNativeSplashScreen: 5fe6902a2e6e6dc6d909ee12fcdb89a2311297d7 - ReactNativeZipArchive: 2f6962133b7662e7254c55bddd79eb96310ee574 + ReactNativeDeviceUtils: 5176edf51eeb8cc3bdf30db7885e6a1e1a47bc4c + ReactNativeGetRandomValues: 28dad5997491317130596b7f9aa589edfebbb5c2 + ReactNativeImageCropPicker: fde4a3437f72f61d6093a064fa95c71fe8af0b8d + ReactNativeLiteCard: 3074d62da576fd971759efe414c27a0d041f16ca + ReactNativeNativeLogger: 7f07a04ceaafc5d84fcc0764c9af2a9dfd2e9d9b + ReactNativePerfMemory: b2c08bee59077cb0c83c2308a3f860485568559a + ReactNativePerfStats: b4bfdb46802f2c6c37c6af20b8fe254e4bfc7ced + ReactNativeRangeDownloader: 6cac19309048246dadb9d3b6a12d5096b9b4e07e + ReactNativeSplashScreen: 943d5ea2279ecc91a2b3002142b10178ffe6e375 + ReactNativeZipArchive: b3f590c946a9e9c82090c78de4609216124479cf RNScreens: 01b065ded2dfe7987bcce770ff3a196be417ff41 - ScrollGuard: 1da2fe550eae86b3dc4393ca9836ff55793329d7 + ScrollGuard: fb52fd30f7a742fc7b4297bcdbf41d8b6f12a3e5 SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 - SegmentSlider: 993d0b85c00e9796e2ed2239fe9439817dcaa6cc - Skeleton: 176bd1b01d4b91bebca3d314d7eeb8f70311da69 - SniConnect: 35e5df5eceecd12ed462ef2421733ca27a6484ef - SplitBundleLoader: ba12571a4af23184777fe5a85983ff27e9c4c55c + SegmentSlider: b3299ca51d2cde79f55d3f286ffe232ec2cfb4ae + Skeleton: 3ca1f490aefb43f57340a75427bf9e71b40eddda + SniConnect: 9c694c28d20422c10d3a284aa63228c6f7e45532 + SplitBundleLoader: 410d3a14d7d01c3530dd7c41f5e525ab6bec11f2 SSZipArchive: c69881e8ac5521f0e622291387add5f60f30f3c4 - TcpSocket: 2725be5301911fb4a3bcc4f85915dcacfd0ccfb1 + TcpSocket: 0cd7ab7722a2ca1842765812a354489dd90f1ae5 Yoga: 9891cfb1c680f64de9c41b09e7453dea33454d2b PODFILE CHECKSUM: d163efd24ff4c7dc7da7c6c0f1023634b164196e diff --git a/native-modules/native-logger/package.json b/native-modules/native-logger/package.json index 4168d7800..7058b5731 100644 --- a/native-modules/native-logger/package.json +++ b/native-modules/native-logger/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-native-logger", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-native-logger", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-aes-crypto/package.json b/native-modules/react-native-aes-crypto/package.json index 52415450a..589838038 100644 --- a/native-modules/react-native-aes-crypto/package.json +++ b/native-modules/react-native-aes-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-aes-crypto", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-aes-crypto", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-app-update/package.json b/native-modules/react-native-app-update/package.json index 316945459..d2b9de7cc 100644 --- a/native-modules/react-native-app-update/package.json +++ b/native-modules/react-native-app-update/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-app-update", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-app-update", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-async-storage/package.json b/native-modules/react-native-async-storage/package.json index 3cfb82a17..b417986cd 100644 --- a/native-modules/react-native-async-storage/package.json +++ b/native-modules/react-native-async-storage/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-async-storage", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-async-storage", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-background-thread/package.json b/native-modules/react-native-background-thread/package.json index 9f7d1d227..b915c2383 100644 --- a/native-modules/react-native-background-thread/package.json +++ b/native-modules/react-native-background-thread/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-background-thread", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-background-thread", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-bundle-crypto/package.json b/native-modules/react-native-bundle-crypto/package.json index 7c125b425..69e8e519c 100644 --- a/native-modules/react-native-bundle-crypto/package.json +++ b/native-modules/react-native-bundle-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-bundle-crypto", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-bundle-crypto", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-bundle-update/package.json b/native-modules/react-native-bundle-update/package.json index 08a662bff..8334fb19b 100644 --- a/native-modules/react-native-bundle-update/package.json +++ b/native-modules/react-native-bundle-update/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-bundle-update", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-bundle-update", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-check-biometric-auth-changed/package.json b/native-modules/react-native-check-biometric-auth-changed/package.json index ec36f8017..567320075 100644 --- a/native-modules/react-native-check-biometric-auth-changed/package.json +++ b/native-modules/react-native-check-biometric-auth-changed/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-check-biometric-auth-changed", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-check-biometric-auth-changed", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-cloud-fs/package.json b/native-modules/react-native-cloud-fs/package.json index 75e1463bb..49e259ef2 100644 --- a/native-modules/react-native-cloud-fs/package.json +++ b/native-modules/react-native-cloud-fs/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-cloud-fs", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-cloud-fs TurboModule for OneKey", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-cloud-kit-module/package.json b/native-modules/react-native-cloud-kit-module/package.json index 64d52fc05..8cd5a835b 100644 --- a/native-modules/react-native-cloud-kit-module/package.json +++ b/native-modules/react-native-cloud-kit-module/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-cloud-kit-module", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-cloud-kit-module", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-device-utils/package.json b/native-modules/react-native-device-utils/package.json index e066e6af8..9a40c4593 100644 --- a/native-modules/react-native-device-utils/package.json +++ b/native-modules/react-native-device-utils/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-device-utils", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-device-utils", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-dns-lookup/package.json b/native-modules/react-native-dns-lookup/package.json index 2a0483573..d1008c181 100644 --- a/native-modules/react-native-dns-lookup/package.json +++ b/native-modules/react-native-dns-lookup/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-dns-lookup", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-dns-lookup", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-get-random-values/package.json b/native-modules/react-native-get-random-values/package.json index a65f5f4c7..b9f7b11a6 100644 --- a/native-modules/react-native-get-random-values/package.json +++ b/native-modules/react-native-get-random-values/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-get-random-values", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-get-random-values", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-image-crop-picker/package.json b/native-modules/react-native-image-crop-picker/package.json index e7f895962..3978c370a 100644 --- a/native-modules/react-native-image-crop-picker/package.json +++ b/native-modules/react-native-image-crop-picker/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-image-crop-picker", - "version": "3.0.156", + "version": "3.0.161", "description": "Single photo picker and cropper Nitro module for OneKey, replacing react-native-image-crop-picker", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-keychain-module/package.json b/native-modules/react-native-keychain-module/package.json index 66e71d0ac..307ac6b5c 100644 --- a/native-modules/react-native-keychain-module/package.json +++ b/native-modules/react-native-keychain-module/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-keychain-module", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-keychain-module", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-lite-card/package.json b/native-modules/react-native-lite-card/package.json index e1e6c00a5..a72bddf97 100644 --- a/native-modules/react-native-lite-card/package.json +++ b/native-modules/react-native-lite-card/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-lite-card", - "version": "3.0.156", + "version": "3.0.161", "description": "lite card", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-network-info/package.json b/native-modules/react-native-network-info/package.json index 3ce1dc99d..9f8bc03a5 100644 --- a/native-modules/react-native-network-info/package.json +++ b/native-modules/react-native-network-info/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-network-info", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-network-info", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-network-throttle/package.json b/native-modules/react-native-network-throttle/package.json index fc3bfcd2d..c54585aa0 100644 --- a/native-modules/react-native-network-throttle/package.json +++ b/native-modules/react-native-network-throttle/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-network-throttle", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-network-throttle", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-pbkdf2/package.json b/native-modules/react-native-pbkdf2/package.json index cf381e4f5..a58eb950c 100644 --- a/native-modules/react-native-pbkdf2/package.json +++ b/native-modules/react-native-pbkdf2/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-pbkdf2", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-pbkdf2", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-perf-memory/package.json b/native-modules/react-native-perf-memory/package.json index 048694a67..3a54d60d2 100644 --- a/native-modules/react-native-perf-memory/package.json +++ b/native-modules/react-native-perf-memory/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-perf-memory", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-perf-memory", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-perf-stats/package.json b/native-modules/react-native-perf-stats/package.json index 61d0e8452..19a9e645a 100644 --- a/native-modules/react-native-perf-stats/package.json +++ b/native-modules/react-native-perf-stats/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-perf-stats", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-perf-stats", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-ping/package.json b/native-modules/react-native-ping/package.json index dcdc95b3e..2efdabe9d 100644 --- a/native-modules/react-native-ping/package.json +++ b/native-modules/react-native-ping/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-ping", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-ping TurboModule for OneKey", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-range-downloader/package.json b/native-modules/react-native-range-downloader/package.json index c053cb320..6981c010c 100644 --- a/native-modules/react-native-range-downloader/package.json +++ b/native-modules/react-native-range-downloader/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-range-downloader", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-range-downloader", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-sni-connect/package.json b/native-modules/react-native-sni-connect/package.json index 062d09fa0..e903b2e6b 100644 --- a/native-modules/react-native-sni-connect/package.json +++ b/native-modules/react-native-sni-connect/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-sni-connect", - "version": "3.0.156", + "version": "3.0.161", "description": "A React Native library for SNI-based HTTP requests with DNS caching and request management", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-splash-screen/package.json b/native-modules/react-native-splash-screen/package.json index eb01860fe..559c557c7 100644 --- a/native-modules/react-native-splash-screen/package.json +++ b/native-modules/react-native-splash-screen/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-splash-screen", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-splash-screen", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-split-bundle-loader/package.json b/native-modules/react-native-split-bundle-loader/package.json index be68f1c92..9c433e0a7 100644 --- a/native-modules/react-native-split-bundle-loader/package.json +++ b/native-modules/react-native-split-bundle-loader/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-split-bundle-loader", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-split-bundle-loader", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-tcp-socket/package.json b/native-modules/react-native-tcp-socket/package.json index b6d59f79c..7b64fd22f 100644 --- a/native-modules/react-native-tcp-socket/package.json +++ b/native-modules/react-native-tcp-socket/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-tcp-socket", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-tcp-socket", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-modules/react-native-zip-archive/package.json b/native-modules/react-native-zip-archive/package.json index c10a61a5d..40100a4cc 100644 --- a/native-modules/react-native-zip-archive/package.json +++ b/native-modules/react-native-zip-archive/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-zip-archive", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-zip-archive Nitro HybridObject for OneKey", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-auto-size-input/package.json b/native-views/react-native-auto-size-input/package.json index 7d56ec6b1..7e3b19e13 100644 --- a/native-views/react-native-auto-size-input/package.json +++ b/native-views/react-native-auto-size-input/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-auto-size-input", - "version": "3.0.156", + "version": "3.0.161", "description": "Auto-sizing text input with font scaling, prefix and suffix support", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-chart-webview/package.json b/native-views/react-native-chart-webview/package.json index 596b6de24..0a2047693 100644 --- a/native-views/react-native-chart-webview/package.json +++ b/native-views/react-native-chart-webview/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-chart-webview", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-chart-webview", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-image/package.json b/native-views/react-native-image/package.json index f14ed5645..c162b5982 100644 --- a/native-views/react-native-image/package.json +++ b/native-views/react-native-image/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-image", - "version": "3.0.156", + "version": "3.0.161", "description": "High-performance native image view for OneKey", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", @@ -81,7 +81,7 @@ "typescript": "^5.9.2" }, "peerDependencies": { - "@onekeyfe/react-native-skeleton": "3.0.156", + "@onekeyfe/react-native-skeleton": "3.0.161", "react": "*", "react-native": "*", "react-native-nitro-modules": "0.37.0" diff --git a/native-views/react-native-native-list/package.json b/native-views/react-native-native-list/package.json index a0af1b0db..daeadeabf 100644 --- a/native-views/react-native-native-list/package.json +++ b/native-views/react-native-native-list/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-native-list", - "version": "3.0.156", + "version": "3.0.161", "description": "Template-driven native RecyclerView and UICollectionView for React Native", "source": "./src/index.ts", "main": "./lib/module/index.js", @@ -84,8 +84,8 @@ "typescript": "^5.9.2" }, "peerDependencies": { - "@onekeyfe/react-native-image": "3.0.156", - "@onekeyfe/react-native-native-logger": "3.0.156", + "@onekeyfe/react-native-image": "3.0.161", + "@onekeyfe/react-native-native-logger": "3.0.161", "react": "*", "react-native": "*", "react-native-nitro-modules": "0.37.0" diff --git a/native-views/react-native-native-sheet/package.json b/native-views/react-native-native-sheet/package.json index 9c4a30b85..7b2cc9fe3 100644 --- a/native-views/react-native-native-sheet/package.json +++ b/native-views/react-native-native-sheet/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-native-sheet", - "version": "3.0.156", + "version": "3.0.161", "description": "Native bottom sheet host for arbitrary React Native content", "source": "./src/index.tsx", "main": "./lib/module/index.js", diff --git a/native-views/react-native-pager-view/docs/SPEC.md b/native-views/react-native-pager-view/docs/SPEC.md index dbb2d2cce..dc3483e22 100644 --- a/native-views/react-native-pager-view/docs/SPEC.md +++ b/native-views/react-native-pager-view/docs/SPEC.md @@ -165,6 +165,28 @@ warnings were observed. Keyboard, multi-touch, physical-device performance and the full lifecycle/interaction matrix remain unverified. These are local source builds; the currently installed npm version does not yet contain this migration. +## iOS vertical-scroll press cancellation + +Status: implemented in source. A source-identical `node_modules` build was +runtime verified on a dedicated iOS 26.5 HomePager simulator on 2026-09-30: +a slow drag from the Show more button did not activate it, a fling from the +same button scrolled the list, and a stationary tap activated it. The Pager +XCTest suite passed 47/47 tests on a separate iOS 26.5 simulator with its data +on the external drive on 2026-09-30. + +In `CollapsiblePagerView` smooth-header mode, a single-finger +vertical drag beginning on React page content MUST cancel that Surface's active +React press before finger-up once vertical displacement reaches 10 points and +exceeds horizontal displacement. Cancellation MUST leave the native vertical +scroller's pan and momentum intact. Stationary taps, movement below the threshold, +horizontal drags, and multi-touch sequences MUST retain their existing behavior. +The iOS content press bridge owns cancellation on the UI thread; the pager's +existing horizontal-drag cancellation remains independent. The bridge MUST clear +per-touch state on end, cancellation, and reuse. Android and Web behavior is +unchanged. Acceptance requires a real iOS button-origin drag that does not fire +the button, a button-origin fling that scrolls, an ordinary tap that fires, and +focused native touch-delivery coverage. + ## Native tab-press animation default Behavior change: previously an omitted `nativeTabPressAnimationEnabled` animated @@ -306,6 +328,24 @@ and refresh completion, caller offset changes, late installation/replacement, retained-page switching, clipping and nested-owner cleanup. Programmatic UIKit unit tests do not substitute for real pull-gesture visibility acceptance. +When a smooth shared header is attached to the active iOS scroll view, UIKit's +temporary refresh top inset MUST keep the header and content aligned. Both are +children of that scroll view and move together with its content offset; the +pager MUST NOT apply a separate refresh translation to the header. The scroll +view's inset and offset, the refresh indicator, and refresh callback ownership +remain unchanged. Removing the refresh inset or control preserves this alignment +even without a scroll-offset event. Caller inset changes update the pager +baseline. The sticky tab row MUST pin against the baseline top inset; the +refresh control's temporary inset MUST NOT move it below the content, including +rapid direction reversals while the spinner is active. Detaching the header +restores its normal transform. This applies to RN NativeScroller and NativeList +pages; non-smooth and detached headers keep +their existing positioning. The 2026-09-30 Home Spot simulator checkpoint covers +shared header/content alignment and inset removal. A separate source-identical +local package build verified the sticky row during active-refresh vertical +reversals; published-package, other Home pages and physical-device acceptance +remain open. + ## iOS shared-header hit testing Smooth-header hit forwarding is restricted to the pager's own interactive diff --git a/native-views/react-native-pager-view/ios/RNCCollapsiblePagerViewComponentView.mm b/native-views/react-native-pager-view/ios/RNCCollapsiblePagerViewComponentView.mm index 9d6c6caed..bbc4d87cb 100644 --- a/native-views/react-native-pager-view/ios/RNCCollapsiblePagerViewComponentView.mm +++ b/native-views/react-native-pager-view/ios/RNCCollapsiblePagerViewComponentView.mm @@ -1033,6 +1033,8 @@ @implementation RNCCollapsiblePagerContentPressCancellationGestureRecognizer { __weak UITouch *_trackedTouch; UIEvent *_touchEvent; BOOL _multipleSurfaceTouchesObserved; + CGPoint _trackedTouchStartPoint; + BOOL _didCancelReactPressForVerticalMovement; } - (BOOL)canPreventGestureRecognizer:(UIGestureRecognizer *)other @@ -1069,12 +1071,37 @@ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event return; } _trackedTouch = touches.anyObject; + _trackedTouchStartPoint = [_trackedTouch locationInView:self.view]; + _didCancelReactPressForVerticalMovement = NO; [self recordEvent:event]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { [self recordEvent:event]; + UITouch *touch = _trackedTouch; + UIGestureRecognizer *handler = self.reactTouchHandler; + if (touch == nil || ![touches containsObject:touch] || + self.state != UIGestureRecognizerStatePossible || + _didCancelReactPressForVerticalMovement || _multipleSurfaceTouchesObserved || + handler.view == nil || self.view != handler.view.superview || + handler.state == UIGestureRecognizerStateFailed || + handler.state == UIGestureRecognizerStateCancelled || + handler.state == UIGestureRecognizerStateEnded) return; + CGPoint point = [touch locationInView:self.view]; + CGFloat dx = point.x - _trackedTouchStartPoint.x; + CGFloat dy = point.y - _trackedTouchStartPoint.y; + if (fabs(dy) < 10.0 || fabs(dy) <= fabs(dx)) return; + NSUInteger activeTouches = 0; + for (UITouch *activeTouch in event.allTouches) { + if (activeTouch.phase == UITouchPhaseEnded || + activeTouch.phase == UITouchPhaseCancelled) continue; + if ([activeTouch.view isDescendantOfView:handler.view]) ++activeTouches; + } + if (activeTouches != 1) return; + _didCancelReactPressForVerticalMovement = YES; + handler.enabled = NO; + handler.enabled = YES; } - (void)cancelPressForPan:(UIPanGestureRecognizer *)pan @@ -1108,6 +1135,7 @@ - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event ? UIGestureRecognizerStateEnded : UIGestureRecognizerStateFailed; _trackedTouch = nil; _touchEvent = nil; + _didCancelReactPressForVerticalMovement = NO; } - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event @@ -1117,6 +1145,7 @@ - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event ? UIGestureRecognizerStateCancelled : UIGestureRecognizerStateFailed; _trackedTouch = nil; _touchEvent = nil; + _didCancelReactPressForVerticalMovement = NO; } - (void)reset @@ -1125,6 +1154,7 @@ - (void)reset _trackedTouch = nil; _touchEvent = nil; _multipleSurfaceTouchesObserved = NO; + _didCancelReactPressForVerticalMovement = NO; } @end @@ -2437,6 +2467,10 @@ - (void)attachScrollObserverForCurrentPageAfterTransition:(BOOL)selectionSettled forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:RNCCollapsiblePagerContentOffsetContext]; + [candidate addObserver:self + forKeyPath:@"contentInset" + options:NSKeyValueObservingOptionNew + context:RNCCollapsiblePagerContentOffsetContext]; [candidate addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew @@ -2459,6 +2493,9 @@ - (void)detachScrollObserver [scrollView removeObserver:self forKeyPath:@"contentOffset" context:RNCCollapsiblePagerContentOffsetContext]; + [scrollView removeObserver:self + forKeyPath:@"contentInset" + context:RNCCollapsiblePagerContentOffsetContext]; [scrollView removeObserver:self forKeyPath:@"contentSize" context:RNCCollapsiblePagerContentOffsetContext]; @@ -2932,6 +2969,7 @@ - (void)nativeScroller:(RNCNativeScrollerComponentView *)scroller if (appliedTop != nil) { [_appliedTopInsets setObject:@(appliedTop.doubleValue + next.top - previous.top) forKey:scrollView]; } + if (scrollView == _observedScrollView) [self updateHeaderForScrollView:scrollView]; } - (void)reapplyInsetsToObservedScrollView @@ -2964,10 +3002,16 @@ - (void)observeValueForKeyPath:(NSString *)keyPath context:(void *)context { if (context == RNCScrollRefreshControlContext) { - [self updateRefreshControlForScrollView:(UIScrollView *)object]; + UIScrollView *scrollView = (UIScrollView *)object; + [self updateRefreshControlForScrollView:scrollView]; + if (scrollView == _observedScrollView) [self updateHeaderForScrollView:scrollView]; return; } if (context == RNCCollapsiblePagerContentOffsetContext && object == _observedScrollView) { + if ([keyPath isEqualToString:@"contentInset"]) { + [self updateHeaderForScrollView:(UIScrollView *)object]; + return; + } if ([keyPath isEqualToString:@"contentSize"]) { NSValue *oldSize = change[NSKeyValueChangeOldKey]; NSValue *newSize = change[NSKeyValueChangeNewKey]; @@ -2998,9 +3042,15 @@ - (void)applyHeaderOffset BOOL attachedToList = _nativeSmoothHeaderScrollEnabled && _sharedHeaderScrollView != nil && !_sharedHeadersLiftedForPagerTransition; if (attachedToList) { + // The header and content share this scroll view. UIKit's refresh inset + // moves both together, so translating the header would separate them. _sharedHeaderHostView.transform = CGAffineTransformIdentity; _headerView.transform = CGAffineTransformIdentity; - CGFloat pinnedTranslation = MAX(0, _currentLogicalOffset - _headerHeight); + UIScrollView *scrollView = _sharedHeaderScrollView; + NSNumber *appliedTop = [_appliedTopInsets objectForKey:scrollView]; + CGFloat refreshInset = scrollView.refreshControl != nil && appliedTop != nil + ? MAX(0, scrollView.contentInset.top - appliedTop.doubleValue) : 0; + CGFloat pinnedTranslation = MAX(0, _currentLogicalOffset - _headerHeight - refreshInset); CGAffineTransform stickyTransform = CGAffineTransformMakeTranslation(0, pinnedTranslation); _stickyHeaderView.transform = stickyTransform; _nativeTabBarView.transform = stickyTransform; diff --git a/native-views/react-native-pager-view/ios/tests/RNCCollapsiblePagerPressCancellationTests.mm b/native-views/react-native-pager-view/ios/tests/RNCCollapsiblePagerPressCancellationTests.mm index b2201bcd9..0f5016e2b 100644 --- a/native-views/react-native-pager-view/ios/tests/RNCCollapsiblePagerPressCancellationTests.mm +++ b/native-views/react-native-pager-view/ios/tests/RNCCollapsiblePagerPressCancellationTests.mm @@ -744,6 +744,35 @@ - (void)testStationaryTapKeepsReactPress XCTAssertEqual(self.handler.registeredTouches, 0); } +- (void)testVerticalPageDragCancelsReactPressBeforeFingerLifts +{ + [self assertFixtureIsReadyForDelivery]; + CGPoint point = [self pressPoint]; + UITouch *touch = [self.driver beginAt:point]; + XCTAssertEqual(self.handler.registeredTouches, 1); + + [self.driver move:touch to:CGPointMake(point.x, point.y - 12)]; + XCTAssertEqual(self.handler.registeredTouches, 0); + XCTAssertTrue([self.handler.events containsObject:@"reset-cancelled"] || + [self.handler.events containsObject:@"cancelled"], + @"handler events %@", self.handler.events); + XCTAssertFalse([self.handler.events containsObject:@"ended"]); + + [self.driver end:touch]; + XCTAssertFalse([self.handler.events containsObject:@"ended"], @"events %@", self.handler.events); +} + +- (void)testSmallVerticalMovementKeepsReactPress +{ + [self assertFixtureIsReadyForDelivery]; + CGPoint point = [self pressPoint]; + UITouch *touch = [self.driver beginAt:point]; + [self.driver move:touch to:CGPointMake(point.x, point.y - 8)]; + XCTAssertEqual(self.handler.registeredTouches, 1); + [self.driver end:touch]; + XCTAssertEqualObjects(self.handler.events, (@[@"began", @"moved", @"ended"])); +} + - (void)testSmallMovementBelowPanThresholdKeepsReactPress { [self assertFixtureIsReadyForDelivery]; diff --git a/native-views/react-native-pager-view/ios/tests/RNCCollapsiblePagerRefreshControlTests.mm b/native-views/react-native-pager-view/ios/tests/RNCCollapsiblePagerRefreshControlTests.mm index 109d7b7d6..2be359ccc 100644 --- a/native-views/react-native-pager-view/ios/tests/RNCCollapsiblePagerRefreshControlTests.mm +++ b/native-views/react-native-pager-view/ios/tests/RNCCollapsiblePagerRefreshControlTests.mm @@ -4,6 +4,7 @@ @interface RNCCollapsiblePagerViewComponentView (RefreshControlTesting) - (void)updateRefreshControlForScrollView:(UIScrollView *)scrollView; - (void)releaseRefreshControlForScrollView:(UIScrollView *)scrollView; +- (void)attachScrollObserverForCurrentPage; @end @interface RNCCollapsiblePagerRefreshControlTests : XCTestCase @@ -177,4 +178,51 @@ - (void)testNestedOwnerDestructionPreservesBaselineAndRestoresClipping XCTAssertTrue(control.layer.masksToBounds); } +- (void)testRefreshTopInsetDoesNotDisplaceAttachedSharedHeader +{ + RNCCollapsiblePagerViewComponentView *pager = [self pagerWithHeader:64]; + UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 600)]; + scroll.refreshControl = [UIRefreshControl new]; + scroll.contentSize = CGSizeMake(320, 2000); + scroll.contentInset = UIEdgeInsetsMake(232, 0, 0, 0); + UIView *content = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 2000)]; + [scroll addSubview:content]; + UIViewController *page = [UIViewController new]; + [page.view addSubview:scroll]; + NSMutableArray *pages = [pager valueForKey:@"pageControllers"]; + [pages addObject:page]; + [pager attachScrollObserverForCurrentPage]; + UIView *headerHost = [pager valueForKey:@"sharedHeaderHostView"]; + UIView *stickyHeader = [pager valueForKey:@"stickyHeaderView"]; + UIView *tabBar = [pager valueForKey:@"nativeTabBarView"]; + XCTAssertEqual(headerHost.superview, scroll); + XCTAssertEqualWithAccuracy(scroll.contentInset.top, 340, 0.001); + XCTAssertEqualWithAccuracy(headerHost.transform.ty, 0, 0.001); + + scroll.contentOffset = CGPointMake(0, 500); + CGFloat baselineStickyTranslation = stickyHeader.transform.ty; + CGFloat baselineTabBarTranslation = tabBar.transform.ty; + CGPoint offset = scroll.contentOffset; + scroll.contentInset = UIEdgeInsetsMake(400, 0, 0, 0); + XCTAssertTrue(CGPointEqualToPoint(scroll.contentOffset, offset)); + XCTAssertEqualWithAccuracy(headerHost.transform.ty, 0, 0.001); + XCTAssertEqualWithAccuracy(stickyHeader.transform.ty, baselineStickyTranslation, 0.001); + XCTAssertEqualWithAccuracy(tabBar.transform.ty, baselineTabBarTranslation, 0.001); + XCTAssertEqualWithAccuracy(CGRectGetMaxY(headerHost.frame), CGRectGetMinY(content.frame), 0.001); + + scroll.contentInset = UIEdgeInsetsMake(340, 0, 0, 0); + XCTAssertEqualWithAccuracy(headerHost.transform.ty, 0, 0.001); + XCTAssertEqualWithAccuracy(stickyHeader.transform.ty, baselineStickyTranslation, 0.001); + XCTAssertEqualWithAccuracy(tabBar.transform.ty, baselineTabBarTranslation, 0.001); + + scroll.contentInset = UIEdgeInsetsMake(400, 0, 0, 0); + XCTAssertEqualWithAccuracy(headerHost.transform.ty, 0, 0.001); + XCTAssertEqualWithAccuracy(stickyHeader.transform.ty, baselineStickyTranslation, 0.001); + XCTAssertEqualWithAccuracy(tabBar.transform.ty, baselineTabBarTranslation, 0.001); + XCTAssertEqualWithAccuracy(CGRectGetMaxY(headerHost.frame), CGRectGetMinY(content.frame), 0.001); + scroll.refreshControl = nil; + XCTAssertEqualWithAccuracy(headerHost.transform.ty, 0, 0.001); + [pager prepareForRecycle]; +} + @end diff --git a/native-views/react-native-pager-view/package.json b/native-views/react-native-pager-view/package.json index 1c6189222..39add985b 100644 --- a/native-views/react-native-pager-view/package.json +++ b/native-views/react-native-pager-view/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-pager-view", - "version": "3.0.156", + "version": "3.0.161", "description": "React Native wrapper for Android and iOS ViewPager", "source": "./src/index.tsx", "main": "./lib/module/index.js", @@ -69,7 +69,7 @@ "typescript": "^5.9.2" }, "peerDependencies": { - "@onekeyfe/react-native-native-logger": "3.0.156", + "@onekeyfe/react-native-native-logger": "3.0.161", "react": "*", "react-native": "*" }, diff --git a/native-views/react-native-perp-depth-bar/package.json b/native-views/react-native-perp-depth-bar/package.json index 917d89f2e..3ad87752e 100644 --- a/native-views/react-native-perp-depth-bar/package.json +++ b/native-views/react-native-perp-depth-bar/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-perp-depth-bar", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-perp-depth-bar", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-scroll-guard/package.json b/native-views/react-native-scroll-guard/package.json index 07f1e0488..6565d134f 100644 --- a/native-views/react-native-scroll-guard/package.json +++ b/native-views/react-native-scroll-guard/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-scroll-guard", - "version": "3.0.156", + "version": "3.0.161", "description": "A native view wrapper that prevents parent scrollable containers (PagerView/ViewPager2) from intercepting child scroll gestures", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-segment-slider/package.json b/native-views/react-native-segment-slider/package.json index 986a85614..6d4db16e7 100644 --- a/native-views/react-native-segment-slider/package.json +++ b/native-views/react-native-segment-slider/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-segment-slider", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-segment-slider", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-skeleton/package.json b/native-views/react-native-skeleton/package.json index 61711d83a..1ae067ffd 100644 --- a/native-views/react-native-skeleton/package.json +++ b/native-views/react-native-skeleton/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-skeleton", - "version": "3.0.156", + "version": "3.0.161", "description": "react-native-skeleton", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/native-views/react-native-tab-view/package.json b/native-views/react-native-tab-view/package.json index fa36cb2b7..1873fbce4 100644 --- a/native-views/react-native-tab-view/package.json +++ b/native-views/react-native-tab-view/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-tab-view", - "version": "3.0.156", + "version": "3.0.161", "description": "Native Bottom Tabs for React Native (UIKit implementation)", "source": "./src/index.tsx", "main": "./lib/module/index.js", diff --git a/native-views/react-native-text-input/package.json b/native-views/react-native-text-input/package.json index 7d508994d..1a0623415 100644 --- a/native-views/react-native-text-input/package.json +++ b/native-views/react-native-text-input/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-text-input", - "version": "3.0.156", + "version": "3.0.161", "description": "React Native TextInput with native paste events", "source": "./src/index.tsx", "main": "./lib/module/index.js", diff --git a/native-views/react-native-text/package.json b/native-views/react-native-text/package.json index 8f79fe087..70c1b4a13 100644 --- a/native-views/react-native-text/package.json +++ b/native-views/react-native-text/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-text", - "version": "3.0.156", + "version": "3.0.161", "description": "Opt-in native text rendering for React Native", "source": "./src/index.ts", "main": "./lib/module/index.js", diff --git a/scripts/sync-app-monorepo.mjs b/scripts/sync-app-monorepo.mjs index d9ed72a7e..0b47e57ee 100644 --- a/scripts/sync-app-monorepo.mjs +++ b/scripts/sync-app-monorepo.mjs @@ -88,6 +88,7 @@ async function main() { const manifests = [ ["apps/mobile/package.json", ["dependencies"]], ["packages/components/package.json", ["dependencies"]], + ["packages/kit/package.json", ["dependencies"]], ["package.json", ["dependencies", "resolutions"]], ]; for (const [relativePath, sections] of manifests) { diff --git a/yarn.lock b/yarn.lock index 4d31dfa42..b1605e79d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3590,7 +3590,7 @@ __metadata: react-test-renderer: "npm:19.2.3" typescript: "npm:^5.9.2" peerDependencies: - "@onekeyfe/react-native-skeleton": 3.0.156 + "@onekeyfe/react-native-skeleton": 3.0.161 react: "*" react-native: "*" react-native-nitro-modules: 0.37.0 @@ -3691,8 +3691,8 @@ __metadata: react-native-nitro-modules: "npm:0.37.0" typescript: "npm:^5.9.2" peerDependencies: - "@onekeyfe/react-native-image": 3.0.156 - "@onekeyfe/react-native-native-logger": 3.0.156 + "@onekeyfe/react-native-image": 3.0.161 + "@onekeyfe/react-native-native-logger": 3.0.161 react: "*" react-native: "*" react-native-nitro-modules: 0.37.0 @@ -3844,7 +3844,7 @@ __metadata: react-native-builder-bob: "npm:^0.40.13" typescript: "npm:^5.9.2" peerDependencies: - "@onekeyfe/react-native-native-logger": 3.0.156 + "@onekeyfe/react-native-native-logger": 3.0.161 react: "*" react-native: "*" languageName: unknown