@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.
- package/android/src/main/java/com/onekey/nativelist/NativeListAdapter.kt +16 -3
- package/android/src/main/java/com/onekey/nativelist/NativeListModels.kt +6 -0
- package/android/src/main/java/com/onekey/nativelist/NativeListRowView.kt +671 -52
- package/android/src/main/java/com/onekey/nativelist/NativeListView.kt +282 -54
- package/ios/HybridNativeList.swift +8 -2
- package/ios/NativeListCell.swift +630 -31
- package/ios/NativeListDesignAssets.swift +24 -1
- package/ios/RNCNativeListView.swift +216 -42
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_account_error_custom.imageset/Contents.json +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_account_error_custom.imageset/icon.svg +14 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_all_networks_solid.imageset/Contents.json +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_all_networks_solid.imageset/icon.svg +12 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_apple_brand.imageset/Contents.json +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_apple_brand.imageset/icon.svg +6 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_bot_illus.imageset/Contents.json +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_bot_illus.imageset/icon.svg +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_crossed_small_solid.imageset/Contents.json +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_crossed_small_solid.imageset/icon.svg +3 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_globus_outline.imageset/Contents.json +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_globus_outline.imageset/icon.svg +7 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_google_illus.imageset/Contents.json +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_google_illus.imageset/icon.svg +18 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_lock_solid.imageset/Contents.json +15 -0
- package/ios/Resources/NativeListIcons.xcassets/onekey_selector_lock_solid.imageset/icon.svg +7 -0
- package/lib/module/NativeList.js +102 -8
- package/lib/module/NativeList.web.js +20 -2
- package/lib/module/avatarPrefetch.js +174 -0
- package/lib/module/validation.js +45 -2
- package/lib/module/web/NativeListAvatarWorker.js +542 -0
- package/lib/module/web/NativeListWebAvatarCache.js +267 -0
- package/lib/module/web/NativeListWebEngine.js +958 -47
- package/lib/typescript/src/NativeList.web.d.ts +2 -2
- package/lib/typescript/src/avatarPrefetch.d.ts +28 -0
- package/lib/typescript/src/models.d.ts +72 -4
- package/lib/typescript/src/web/NativeListWebAvatarCache.d.ts +6 -0
- package/lib/typescript/src/web/NativeListWebEngine.d.ts +10 -1
- package/package.json +2 -2
- package/src/NativeList.tsx +149 -13
- package/src/NativeList.web.tsx +30 -3
- package/src/avatarPrefetch.ts +236 -0
- package/src/models.ts +98 -7
- package/src/validation.ts +131 -2
- package/src/web/NativeListAvatarWorker.js +567 -0
- package/src/web/NativeListWebAvatarCache.ts +314 -0
- 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
|
-
|
|
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
|