Repository navigation
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@DylanDylann Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a73854b5f7
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
dylanexpensify
left a comment
There was a problem hiding this comment.
Refactor, product input not required.
Reviewer Checklist
Screenshots/VideosScreen.Recording.2026-10-26.at.16.42.39.mov |
|
@daledah Subscribe to the receiver policy ID with a selector, not the whole parent report
const [parentReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${report?.parentReportID}`);
const invoiceReceiverPolicy = usePolicy(getInvoiceReceiverPolicyID(parentReport));
We already do this with a selector in const [invoiceReceiverPolicyID] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${getNonEmptyStringOnyxID(report?.parentReportID)}`, {
selector: getInvoiceReceiverPolicyID,
});
const invoiceReceiverPolicy = usePolicy(invoiceReceiverPolicyID);Please do the same in |
|
The fallback test asserts the duplicated name instead of what it's checking expect(actual.reportName?.replaceAll('\u00A0', ' ')).toBe('Sender Workspace & Sender Workspace');The test's own comment says "What matters here is that the cached 'Cached Receiver Name' never appears". But the assertion pins the exact const reportName = actual.reportName?.replaceAll('\u00A0', ' ');
expect(reportName).not.toContain('Cached Receiver Name');
expect(reportName).toContain('Sender Workspace');Also, the |
| function getParentNavigationSubtitle( | ||
| report: OnyxEntry<Report>, | ||
| policy: OnyxEntry<Policy>, | ||
| invoiceReceiverPolicy: OnyxEntry<Policy>, |
There was a problem hiding this comment.
NAB: policy and invoiceReceiverPolicy are adjacent params of the same type
policy: OnyxEntry<Policy>,
invoiceReceiverPolicy: OnyxEntry<Policy>,If a caller swaps these two, TypeScript won't catch it, and the subtitle would show the receiver's name where the sender's should be ("Receiver WS & Sender WS"). The function has 8 positional params now, and the tests already call it with undefined, undefined, undefined. Fine to leave for a follow-up so it doesn't widen this PR.
Explanation of Change
Fixed Issues
$ #66415
PROPOSAL:
Tests
Offline tests
Same as tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)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.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
MacOS: Chrome / Safari
Screen.Recording.2026-10-20.at.23.35.18.mov