Skip to content

feat: add a collapsible Market pager with NativeList parity - #97

Merged
huhuanming merged 14 commits into
mainfrom
codex/indexedbar-wechat-alignment
Sep 11, 2026
Merged

huhuanming merged 14 commits into
mainfrom
codex/indexedbar-wechat-alignment

Conversation

@huhuanming

@huhuanming huhuanming commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a cross-platform CollapsiblePagerView with coordinated collapsible headers, sticky navigation, retained page trees, and per-page scroll restoration
  • add production-style Market rows to NativeList, including token, stock, and perpetual layouts, source/status badges, long-press actions, skeleton loading, refresh, pagination, empty states, and errors
  • add interactive Market row leading actions across iOS, Android, and Web so Stocks and Top Coins can preserve their favorite controls after NativeList migration
  • add the mobile Market pager example with replay/live data adapters, filters, search, watchlists, assets, routing, and diagnostics
  • align compact section indexes and Android drag reordering across iOS, Android, and Web
  • update package metadata, internal peers, changelog, Yarn lockfile, and CocoaPods lock data for publishing

Review fixes

  • keep Web NativeList scroll offsets logical when the collapsible pager adds header and sticky insets
  • synchronize Android headers after restored or programmatic list scrolling and preserve React-owned dynamic padding
  • guard delayed Android callbacks across detach/reattach cycles
  • restore the last acknowledged iOS page after an interrupted detach without emitting a synthetic selection
  • use supported iOS gesture cancellation APIs
  • clamp fractional, invalid, and stale page selections and handle conditional or shrinking child sets
  • keep Web pager transitions settling until completion, recover cancelled gestures, honor locale RTL, and forward View props
  • map compact section-index touches to the labels actually rendered
  • clear stale segmented prices, preserve open Android row actions during quote-only patches, and retain existing rows after refresh or pagination failures
  • expose checked and disabled Market leading actions with accessibility labels, test IDs, recycled-cell reset coverage, and action dispatch on all three platforms
  • declare NativeList's native logger and same-version OneKeyImage dependencies
  • lazy-load the Market example and replay snapshot so unrelated native and Web routes avoid the heavy startup payload

Published package verification

  • release commit: 9c64500201eb5cfd2c9fbf73122db535c76e98f0
  • CI publication: package-publish run 34532390534 completed successfully
  • registry verification: all 39 publishable packages report 3.0.117 as both package version and latest
  • the published NativeList and Pager packages contain the former temporary patch behavior; app-monorepo consumes the published packages without patch-package overrides

Validation

  • yarn install --immutable: passed
  • NativeList Jest: 6 suites / 70 tests passed
  • NativeList native/Web parity contracts: 39 / 39 passed
  • NativeList TypeScript: passed
  • NativeList ESLint: 0 errors; 21 existing warnings
  • NativeList Bob prepare: passed
  • Android NativeList compileDebugKotlin on macOS with JDK 17: passed
  • app-monorepo consumer CocoaPods install on macOS: passed, 196 dependencies / 217 pods
  • app-monorepo Market integration regression tests: 10 suites / 119 tests passed
  • git diff --check: passed

Sources

Comment thread native-views/react-native-native-list/ios/RNCNativeListView.swift Outdated
@huhuanming huhuanming changed the title fix: align NativeList indexed bar styling fix: align NativeList section index and Android reordering Sep 10, 2026
@huhuanming huhuanming changed the title fix: align NativeList section index and Android reordering feat: sync native Market modules 3.0.113 and integration fixes Sep 10, 2026
…at-alignment

# Conflicts:
#	CHANGELOG.md
#	native-modules/native-logger/package.json
#	native-modules/react-native-aes-crypto/package.json
#	native-modules/react-native-app-update/package.json
#	native-modules/react-native-async-storage/package.json
#	native-modules/react-native-background-thread/package.json
#	native-modules/react-native-bundle-crypto/package.json
#	native-modules/react-native-bundle-update/package.json
#	native-modules/react-native-check-biometric-auth-changed/package.json
#	native-modules/react-native-cloud-fs/package.json
#	native-modules/react-native-cloud-kit-module/package.json
#	native-modules/react-native-device-utils/package.json
#	native-modules/react-native-dns-lookup/package.json
#	native-modules/react-native-get-random-values/package.json
#	native-modules/react-native-keychain-module/package.json
#	native-modules/react-native-lite-card/package.json
#	native-modules/react-native-network-info/package.json
#	native-modules/react-native-network-throttle/package.json
#	native-modules/react-native-pbkdf2/package.json
#	native-modules/react-native-perf-memory/package.json
#	native-modules/react-native-perf-stats/package.json
#	native-modules/react-native-ping/package.json
#	native-modules/react-native-range-downloader/package.json
#	native-modules/react-native-sni-connect/package.json
#	native-modules/react-native-splash-screen/package.json
#	native-modules/react-native-split-bundle-loader/package.json
#	native-modules/react-native-tcp-socket/package.json
#	native-modules/react-native-zip-archive/package.json
#	native-views/react-native-auto-size-input/package.json
#	native-views/react-native-chart-webview/package.json
#	native-views/react-native-image/package.json
#	native-views/react-native-native-list/package.json
#	native-views/react-native-pager-view/package.json
#	native-views/react-native-perp-depth-bar/package.json
#	native-views/react-native-scroll-guard/package.json
#	native-views/react-native-segment-slider/package.json
#	native-views/react-native-skeleton/package.json
#	native-views/react-native-tab-view/package.json
#	native-views/react-native-text-input/package.json
#	native-views/react-native-text/package.json
#	yarn.lock
@socket-security

socket-security Bot commented Sep 10, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​jsdom@​26.1.0951001009370

View full report

@socket-security

socket-security Bot commented Sep 10, 2026

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: npm data-urls is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: native-views/react-native-native-list/package.jsonnpm/jsdom@26.1.0npm/data-urls@5.0.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/data-urls@5.0.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm rrweb-cssom is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: native-views/react-native-native-list/package.jsonnpm/jsdom@26.1.0npm/rrweb-cssom@0.8.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/rrweb-cssom@0.8.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@huhuanming huhuanming changed the title feat: sync native Market modules 3.0.113 and integration fixes feat: add CollapsiblePagerView and Market NativeList parity Sep 10, 2026
@huhuanming huhuanming changed the title feat: add CollapsiblePagerView and Market NativeList parity feat: add a collapsible Market pager with NativeList parity Sep 10, 2026

@originalix originalix left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

基于当前 head 9c645002 的静态审查,以下三个问题建议修复。

Comment thread native-views/react-native-pager-view/src/PagerView.web.tsx Outdated
Comment thread native-views/react-native-pager-view/src/CollapsiblePagerView.tsx
Comment thread native-views/react-native-native-list/src/web/NativeListWebEngine.ts Outdated
@huhuanming
huhuanming merged commit bcaca5a into main Sep 11, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants