-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Skippable Collection Member IDs #604
base: main
Are you sure you want to change the base?
Skippable Collection Member IDs #604
Conversation
…lection-member-ids
Updates:
|
I've just profiled the Onyx changes -- no significant changes in performance ✅ Profilingmain Onyx branchStartup / Open Big Report
Switch to Big Report
Send Message
Create Expense Flow
skippable member IDs Onyx branchOpen Big Report
Switch to Big Report
Send Message
Create Expense Flow
Reassure
Significant Changes To Duration
Show details
Meaningless Changes To DurationShow entries
Show details
Changes To CountThere are no entries Added ScenariosThere are no entries Removed ScenariosThere are no entries |
PR opened to review! |
value = null; | ||
} | ||
} catch (e) { | ||
// The key is not a collection one or something went wrong during split, so we proceed with the function's logic. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's add console.error
logging here so it's easier for the dev to get what went wrong.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I add this try/catch because splitCollectionMemberKey
is built in a way that will throw error mainly if the key passed is not a collection one. The problem with adding a console error is that it will spam the console very quickly as any normal key would trigger the catch flow, even if it's not "really" a problem.
changes = undefined; | ||
} | ||
} catch (e) { | ||
// The key is not a collection one or something went wrong during split, so we proceed with the function's logic. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same, let's add console.error
logging
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Answered here.
Details
This PR introduces a new configuration to
Onyx.init()
– the option to specify skippable collection member IDs. It will be possible to pass an array of collection member IDs (strings) which updates will be ignored when using Onyx methods. Additionally, any subscribers from these keys to won't receive any data from Onyx.Example:
Related Issues
Expensify/App#50360
Automated Tests
Unit tests were created to cover the changes.
Manual Tests
General tests in E/App:
Author Checklist
### Related Issues
section aboveTests
sectiontoggleReport
and notonIconClick
)myBool && <MyComponent />
.STYLE.md
) were followedAvatar
, I verified the components usingAvatar
are working as expected)/** comment above it */
this
properly so there are no scoping issues (i.e. foronClick={this.submit}
the methodthis.submit
should be bound tothis
in the constructor)this
are necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);
ifthis.submit
is never passed to a component event handler likeonClick
)Avatar
is modified, I verified thatAvatar
is working as expected in all cases)main
branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTest
steps.Screenshots/Videos
Android: Native
Screen.Recording.2025-01-16.at.17.44.45-compressed.mov
Android: mWeb Chrome
Screen.Recording.2025-01-16.at.17.49.30-compressed.mov
iOS: Native
Screen.Recording.2025-01-16.at.18.17.09-compressed.mov
iOS: mWeb Safari
Screen.Recording.2025-01-16.at.18.19.00-compressed.mov
MacOS: Chrome / Safari
Screen.Recording.2025-01-16.at.18.22.10-compressed.mov
Screen.Recording.2025-01-16.at.18.23.35-compressed.mov
MacOS: Desktop
Screen.Recording.2025-01-16.at.18.27.06-compressed.mov