[WOOMOB-3739] Prepare Product Detail for the Compose cutover (1/3) - #16393
[WOOMOB-3739] Prepare Product Detail for the Compose cutover (1/3)#16393hichamboushaba wants to merge 5 commits into
Conversation
Generated by 🚫 Danger |
|
|
62e0338 to
e903c9f
Compare
Use AppCompat's public overflow layout flag to apply the shared outlined icon contract while preserving its menu semantics.
Restore the stored server baseline from the draft's persisted remote ID after recreation. Refresh only products with a valid remote ID so review returns are safe across start modes.
Map legacy property cards into immutable UI snapshots with stable semantic keys, current callbacks, preserved ordering, and a terminal empty state for offline cache misses.
191f78b to
89ec3b6
Compare
There was a problem hiding this comment.
AI Code Review - No issues found. The changes look good.
The refreshProduct() / restoreStoredProduct() refactor is a solid defensive improvement: it removes the previous unconditional navArgs.mode as ProductDetailFragment.Mode.ShowProduct cast (a latent ClassCastException when refresh ran in the Add flow) and now handles every Mode branch explicitly, guarding against the sentinel DEFAULT_ADD_NEW_PRODUCT_ID. The new ProductDetailUiMapper / ProductDetailUiModel immutable mapping is clean and well covered by unit tests (order preservation, stable/unique keys, callback wiring, snapshot immutability). The WooDesignSystemToolbar visual polish (title font padding, overflow-button outlined styling, vertical centering, border width) is backed by Robolectric tests including RTL. All referenced resources (woo_ds_ic_regular_ellipsis_24dp, woo_ds_toolbar_icon_button_tint) exist.
PR housekeeping
- The new
ProductDetailUiMapperandProductDetailUiModelclasses are not yet referenced by any production UI (only by tests) — appears to be intentional scaffolding for a follow-up; just flagging so it isn't left orphaned. - Applied repo-specific
AGENTS.md/CLAUDE.mdguidance (store-app MVVM patterns, Kotlin conventions) when reviewing.
Automatic review · claude-opus-4-8 · Workflow run
How to reply to a finding
Reply on this review (or inline at the line the finding refers to) with one of:
@claude addressed- I made the change. Bot verifies against the next diff before marking resolved.@claude rejected: <reason>- Will not fix; reason gets quoted on the next review.@claude not-applicable- Finding does not apply (wrong file, already covered elsewhere, etc.).
The bot honours these on the next review pass.

Description
Part 1 of 3. Followed by #16394 and #16395.
Part of WOOMOB-3739 — does not close the ticket.
This is part 1 of 3 in the Product Detail Compose migration stack. It adds the prerequisites without changing the production Product Detail rendering route:
The toolbar bridge is reusable by later View-hosted screen migrations. Product-specific Share behavior remains in the final cutover PR.
Test Steps
Images/gif
RELEASE-NOTES.txtif necessary. Use the "[Internal]" label for non-user-facing changes.