@onekeyfe/react-native-native-list 3.0.105 → 3.0.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/android/src/main/java/com/onekey/nativelist/NativeListAdapter.kt +16 -3
  2. package/android/src/main/java/com/onekey/nativelist/NativeListModels.kt +6 -0
  3. package/android/src/main/java/com/onekey/nativelist/NativeListRowView.kt +671 -52
  4. package/android/src/main/java/com/onekey/nativelist/NativeListView.kt +282 -54
  5. package/ios/HybridNativeList.swift +8 -2
  6. package/ios/NativeListCell.swift +630 -31
  7. package/ios/NativeListDesignAssets.swift +24 -1
  8. package/ios/RNCNativeListView.swift +216 -42
  9. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_account_error_custom.imageset/Contents.json +15 -0
  10. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_account_error_custom.imageset/icon.svg +14 -0
  11. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_all_networks_solid.imageset/Contents.json +15 -0
  12. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_all_networks_solid.imageset/icon.svg +12 -0
  13. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_apple_brand.imageset/Contents.json +15 -0
  14. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_apple_brand.imageset/icon.svg +6 -0
  15. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_bot_illus.imageset/Contents.json +15 -0
  16. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_bot_illus.imageset/icon.svg +15 -0
  17. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_crossed_small_solid.imageset/Contents.json +15 -0
  18. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_crossed_small_solid.imageset/icon.svg +3 -0
  19. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_globus_outline.imageset/Contents.json +15 -0
  20. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_globus_outline.imageset/icon.svg +7 -0
  21. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_google_illus.imageset/Contents.json +15 -0
  22. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_google_illus.imageset/icon.svg +18 -0
  23. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_lock_solid.imageset/Contents.json +15 -0
  24. package/ios/Resources/NativeListIcons.xcassets/onekey_selector_lock_solid.imageset/icon.svg +7 -0
  25. package/lib/module/NativeList.js +102 -8
  26. package/lib/module/NativeList.web.js +20 -2
  27. package/lib/module/avatarPrefetch.js +174 -0
  28. package/lib/module/validation.js +45 -2
  29. package/lib/module/web/NativeListAvatarWorker.js +542 -0
  30. package/lib/module/web/NativeListWebAvatarCache.js +267 -0
  31. package/lib/module/web/NativeListWebEngine.js +958 -47
  32. package/lib/typescript/src/NativeList.web.d.ts +2 -2
  33. package/lib/typescript/src/avatarPrefetch.d.ts +28 -0
  34. package/lib/typescript/src/models.d.ts +72 -4
  35. package/lib/typescript/src/web/NativeListWebAvatarCache.d.ts +6 -0
  36. package/lib/typescript/src/web/NativeListWebEngine.d.ts +10 -1
  37. package/package.json +2 -2
  38. package/src/NativeList.tsx +149 -13
  39. package/src/NativeList.web.tsx +30 -3
  40. package/src/avatarPrefetch.ts +236 -0
  41. package/src/models.ts +98 -7
  42. package/src/validation.ts +131 -2
  43. package/src/web/NativeListAvatarWorker.js +567 -0
  44. package/src/web/NativeListWebAvatarCache.ts +314 -0
  45. package/src/web/NativeListWebEngine.ts +1409 -60
@@ -41,6 +41,7 @@ internal class NativeListAdapter(
41
41
  private val createdRows = Collections.newSetFromMap(
42
42
  WeakHashMap<NativeListRowView, Boolean>(),
43
43
  )
44
+ var usesSelectorSourceScale = false
44
45
  var theme: JSONObject? = null
45
46
  var layout: String = "linear"
46
47
  var orientation: String = "vertical"
@@ -75,8 +76,9 @@ internal class NativeListAdapter(
75
76
  layout,
76
77
  orientation,
77
78
  position,
78
- selectedKeys.contains(item.key),
79
+ item.json.optBoolean("selected", false) || selectedKeys.contains(item.key),
79
80
  checkboxState,
81
+ useSourceScale = usesSelectorSourceScale,
80
82
  )
81
83
  }
82
84
 
@@ -85,14 +87,17 @@ internal class NativeListAdapter(
85
87
  position: Int,
86
88
  payloads: MutableList<Any>,
87
89
  ) {
88
- if (payloads.contains(SELECTION_PAYLOAD)) {
90
+ // OneKey patch: an unknown payload must retain full binding; validated echoes keep images alive.
91
+ // if (payloads.contains(SELECTION_PAYLOAD)) {
92
+ if (payloads.isNotEmpty() && payloads.all { it == SELECTION_PAYLOAD || it == SELECTION_ECHO_PAYLOAD }) {
89
93
  val item = itemAt(position) ?: return
94
+ if (payloads.contains(SELECTION_ECHO_PAYLOAD)) holder.rowView.bindStableSummary(item)
90
95
  holder.rowView.bindSelection(
91
96
  item,
92
97
  theme,
93
98
  layout,
94
99
  position,
95
- selectedKeys.contains(item.key),
100
+ item.json.optBoolean("selected", false) || selectedKeys.contains(item.key),
96
101
  checkboxState,
97
102
  )
98
103
  return
@@ -158,8 +163,16 @@ internal class NativeListAdapter(
158
163
 
159
164
  override fun areContentsTheSame(oldItem: NativeListItem, newItem: NativeListItem): Boolean =
160
165
  oldItem.revision == newItem.revision && oldItem.content == newItem.content
166
+
167
+ // OneKey patch: a theme/layout update or a diff spanning another baseline stays a full bind.
168
+ override fun getChangePayload(oldItem: NativeListItem, newItem: NativeListItem): Any? =
169
+ if (oldItem.key == newItem.key && oldItem.type == newItem.type &&
170
+ newItem.selectionUpdateFromContent == oldItem.content
171
+ ) SELECTION_ECHO_PAYLOAD else null
161
172
  }
162
173
  }
163
174
  }
164
175
 
165
176
  internal const val SELECTION_PAYLOAD = "selection"
177
+ // OneKey patch: internal payload, never exposed through the serialized row contract.
178
+ internal const val SELECTION_ECHO_PAYLOAD = "selectionEcho"
@@ -11,6 +11,12 @@ internal data class NativeListItem(
11
11
  val json: JSONObject,
12
12
  ) {
13
13
  val content: String = json.toString()
14
+ // OneKey patch: only a host-validated stable snapshot can request a lightweight diff payload.
15
+ var selectionUpdateFromContent: String? = null
16
+
17
+ // OneKey patch: migrated selectors keep source dimensions on narrow Android screens.
18
+ val usesSelectorSourceScale: Boolean
19
+ get() = if (type == "walletGroup") json.optJSONObject("parent")?.has("height") == true else json.has("height") && json.optString("presentation") in setOf("accountSelector", "networkSelector", "walletSidebar")
14
20
 
15
21
  val isSelectable: Boolean
16
22
  get() = !json.optBoolean("disabled", false) && type in SELECTABLE_TYPES