From 4af6e2ec1b563e2d243ea54a871005dd8403b5a0 Mon Sep 17 00:00:00 2001 From: huhuanming Date: Tue, 15 Sep 2026 13:31:01 +0800 Subject: [PATCH 1/3] test: add OK-62492 wallet sidebar reorder repro page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replay the wallet sidebar from the OK-62492 QA recording in the example app: 20 wallets in recorded order, the QR badge, and two hidden-wallet groups, built with the same row models as app-monorepo's AccountSelectorWalletListSideBarV2. Dragging "abandon" above "然 1s" reproduces the iOS group drag layout bug. Co-Authored-By: Claude Opus 5 --- .../NativeListWalletSidebarReorderPage.tsx | 282 ++++++++++++++++ .../nativeListWalletSidebarAssets/bear.png | Bin 0 -> 5097 bytes .../nativeListWalletSidebarAssets/classic.png | Bin 0 -> 1766 bytes .../nativeListWalletSidebarAssets/cow.png | Bin 0 -> 4353 bytes .../nativeListWalletSidebarAssets/dog.png | Bin 0 -> 5144 bytes .../nativeListWalletSidebarAssets/fox.png | Bin 0 -> 4926 bytes .../nativeListWalletSidebarAssets/frog.png | Bin 0 -> 4871 bytes .../nativeListWalletSidebarAssets/koala.png | Bin 0 -> 5525 bytes .../nativeListWalletSidebarAssets/lion.png | Bin 0 -> 5638 bytes .../nativeListWalletSidebarAssets/monkey.png | Bin 0 -> 4211 bytes .../othersImported.png | Bin 0 -> 7121 bytes .../othersWatching.png | Bin 0 -> 10687 bytes .../nativeListWalletSidebarAssets/panda.png | Bin 0 -> 5160 bytes .../polarBear.png | Bin 0 -> 6270 bytes .../proBlack.png | Bin 0 -> 3902 bytes .../nativeListWalletSidebarAssets/rabbit.png | Bin 0 -> 4803 bytes .../pages/nativeListWalletSidebarFixture.ts | 315 ++++++++++++++++++ example/react-native/route.tsx | 15 + 18 files changed, 612 insertions(+) create mode 100644 example/react-native/pages/NativeListWalletSidebarReorderPage.tsx create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/bear.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/classic.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/cow.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/dog.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/fox.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/frog.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/koala.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/lion.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/monkey.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/othersImported.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/othersWatching.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/panda.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/polarBear.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/proBlack.png create mode 100644 example/react-native/pages/nativeListWalletSidebarAssets/rabbit.png create mode 100644 example/react-native/pages/nativeListWalletSidebarFixture.ts diff --git a/example/react-native/pages/NativeListWalletSidebarReorderPage.tsx b/example/react-native/pages/NativeListWalletSidebarReorderPage.tsx new file mode 100644 index 00000000..6c5c1d5c --- /dev/null +++ b/example/react-native/pages/NativeListWalletSidebarReorderPage.tsx @@ -0,0 +1,282 @@ +import { useMemo, useState } from 'react'; +import { + Image, + Pressable, + ScrollView, + StatusBar, + StyleSheet, + Text, + View, +} from 'react-native'; +import { useNavigation } from '@react-navigation/native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; +import { + NativeList, + type ReorderEvent, + type RowActionEvent, +} from '@onekeyfe/react-native-native-list'; + +import { + OK_62492_FOCUSED_WALLET_ID, + OK_62492_WALLETS, + WALLET_SIDEBAR_LIGHT_THEME, + buildWalletSidebarSnapshot, + parseHiddenWalletActionKey, + reorderWalletSidebarWallets, + walletSidebarAvatarUri, +} from './nativeListWalletSidebarFixture'; + +// app-monorepo AccountSelectorWalletListSideBarV2 uses w="$24" on phones. +const SIDEBAR_WIDTH = 96; +const MAX_EVENT_LINES = 12; + +export function NativeListWalletSidebarReorderPage() { + const navigation = useNavigation(); + const insets = useSafeAreaInsets(); + const [wallets, setWallets] = useState(OK_62492_WALLETS); + const [focusedWalletId, setFocusedWalletId] = useState( + OK_62492_FOCUSED_WALLET_ID, + ); + const [listInstance, setListInstance] = useState(0); + const [events, setEvents] = useState([]); + const snapshot = useMemo( + () => buildWalletSidebarSnapshot({ wallets, focusedWalletId }), + [focusedWalletId, wallets], + ); + const focusedWallet = wallets.find(wallet => wallet.id === focusedWalletId); + + const appendEvent = (line: string) => { + console.info('[NativeListWalletSidebarReorder]', line); + setEvents(previous => [line, ...previous].slice(0, MAX_EVENT_LINES)); + }; + + const handleRowAction = (event: RowActionEvent) => { + if (!event.rowKey || event.actionKey !== 'press') return; + const hiddenWalletParentId = parseHiddenWalletActionKey(event.rowKey); + if (hiddenWalletParentId) { + appendEvent(`add hidden wallet · ${hiddenWalletParentId}`); + return; + } + if (wallets.some(wallet => wallet.id === event.rowKey)) { + setFocusedWalletId(event.rowKey); + } + }; + + const handleReorder = (event: ReorderEvent) => { + appendEvent(`reorder ${event.key} → ${event.toIndex}`); + setWallets(previous => reorderWalletSidebarWallets(previous, event)); + }; + + const resetFixture = () => { + setWallets(OK_62492_WALLETS); + setFocusedWalletId(OK_62492_FOCUSED_WALLET_ID); + setEvents([]); + // Remount so native reorder state and scroll offset match the recording again. + setListInstance(instance => instance + 1); + }; + + return ( + + + + + + + + appendEvent('add wallet')} + style={({ pressed }) => [ + styles.createWalletButton, + pressed && styles.pressed, + ]} + > + + + + Wallet + + + + + + + {focusedWallet ? ( + + ) : null} + + {focusedWallet?.name ?? '—'} + + + navigation.goBack()} + style={({ pressed }) => [ + styles.textButton, + pressed && styles.pressed, + ]} + > + Back + + + + OK-62492: long-press “abandon”, drag it slowly up past “然 1s” and + the QR wallet, then back down. + + [ + styles.resetButton, + pressed && styles.pressed, + ]} + > + Reset recording order + + + Order + {wallets.map((wallet, index) => ( + + {`${index + 1}. ${wallet.name}${ + wallet.showAddHiddenWalletButton || + (wallet.hiddenWallets?.length ?? 0) > 0 + ? ' [group]' + : '' + }`} + + ))} + Events + {events.map((line, index) => ( + + {line} + + ))} + + + + + ); +} + +const styles = StyleSheet.create({ + screen: { flex: 1, backgroundColor: '#CFCFCF' }, + sheet: { + flex: 1, + flexDirection: 'row', + backgroundColor: '#FFFFFF', + borderTopLeftRadius: 12, + borderTopRightRadius: 12, + borderCurve: 'continuous', + overflow: 'hidden', + }, + sidebar: { + width: SIDEBAR_WIDTH, + backgroundColor: WALLET_SIDEBAR_LIGHT_THEME.background, + borderRightWidth: StyleSheet.hairlineWidth, + borderRightColor: '#0000000f', + }, + list: { flex: 1 }, + sidebarFooter: { + padding: 8, + borderTopWidth: StyleSheet.hairlineWidth, + borderTopColor: WALLET_SIDEBAR_LIGHT_THEME.separator, + }, + createWallet: { padding: 4, alignItems: 'center' }, + createWalletButton: { + width: 40, + height: 40, + borderRadius: 20, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#202020', + }, + createWalletIcon: { + color: '#FFFFFF', + fontSize: 26, + lineHeight: 28, + }, + createWalletLabel: { + marginTop: 4, + color: '#000000df', + fontSize: 12, + lineHeight: 16, + textAlign: 'center', + }, + details: { flex: 1, backgroundColor: '#FFFFFF' }, + header: { + height: 56, + flexDirection: 'row', + alignItems: 'center', + paddingLeft: 20, + paddingRight: 12, + gap: 8, + }, + headerAvatar: { width: 32, height: 32 }, + headerTitle: { + maxWidth: 140, + color: '#000000df', + fontSize: 16, + fontWeight: '600', + }, + headerSpacer: { flex: 1 }, + textButton: { paddingHorizontal: 8, paddingVertical: 6 }, + textButtonLabel: { color: '#006dcbf2', fontSize: 15 }, + caption: { + marginHorizontal: 20, + color: '#0000009b', + fontSize: 13, + lineHeight: 18, + }, + resetButton: { + alignSelf: 'flex-start', + marginTop: 12, + marginHorizontal: 20, + paddingHorizontal: 12, + paddingVertical: 8, + borderRadius: 16, + backgroundColor: '#0000000f', + }, + resetButtonLabel: { color: '#000000df', fontSize: 13, fontWeight: '600' }, + log: { flex: 1, marginTop: 12 }, + logContent: { paddingHorizontal: 20, paddingBottom: 24 }, + sectionTitle: { + marginTop: 8, + marginBottom: 4, + color: '#000000df', + fontSize: 13, + fontWeight: '600', + }, + logLine: { + color: '#0000009b', + fontSize: 12, + lineHeight: 17, + fontVariant: ['tabular-nums'], + }, + pressed: { opacity: 0.6 }, +}); diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/bear.png b/example/react-native/pages/nativeListWalletSidebarAssets/bear.png new file mode 100644 index 0000000000000000000000000000000000000000..138b01cc89455b0db6ef654fc07a545017e79e18 GIT binary patch literal 5097 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 X7){ literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/dog.png b/example/react-native/pages/nativeListWalletSidebarAssets/dog.png new file mode 100644 index 0000000000000000000000000000000000000000..26ac5eb71bab41a2333726a46d75638812b36d7c GIT binary patch literal 5144 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�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 literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/fox.png b/example/react-native/pages/nativeListWalletSidebarAssets/fox.png new file mode 100644 index 0000000000000000000000000000000000000000..956799d1b256a3f3e95e834fef19146e2dfe6e26 GIT binary patch literal 4926 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 NU8s>}mAX^pe*p8+c(?!n literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/frog.png b/example/react-native/pages/nativeListWalletSidebarAssets/frog.png new file mode 100644 index 0000000000000000000000000000000000000000..53f49d7e06c4df3cf003f5db0b1f3bcd8a56ecc4 GIT binary patch literal 4871 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 Wh>pei>9v3VSL!M{%9V;%q5lK3P^JC= literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/koala.png b/example/react-native/pages/nativeListWalletSidebarAssets/koala.png new file mode 100644 index 0000000000000000000000000000000000000000..60535643067ef9e51468127589674b71b8af3d93 GIT binary patch literal 5525 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 literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/lion.png b/example/react-native/pages/nativeListWalletSidebarAssets/lion.png new file mode 100644 index 0000000000000000000000000000000000000000..7a45fde04bd67f0c3abab57faad8271b2df9f08f GIT binary patch literal 5638 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 literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/monkey.png b/example/react-native/pages/nativeListWalletSidebarAssets/monkey.png new file mode 100644 index 0000000000000000000000000000000000000000..bfe1c0062fb14e4ab49e84f8acda50fbe0cd6546 GIT binary patch literal 4211 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 literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/panda.png b/example/react-native/pages/nativeListWalletSidebarAssets/panda.png new file mode 100644 index 0000000000000000000000000000000000000000..ed426954838141a81057e65490f10421385e2574 GIT binary patch literal 5160 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 literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/polarBear.png b/example/react-native/pages/nativeListWalletSidebarAssets/polarBear.png new file mode 100644 index 0000000000000000000000000000000000000000..3149fdeef1851c342d40b6afed0d0604da166ef2 GIT binary patch literal 6270 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 M07*qoM6N<$f;-_bCjbBd literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarAssets/rabbit.png b/example/react-native/pages/nativeListWalletSidebarAssets/rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..6825d680d05c9c83f26cc3aaf8924ce5bab8cd54 GIT binary patch literal 4803 zcmYM2cRbtQ_s6Z$T2&oN2UT6virTBxs@bZ&YK3ZQG*YxSRn?{T2Sv5DR}q8|Vn;#* zk%)*862z*ND%G!kf1k(q_s6~WeeOB;dCqw~?)&}6JL#UKu>h|aFB==1z+Dpq>%%qd z?>NeNI19G)QrXzpJ^gGPAPyGh8eW0^avt7+o2Jf)YakD3ez|Q_yZvx5@G&N z0)jQdv?c$`)i`|qyDcv%@!t>#NL$ju;-18vKrm23MNUCZK~jfTLJREeqhW1e^zY$A zOIz|01QMhnFCQ8jDi^9G7YO#1S5#M5msbGD0|2sz5wgM010Wt@vH`)D|04d6VE_#F z0{aC)`~m|c{xUs01D`>(B_$92692*>em?(C4+#FZ{X-$-|9a#V z@GNz195*{pqt6b{AMViS7O0c+E6Z#12E<%ih9)Viu~(A=ad zSUn;qsj|C$prWv`I1@UC#nUMBb5!~WcI?OM*4Qv%pa(lmo*l-FHWpxhZvWcZ`bn9b zrjlugsb{BXnEv5a=0Uxxd;hWe00jbG4|$=Tl4VMIgU#@f!}{L0MKJgj)2 zxeT=nhYq1ee^h*BGFIuci{oR&*5Z-APE2dfz~(v&Q8v1~xZYURP8=iQaTA@bC^CKy z-9a1~BD9s_#s*1S8$0w_1|Cbs^^!->6YZ6w-EEkbGW14uQ5S5mrMkDK7^W+yOd-%o zgvs6Jx*cfc9Cd*_F|}S^I74FeG>mt*VCgf<1T57+Npod!1CN=;4dO{7v@sNAbOhg2 z-n}@_?5rM#mk&Zqk+i8L#@xch@GJ>GZLV#AK}@2WNw@(*U-LM91dnRNch-&}>d@7n zTQ_S;`x+;@>xk{JK2~Fmy@}<0eG_ay9@C2>qlZmY^p+URj`H!222^<-tSF;ltFFw| z%7)2U$Dv4=o-q^>*Ie7VUXtHYiSMW%EX{7xlhLM8=UbuO&GqebW3sb(Qy!tpT8y5i%FE6a!=zuTl{j*kANgc$^_MukbjSyhyxYRSuyIcbrBF^eB-9~mj@ zkxGVI9KHa$5Npc^Y!6S|<~2HEC4a_W((1b8b7S>`Oo;MYY2=4^VuO9p0b_1@y0hrV z%t+h%0;U_99?h7=Jn{U+>P$_H__gAHw4|~6@XOYJ*Fewa5oMXs4m#;^mS^2%RK;Ka zn4|C)2|LI-&(hqB&}}u`H{(nd@LAJ7ec5y=RTGoMxF(>fXWd=BIfgw$}KmCsq~E~u-y3WL(Cz}cwEtCu=6#DJAa{MIdBzRWuZ zKk$7zr9WVkC`LMiYKMolnS-JbrE`6E?)1F0sFBXF7$7`VidJNMcVp`~PsN$>eQOj0 zi^cYFw`5cLCyOhy>HlQdXmAzW+LY@-1I&ypjK@GHv$lchf#=R5R`Yw+B zGB?fY`pm?TTK{X2UH4C}XOW_+DE|3*Dm;x<()pY&0K)j3RbS;x_tVM;nwd90O=tbK zsLavT_7Aav2X>;Z2`h~*mfqhH>fa@L3 z51_Wq2b=I--;Vi1zI1l9hq}-2fOwh6b&adzewvkt&rYa<^rx=ZyfGp!FrF~?>x=23 zzXc zt$(Dx6jEFI(7;&|%?*kH#cW=P`>IcsP@by>xtEu?31Fqlu`rQX` zw!oO%J<{-~7Q>RjwNnZAd@T2FqAufS#BGy+lUh7$I+-RY;hwpz&CW{l@sQ)X~KBibyf0r?^M;Jlm|PIS4&zQ z_5GGFtRl0*U8OTDR}(}GzoV0+kpQH#qjuhSJy&?VjP=_p{TmPTFB{T5Mjk=qA&MHlBD~+#G>FEBVq}kn`55H|6Dq8Z(#*`|Oh8z+dE5 z@6&QR1a*E%}gI5_6aP!xlV#HA{>#HI-oce2#`hx^{@g zqd!h%x@I}RWVv;L>#NRlHQ|;jSF4Rykw)3>-JDh~ahEi!k2`{0Ct{DY!DUZ=qALXB zf(i`)%~~VVutK%alw-@w%2|0zuh26bRDL8p<{=_tceZD;sjvc`VoNxJVdYS_MHQ4W zGpaE&`UufxK*ZO_o%1Q`%LDvItqRRChxZd4dhjLys<&G2i|x2rbzvYeqE&^Q87jeP z=hKNT&`ms#$brXka+|3;X=-Rd<^}8#WafkdPR9PJh`1eU9soA+0C4Qm=5JUzW-8%O+x))>N@?%#ATR&ZMs!HbI zM<%4v;NhMQc67SM?wr$t;q`z8**Kk0Im_addmHCF5Ez*kLWw6>q?~H{E>ZO)*|K}46$Ig`q zweAoV1@B~fXnjkicp!#HuY)s8zl4NNMAbIe6E!-N|(9J`N5U>;jY`asVo=j(!LdYAj> zt)-;2)sFsy;uR1@ULYvWoDo+uj7&gJrzF4G!Hdvt&J?<6??nUuDNg^rQ! z;pJlWEdjX-0%o#v=J`MP94qiSI^_1~KI@IaUj}`rp)m}QxK0(tk5H$ zZZW3!0{7W2D^@Pgt~v2a1Ggf>xU#9LTnt756;O7KKU?k8zG7+j5NhNH=ojID*Akx? z`S^;s)1{3vUm(B{LVRT19?ma%>qXYvBz67}W)j(PHh)&>g5a532fWqlBR=)>Hzv|I zFg^{aFo)RVxnl@MvUsdfpcS1CIJ;p7GY*b>5&Y!2V)ip_YgkD-pj;jAWeEHJ{oWs- z%tEdqzWPR2)9fy-FL~H`5S8ZX?P)c~pdilJRQM(M9Kq!+{ZjQkri$1(*&Fx?slt-B zZ6ivd*@xCWe75Y;B6HvKXAkJ+gm3Klhxj2qO15=hbAI3<>>J1jg}8D$z}yYFa?NWM z7VNPF?E?cN-o8qrDP{@@GJJEv=G<)ou6tZTsvW&&RnH67rzio;O}R!zpn`&T=(o7J zF<-=qME2AqHv)j23>gd)`^RC%vx|=%jS6}$;k4R6a+}-Y!DYIbJqE@ps^A^vA==jd zj01Kt9#1|(dVjJ|B!xOT zX!P^q`43;T?4Q<7U*X2K1`u0RaTDdasdgjp1_y?7qjD#-g6ZaY3+(yM+M~7msXgbw zJUOmXq#yj)$cqZBh;e|NHNs5F07uIrM}^!KKfui}@}&ErGN1 zG^{f!w|rTv_#P|C)G4{UsaH;I=&Zz?Ynt?8NrqCMUvxL^hgAYkPjH{KOh%t5d%FHv zut+s9Q*c$?C8OAOFDTU;qKbZeC2V`}T8a?)-u11yGCYaB;Q30-oz+%8hT&~s_QQLd z&K0j%-M{x(3pC^EiTXR(!g%Y2nC*LeFX1_In6YMC1nm z?z;k82J)Llxt}y(rY`RVq(CAqki~%vbSbH=p9Y{7quLSUDqW5OHM1v*p^+NCs{V1| zEKIhHRB&!U`^S1X{&y0~DqLjINBT)?s~#+u%3VE4Fm182hN25!OJ~yEuS|2<^^W4FEMP*Tc z{-`&B;Gof+McCRAUFb3Hw@g$9W#xN+^q2HlfA}&9>e1y%eH{*v7FS;0oKkWn6??t^ zx+rH(CVqif6b&+^s7;G*N^7D$diQ;$nZ tZOY2ZR!B2O_)@(Uu|Ip$e-3~J?8}3YpTTW<*?<2%-8Hl{sMdFn`wzud>UsbG literal 0 HcmV?d00001 diff --git a/example/react-native/pages/nativeListWalletSidebarFixture.ts b/example/react-native/pages/nativeListWalletSidebarFixture.ts new file mode 100644 index 00000000..ea787426 --- /dev/null +++ b/example/react-native/pages/nativeListWalletSidebarFixture.ts @@ -0,0 +1,315 @@ +import { Image, Platform, type ImageRequireSource } from 'react-native'; +import type { + IdentityRow, + LeadingVisual, + NativeListSnapshot, + NativeListTheme, + ReorderEvent, + RowModel, +} from '@onekeyfe/react-native-native-list'; + +// Wallet sidebar captured from the OK-62492 QA recording (iPhone, iOS, light +// theme). Order, names, avatars, the QR badge, and hidden-wallet groups follow +// the video; names the recording truncates are padded so they truncate at the +// same width. Rows are built like app-monorepo's +// AccountSelectorWalletListSideBarV2, so the example replays the production +// snapshot without a wallet database. + +// Copied from app-monorepo packages/shared/src/assets/wallet/avatar (923d2f36b8). +const avatarSources = { + bear: require('./nativeListWalletSidebarAssets/bear.png'), + classic: require('./nativeListWalletSidebarAssets/classic.png'), + cow: require('./nativeListWalletSidebarAssets/cow.png'), + dog: require('./nativeListWalletSidebarAssets/dog.png'), + fox: require('./nativeListWalletSidebarAssets/fox.png'), + frog: require('./nativeListWalletSidebarAssets/frog.png'), + koala: require('./nativeListWalletSidebarAssets/koala.png'), + lion: require('./nativeListWalletSidebarAssets/lion.png'), + monkey: require('./nativeListWalletSidebarAssets/monkey.png'), + othersImported: require('./nativeListWalletSidebarAssets/othersImported.png'), + othersWatching: require('./nativeListWalletSidebarAssets/othersWatching.png'), + panda: require('./nativeListWalletSidebarAssets/panda.png'), + polarBear: require('./nativeListWalletSidebarAssets/polarBear.png'), + proBlack: require('./nativeListWalletSidebarAssets/proBlack.png'), + rabbit: require('./nativeListWalletSidebarAssets/rabbit.png'), +} satisfies Record; + +export type WalletSidebarAvatar = keyof typeof avatarSources; + +export type WalletSidebarWalletKind = + | 'hd' + | 'hw' + | 'hwHidden' + | 'qr' + | 'imported' + | 'watching'; + +export type WalletSidebarWallet = Readonly<{ + id: string; + name: string; + kind: WalletSidebarWalletKind; + avatar: WalletSidebarAvatar; + // walletListUtils.ts badges QR wallets with "QR". + badge?: string; + hiddenWallets?: readonly WalletSidebarWallet[]; + // Resolved result of shouldShowCreateHiddenWalletSidebarButtonForWallet(). + showAddHiddenWalletButton?: boolean; +}>; + +export type WalletSidebarSnapshotInput = Readonly<{ + wallets: readonly WalletSidebarWallet[]; + focusedWalletId?: string; + theme?: NativeListTheme; +}>; + +export const OK_62492_FOCUSED_WALLET_ID = 'hd-ran'; + +// Order at 00:00. The QA first drags "然" below "Private key", then from 00:13 +// drags the "abandon" group up past "然 1s" and the QR wallet, where "然 1s" +// loses its name and "OneKey Pro" separates from its avatar. +export const OK_62492_WALLETS: readonly WalletSidebarWallet[] = [ + { id: 'hd-research', name: '研发', kind: 'hd', avatar: 'bear' }, + { id: 'hd-ran', name: '然', kind: 'hd', avatar: 'lion' }, + { + id: 'watching', + name: 'Watch-Only', + kind: 'watching', + avatar: 'othersWatching', + }, + { id: 'hd-product', name: '产品', kind: 'hd', avatar: 'rabbit' }, + { id: 'hd-12-words', name: '12 助记词', kind: 'hd', avatar: 'panda' }, + { id: 'hd-wallet-25', name: 'Wallet 25', kind: 'hd', avatar: 'polarBear' }, + { id: 'hd-wallet-12', name: 'Wallet 12', kind: 'hd', avatar: 'fox' }, + { id: 'hd-wallet-10', name: 'Wallet 10', kind: 'hd', avatar: 'fox' }, + { id: 'hd-wallet-18', name: 'Wallet 18', kind: 'hd', avatar: 'monkey' }, + { id: 'hd-wallet-19', name: 'Wallet 19', kind: 'hd', avatar: 'cow' }, + { id: 'hd-wallet-26', name: 'Wallet 26', kind: 'hd', avatar: 'dog' }, + { id: 'hd-haohaohao', name: 'haohaohaohao', kind: 'hd', avatar: 'frog' }, + { id: 'hd-wallet-13', name: 'Wallet 13', kind: 'hd', avatar: 'lion' }, + { id: 'hd-wallet-2', name: 'Wallet 2', kind: 'hd', avatar: 'polarBear' }, + { id: 'hw-qa', name: 'qa', kind: 'hw', avatar: 'proBlack' }, + { + id: 'qr-onekey-pro', + name: 'OneKey Pro QR', + kind: 'qr', + avatar: 'proBlack', + badge: 'QR', + }, + { + id: 'hw-ran-1s', + name: '然 1s', + kind: 'hw', + avatar: 'classic', + showAddHiddenWalletButton: true, + }, + { + id: 'hw-abandon', + name: 'abandon', + kind: 'hw', + avatar: 'proBlack', + showAddHiddenWalletButton: true, + }, + { + id: 'imported', + name: 'Private key', + kind: 'imported', + avatar: 'othersImported', + }, + { id: 'hd-wallet-20', name: 'Wallet 20', kind: 'hd', avatar: 'koala' }, +]; + +// useAccountSelectorNativeListThemeV2(true) resolved with app-monorepo light tokens. +export const WALLET_SIDEBAR_LIGHT_THEME: NativeListTheme = { + background: '#f9f9f9', + rowBackground: '#f9f9f9', + rowSelectedBackground: '#00000017', + rowPressedBackground: '#00000017', + subduedBackground: '#f9f9f9', + strongBackground: '#0000000f', + primaryText: '#000000df', + secondaryText: '#0000009b', + disabledText: '#00000072', + icon: '#0000009b', + iconSubdued: '#00000072', + separator: '#0000001f', + accent: '#000000df', + positive: '#00713fde', + negative: '#c40006d3', + inverseBackground: '#000000df', + inverseText: '#ffffffed', + info: '#006dcbf2', + caution: '#9e6c00', + cautionBackground: '#f4dd0016', +}; + +const WALLET_ROW_HEIGHT = 68; +const HIDDEN_WALLET_TITLE = 'Hidden wallet'; +const ADD_HIDDEN_WALLET_KEY_PREFIX = 'add-hidden:'; + +type WalletOverlay = NonNullable< + Extract['overlays'] +>[number]; + +export function walletSidebarAvatarUri(avatar: WalletSidebarAvatar): string { + const uri = Image.resolveAssetSource(avatarSources[avatar])?.uri ?? ''; + // Release Android builds resolve bundled images to drawable resource names. + if (Platform.OS === 'android' && uri && !uri.includes(':')) { + return `android.resource://com.example/drawable/${uri}`; + } + return uri; +} + +function walletVisual( + wallet: WalletSidebarWallet, + theme: NativeListTheme, + badge: string | number | undefined, +): LeadingVisual { + const overlays: WalletOverlay[] = []; + if (badge !== undefined) { + overlays.push({ + position: 'bottomRight', + height: 16, + offsetX: 1, + offsetY: 2, + text: String(badge), + tintColor: theme.primaryText, + backgroundColor: theme.subduedBackground, + }); + } + if (wallet.kind === 'hwHidden') { + return { + kind: 'wallet', + backgroundColor: '#00000000', + fallbackIcon: { name: 'LockSolid', tintColor: theme.icon }, + overlays, + }; + } + return { + kind: 'wallet', + shape: 'square', + backgroundColor: '#00000000', + image: { + uri: walletSidebarAvatarUri(wallet.avatar), + width: 40, + height: 40, + contentFit: 'cover', + retryTimes: 1, + }, + fallbackText: '', + overlays, + }; +} + +function walletIdentityRow( + wallet: WalletSidebarWallet, + focusedWalletId: string | undefined, + theme: NativeListTheme, + badge?: number, +): IdentityRow { + return { + type: 'identity', + key: wallet.id, + testID: `wallet-${wallet.id}`, + presentation: 'walletSidebar', + height: WALLET_ROW_HEIGHT, + title: wallet.name, + leading: walletVisual(wallet, theme, badge ?? wallet.badge), + selected: focusedWalletId === wallet.id, + opacity: 1, + badges: [], + draggable: true, + accessibilityLabel: wallet.name, + }; +} + +function addHiddenWalletRow( + wallet: WalletSidebarWallet, + theme: NativeListTheme, +): IdentityRow { + return { + type: 'identity', + key: `${ADD_HIDDEN_WALLET_KEY_PREFIX}${wallet.id}`, + presentation: 'walletSidebar', + height: WALLET_ROW_HEIGHT, + title: HIDDEN_WALLET_TITLE, + leading: { + kind: 'wallet', + backgroundColor: '#00000000', + shape: 'circle', + borderStyle: 'dashed', + borderColor: theme.separator, + fallbackIcon: { name: 'PlusSmallOutline', tintColor: theme.iconSubdued }, + }, + draggable: false, + }; +} + +export function buildWalletSidebarRows({ + wallets, + focusedWalletId, + theme = WALLET_SIDEBAR_LIGHT_THEME, +}: WalletSidebarSnapshotInput): RowModel[] { + return wallets.map((wallet): RowModel => { + const parent = walletIdentityRow(wallet, focusedWalletId, theme); + const isHwOrQrWallet = wallet.kind === 'hw' || wallet.kind === 'qr'; + const childWallets = isHwOrQrWallet ? wallet.hiddenWallets ?? [] : []; + const hasGroup = + wallet.kind !== 'hwHidden' && + (childWallets.length > 0 || wallet.showAddHiddenWalletButton === true); + if (!hasGroup) return parent; + // Phones use the md layout, which numbers hidden wallets inside a device group. + const children = childWallets.map((child, index) => + walletIdentityRow(child, focusedWalletId, theme, index + 1), + ); + if (wallet.showAddHiddenWalletButton) { + children.push(addHiddenWalletRow(wallet, theme)); + } + return { + type: 'walletGroup', + key: wallet.id, + parent, + children, + draggable: true, + }; + }); +} + +export function buildWalletSidebarSnapshot( + input: WalletSidebarSnapshotInput, +): NativeListSnapshot { + return { + schemaVersion: 1, + generation: 1, + theme: input.theme ?? WALLET_SIDEBAR_LIGHT_THEME, + layout: { + kind: 'linear', + contentPaddingHorizontal: 8, + contentPaddingTop: 8, + contentPaddingBottom: 8, + itemSpacing: 12, + }, + rows: buildWalletSidebarRows(input), + capabilities: { reorderable: true }, + }; +} + +export function parseHiddenWalletActionKey(rowKey: string): string | undefined { + return rowKey.startsWith(ADD_HIDDEN_WALLET_KEY_PREFIX) + ? rowKey.slice(ADD_HIDDEN_WALLET_KEY_PREFIX.length) + : undefined; +} + +// Same move as the production sidebar's onReorder handler. +export function reorderWalletSidebarWallets( + wallets: readonly WalletSidebarWallet[], + event: ReorderEvent, +): readonly WalletSidebarWallet[] { + const fromIndex = wallets.findIndex(wallet => wallet.id === event.key); + if (fromIndex < 0) return wallets; + const reordered = [...wallets]; + const [moved] = reordered.splice(fromIndex, 1); + if (!moved) return wallets; + const toIndex = Math.max(0, Math.min(event.toIndex, reordered.length)); + reordered.splice(toIndex, 0, moved); + return reordered; +} diff --git a/example/react-native/route.tsx b/example/react-native/route.tsx index 3c7ba20c..d1a0b8f3 100644 --- a/example/react-native/route.tsx +++ b/example/react-native/route.tsx @@ -29,6 +29,7 @@ import { NativeListAccountSelectorPage } from './pages/NativeListAccountSelector import type { AccountSelectorInitialTargetInput } from './pages/nativeListAccountSelectorData'; import { NativeListNetworkSelectorPage } from './pages/NativeListNetworkSelectorPage'; import { NativeListTokenSelectorPage } from './pages/NativeListTokenSelectorPage'; +import { NativeListWalletSidebarReorderPage } from './pages/NativeListWalletSidebarReorderPage'; import type { MarketSearchParams } from './pages/MarketNativePagerExamplePage'; import { NativeListExamplePage, @@ -85,6 +86,7 @@ export type RootStackParamList = { NativeListAccountSelector: AccountSelectorInitialTargetInput | undefined; NativeListNetworkSelector: undefined; NativeListTokenSelector: undefined; + NativeListWalletSidebarReorder: undefined; MarketNativePager: undefined; MarketSearch: MarketSearchParams; OtaPipeline: undefined; @@ -280,6 +282,13 @@ const modules: { 'Production network catalog with native sections, search, and selection', icon: '🌐', }, + { + screen: 'NativeListWalletSidebarReorder', + name: 'Native List Wallet Sidebar Reorder', + description: + 'OK-62492 recorded wallet sidebar for iOS wallet group drag reorder', + icon: '🗂️', + }, { screen: 'PagerView', name: 'Pager View', @@ -671,6 +680,12 @@ export function AppNavigator() { component={NativeListTokenSelectorPage} options={{ headerShown: false }} /> + Date: Tue, 15 Sep 2026 14:01:18 +0800 Subject: [PATCH 2/3] fix: keep iOS wallet group reorder row heights in sync OK-62492 UIKit's flow layout requests item sizes in the in-flight order during an interactive move, while the diffable snapshot and cell index paths keep the pre-drag order until the move commits. Resolving sizes through the snapshot swapped heights between displaced rows: dragging a compact wallet group past another group stretched the neighboring row and squeezed the other group, clipping its name. Track the in-flight key order from targetIndexPathForMove and use it only for layout size lookups. Clear it before cancelling and after ending the move. Co-Authored-By: Claude Opus 5 --- .../ios/RNCNativeListView.swift | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/native-views/react-native-native-list/ios/RNCNativeListView.swift b/native-views/react-native-native-list/ios/RNCNativeListView.swift index c719514a..59064de8 100644 --- a/native-views/react-native-native-list/ios/RNCNativeListView.swift +++ b/native-views/react-native-native-list/ios/RNCNativeListView.swift @@ -115,6 +115,7 @@ final class NativeListView: UIView { private let reorderStartFeedback = UIImpactFeedbackGenerator(style: .medium) private let reorderMoveFeedback = UISelectionFeedbackGenerator() private var interactiveReorderFeedbackIndex: Int? + private var interactiveMovementKeys: [String]? private var actionAnchor: ActionAnchorRecord? private let actionAnchorInstanceID = UUID().uuidString private var actionAnchorCounter = 0 @@ -731,6 +732,9 @@ final class NativeListView: UIView { collectionView.layoutIfNeeded() return } + if !interactiveReorderUsesAtomicTargeting { + interactiveMovementKeys = dataSource.snapshot().itemIdentifiers + } interactiveReorderFeedbackIndex = indexPath.item reorderStartFeedback.impactOccurred(intensity: 0.7) reorderStartFeedback.prepare() @@ -838,9 +842,11 @@ final class NativeListView: UIView { interactiveReorderAnimator?.stopAnimation(true) interactiveReorderFeedbackIndex = nil if cancelled { + interactiveMovementKeys = nil collectionView.cancelInteractiveMovement() } else { collectionView.endInteractiveMovement() + interactiveMovementKeys = nil } let animator = UIViewPropertyAnimator( duration: ReorderAnimation.duration, @@ -874,6 +880,7 @@ final class NativeListView: UIView { guard interactiveReorderSource != nil else { return } interactiveReorderAnimator?.stopAnimation(true) interactiveReorderAnimator = nil + interactiveMovementKeys = nil collectionView.cancelInteractiveMovement() interactiveReorderCell?.setPressed(false) if interactiveReorderCompactKey != nil { @@ -978,6 +985,23 @@ final class NativeListView: UIView { return collectionView.cellForItem(at: IndexPath(item: index, section: 0)) as? NativeListCell } + // OneKey patch: flow layout sizes an interactive move in UIKit's in-flight order, + // while the diffable snapshot and cell index paths keep the pre-drag order until + // the move commits. Resolving sizes from the snapshot swaps row heights. + private func layoutItem(at indexPath: IndexPath) -> NativeListItem? { + guard let keys = interactiveMovementKeys else { return item(at: indexPath) } + return keys[safe: indexPath.item].flatMap { itemsByKey[$0] } + } + + private func updateInteractiveMovementKeys(movingFrom source: IndexPath, to target: IndexPath) { + guard interactiveMovementKeys != nil else { return } + var keys = dataSource.snapshot().itemIdentifiers + guard keys.indices.contains(source.item) else { return } + let key = keys.remove(at: source.item) + keys.insert(key, at: min(max(target.item, 0), keys.count)) + interactiveMovementKeys = keys + } + private func item(at indexPath: IndexPath) -> NativeListItem? { if let key = dataSource.itemIdentifier(for: indexPath), let item = itemsByKey[key] { return item @@ -2049,7 +2073,9 @@ extension NativeListView: UICollectionViewDelegateFlowLayout { atCurrentIndexPath currentIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath ) -> IndexPath { - interactiveReorderUsesAtomicTargeting ? currentIndexPath : proposedIndexPath + guard !interactiveReorderUsesAtomicTargeting else { return currentIndexPath } + updateInteractiveMovementKeys(movingFrom: originalIndexPath, to: proposedIndexPath) + return proposedIndexPath } func collectionView( @@ -2057,7 +2083,9 @@ extension NativeListView: UICollectionViewDelegateFlowLayout { targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, toProposedIndexPath proposedIndexPath: IndexPath ) -> IndexPath { - interactiveReorderUsesAtomicTargeting ? originalIndexPath : proposedIndexPath + guard !interactiveReorderUsesAtomicTargeting else { return originalIndexPath } + updateInteractiveMovementKeys(movingFrom: originalIndexPath, to: proposedIndexPath) + return proposedIndexPath } func collectionView( @@ -2065,7 +2093,7 @@ extension NativeListView: UICollectionViewDelegateFlowLayout { layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath ) -> CGSize { - guard let config, let item = item(at: indexPath) else { return .zero } + guard let config, let item = layoutItem(at: indexPath) else { return .zero } let insets = flowLayout.sectionInset if config.orientation == "horizontal" { let width: CGFloat = item.type == "rail" ? railWidth(item) : item.type == "mediaTile" ? 200 : 280 From 5bd245d7442c3c7c951ed98e316187790edd6fad Mon Sep 17 00:00:00 2001 From: huhuanming Date: Tue, 15 Sep 2026 14:19:47 +0800 Subject: [PATCH 3/3] chore: bump packages to 3.0.135 Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 9 +++++++++ native-modules/native-logger/package.json | 2 +- native-modules/react-native-aes-crypto/package.json | 2 +- native-modules/react-native-app-update/package.json | 2 +- native-modules/react-native-async-storage/package.json | 2 +- .../react-native-background-thread/package.json | 2 +- native-modules/react-native-bundle-crypto/package.json | 2 +- native-modules/react-native-bundle-update/package.json | 2 +- .../package.json | 2 +- native-modules/react-native-cloud-fs/package.json | 2 +- .../react-native-cloud-kit-module/package.json | 2 +- native-modules/react-native-device-utils/package.json | 2 +- native-modules/react-native-dns-lookup/package.json | 2 +- .../react-native-get-random-values/package.json | 2 +- native-modules/react-native-keychain-module/package.json | 2 +- native-modules/react-native-lite-card/package.json | 2 +- native-modules/react-native-network-info/package.json | 2 +- .../react-native-network-throttle/package.json | 2 +- native-modules/react-native-pbkdf2/package.json | 2 +- native-modules/react-native-perf-memory/package.json | 2 +- native-modules/react-native-perf-stats/package.json | 2 +- native-modules/react-native-ping/package.json | 2 +- .../react-native-range-downloader/package.json | 2 +- native-modules/react-native-sni-connect/package.json | 2 +- native-modules/react-native-splash-screen/package.json | 2 +- .../react-native-split-bundle-loader/package.json | 2 +- native-modules/react-native-tcp-socket/package.json | 2 +- native-modules/react-native-zip-archive/package.json | 2 +- native-views/react-native-auto-size-input/package.json | 2 +- native-views/react-native-chart-webview/package.json | 2 +- native-views/react-native-image/package.json | 4 ++-- native-views/react-native-native-list/package.json | 6 +++--- native-views/react-native-native-sheet/package.json | 2 +- native-views/react-native-pager-view/package.json | 4 ++-- native-views/react-native-perp-depth-bar/package.json | 2 +- native-views/react-native-scroll-guard/package.json | 2 +- native-views/react-native-segment-slider/package.json | 2 +- native-views/react-native-skeleton/package.json | 2 +- native-views/react-native-tab-view/package.json | 2 +- native-views/react-native-text-input/package.json | 2 +- native-views/react-native-text/package.json | 2 +- yarn.lock | 8 ++++---- 42 files changed, 57 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb526a08..e4263e2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [3.0.135] - 2026-09-15 + +### Bug Fixes +- **native-list (iOS)**: Keep row heights in sync while a wallet group is dragged in the wallet sidebar. UIKit interactive movement lays rows out in the in-flight order, but sizes were still resolved from the pre-drag snapshot, which stretched the neighboring row and clipped the passed group's name (OK-62492). + +### Chores +- Add the "Native List Wallet Sidebar Reorder" example page that replays the OK-62492 wallet sidebar recording. +- Bump all 40 publishable packages to 3.0.135. + ## [3.0.134] - 2026-09-15 ### Bug Fixes diff --git a/native-modules/native-logger/package.json b/native-modules/native-logger/package.json index 18eb6cbd..07e84e31 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.134", + "version": "3.0.135", "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 31a287b8..d9c21393 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.134", + "version": "3.0.135", "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 d7d2bc1f..b221704a 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.134", + "version": "3.0.135", "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 45e9153b..bf1814c4 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.134", + "version": "3.0.135", "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 6f27d78f..4156b6a0 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.134", + "version": "3.0.135", "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 11397df1..38433ad6 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.134", + "version": "3.0.135", "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 99bc76b1..7d2d0908 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.134", + "version": "3.0.135", "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 aeb318e1..b93ab334 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.134", + "version": "3.0.135", "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 d79f2d0c..224df344 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.134", + "version": "3.0.135", "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 ae24ee84..251e2b82 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.134", + "version": "3.0.135", "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 a908b570..342c5b3e 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.134", + "version": "3.0.135", "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 3882c9c4..e1f2114e 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.134", + "version": "3.0.135", "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 d9182d34..25779388 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.134", + "version": "3.0.135", "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-keychain-module/package.json b/native-modules/react-native-keychain-module/package.json index 91f14069..62ddbcca 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.134", + "version": "3.0.135", "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 e6626dfc..68b45701 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.134", + "version": "3.0.135", "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 e380d287..2db76d7f 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.134", + "version": "3.0.135", "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 36578cb5..168b15f0 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.134", + "version": "3.0.135", "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 c4210454..160a0ceb 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.134", + "version": "3.0.135", "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 3da5a367..624dd919 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.134", + "version": "3.0.135", "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 6580d6a3..d698d626 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.134", + "version": "3.0.135", "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 01958d23..83646eca 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.134", + "version": "3.0.135", "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 a7134dd8..0e5b2660 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.134", + "version": "3.0.135", "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 7d402007..267fbc4d 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.134", + "version": "3.0.135", "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 491925d2..dd68e69e 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.134", + "version": "3.0.135", "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 2c6ac705..07de60eb 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.134", + "version": "3.0.135", "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 50cc4ad2..79224693 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.134", + "version": "3.0.135", "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 a36ac30b..65832a4d 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.134", + "version": "3.0.135", "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 f088e4f5..c57a6f81 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.134", + "version": "3.0.135", "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 8b1da064..79be1b70 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.134", + "version": "3.0.135", "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 0d57a40e..7c5614d5 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.134", + "version": "3.0.135", "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.134", + "@onekeyfe/react-native-skeleton": "3.0.135", "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 e1e9df4e..643372bd 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.134", + "version": "3.0.135", "description": "Template-driven native RecyclerView and UICollectionView for React Native", "source": "./src/index.ts", "main": "./lib/module/index.js", @@ -83,8 +83,8 @@ "typescript": "^5.9.2" }, "peerDependencies": { - "@onekeyfe/react-native-image": "3.0.134", - "@onekeyfe/react-native-native-logger": "3.0.134", + "@onekeyfe/react-native-image": "3.0.135", + "@onekeyfe/react-native-native-logger": "3.0.135", "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 d2a4f688..5364a302 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.134", + "version": "3.0.135", "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/package.json b/native-views/react-native-pager-view/package.json index ad423331..a3b90120 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.134", + "version": "3.0.135", "description": "React Native wrapper for Android and iOS ViewPager", "source": "./src/index.tsx", "main": "./lib/module/index.js", @@ -66,7 +66,7 @@ "typescript": "^5.9.2" }, "peerDependencies": { - "@onekeyfe/react-native-native-logger": "3.0.134", + "@onekeyfe/react-native-native-logger": "3.0.135", "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 5d546967..91c225a7 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.134", + "version": "3.0.135", "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 1994bf76..929a9b24 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.134", + "version": "3.0.135", "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 8bd333d1..6cc67f5c 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.134", + "version": "3.0.135", "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 8a53fb46..8b88f5fb 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.134", + "version": "3.0.135", "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 fbac749f..16f00363 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.134", + "version": "3.0.135", "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 6503a287..8f5cf912 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.134", + "version": "3.0.135", "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 80c52b81..f9146238 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.134", + "version": "3.0.135", "description": "Opt-in native text rendering for React Native", "source": "./src/index.ts", "main": "./lib/module/index.js", diff --git a/yarn.lock b/yarn.lock index 2b7af108..8f1e2c8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3550,7 +3550,7 @@ __metadata: react-test-renderer: "npm:19.2.3" typescript: "npm:^5.9.2" peerDependencies: - "@onekeyfe/react-native-skeleton": 3.0.134 + "@onekeyfe/react-native-skeleton": 3.0.135 react: "*" react-native: "*" react-native-nitro-modules: 0.37.0 @@ -3651,8 +3651,8 @@ __metadata: react-native-nitro-modules: "npm:0.37.0" typescript: "npm:^5.9.2" peerDependencies: - "@onekeyfe/react-native-image": 3.0.134 - "@onekeyfe/react-native-native-logger": 3.0.134 + "@onekeyfe/react-native-image": 3.0.135 + "@onekeyfe/react-native-native-logger": 3.0.135 react: "*" react-native: "*" react-native-nitro-modules: 0.37.0 @@ -3804,7 +3804,7 @@ __metadata: react-native-builder-bob: "npm:^0.40.13" typescript: "npm:^5.9.2" peerDependencies: - "@onekeyfe/react-native-native-logger": 3.0.134 + "@onekeyfe/react-native-native-logger": 3.0.135 react: "*" react-native: "*" languageName: unknown