feat: migrate txn duplicate to dynamic route#89572
feat: migrate txn duplicate to dynamic route#89572mananjadhav wants to merge 2 commits intoExpensify:mainfrom
Conversation
|
Dynamic suffix routing builds the modal screen by merging:
Our duplicate-review migrated suffixes are static path segments (duplicates/review/description, etc.). They don’t introduce :threadReportID in the suffix, so nothing in the suffix parser fills threadReportID. Historically, the full static URL was r/:threadReportID/..., so linking handed screens threadReportID directly. After migration to “suffix on top of r/:reportID”, the same logical id often arrives as reportID from the base route, while the screens still assume threadReportID in route.params. So the bug class is: same semantic id, different param names, depending on whether you navigated in-app vs refreshed a deep link, unless we normalize somewhere. Do you think it is covered with our existing implementation? Where do we fix this mismatch. Right now I've added a fallback of |
|
@mananjadhav Could you please share a little more info on which flows trigger this bug, and when |
Explanation of Change
Fixed Issues
$ #83869
PROPOSAL:
Tests
Offline tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari