Skip to content
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

fix(android): ensure Appearance change listener does not skip events #46017

Closed
wants to merge 1 commit into from

Conversation

vonovak
Copy link
Contributor

@vonovak vonovak commented Aug 14, 2024

Summary:

I'm able to reproduce a case when Appearance module methods are called in the following order:

starting point: dark mode enabled

  1. call setColorScheme light
  2. call getColorScheme, which sets colorScheme to light here
  3. onConfigurationChanged is called but if (colorScheme != newColorScheme) does not evaluate to true, so no event is dispatched to JS. That means JS is not in sync with the native state.

The issue was the getColorScheme had a side-effect of setting colorScheme private member (not sure what its use was). The fix remembers the last emitted color scheme value and emits event if new value is different.

Changelog:

[ANDROID] [FIXED] - ensure Appearance change listener does not skip events

Test Plan:

tested locally with RN tester

@facebook-github-bot facebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Aug 14, 2024
@vonovak vonovak changed the title fix(android): race condition with setColorScheme fix(android): ensure Appearance change listener does not skip events Aug 14, 2024
@facebook-github-bot facebook-github-bot added the Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. label Aug 14, 2024
Copy link
Contributor

@cipolleschi cipolleschi left a comment

Choose a reason for hiding this comment

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

The code makes sense and looks good to me.
Thanks for working on this, @vonovak

@facebook-github-bot
Copy link
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Sep 9, 2024
@facebook-github-bot
Copy link
Contributor

@cipolleschi merged this pull request in 7041ed2.

@react-native-bot
Copy link
Collaborator

This pull request was successfully merged by @vonovak in 7041ed2

When will my fix make it into a release? | How to file a pick request?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Merged This PR has been merged. Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants