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: update header in vc below modal #1228

Merged
merged 2 commits into from
Jan 5, 2022

Conversation

WoLewicki
Copy link
Member

@WoLewicki WoLewicki commented Dec 3, 2021

Description

Added a check for if we are in vc below modal since then we also want to update header as it is visible. Should resolve #1225.

Screenshots / GIFs

You can see them in #1225.

Test code and steps to reproduce

Test1228.tsx (set enableFreeze(false); in App.js to test it since we want updates in screen below).

Checklist

  • Included code example that can be used to test this change
  • Ensured that CI passes

@JoniVR
Copy link

JoniVR commented Dec 6, 2021

@WoLewicki Issue seems to be fixed, I thought it wasn't at first but someone pointed out that was due to testing in expo. Thanks a lot for the fix! Much appreciated!!

Copy link
Member

@kmagiera kmagiera left a comment

Choose a reason for hiding this comment

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

lgtm

@WoLewicki WoLewicki merged commit 7fa6353 into main Jan 5, 2022
@WoLewicki WoLewicki deleted the @wolewicki/update-vc-below-modal branch January 5, 2022 14:59
kkafar pushed a commit that referenced this pull request Jul 5, 2024
…2229)

## Description
When we push multiple screens with different configuration of
`headerShown` prop (e.g. 4 screens with visible header and one screen
with hidden header), open a modal and trigger rerenders on screens (e.g.
by changing the theme) there's a high chance that value of header hide
prop will be incorrect on the screen under the modal.

Big kudos to @WoLewicki for helping with debugging!

## Changes
`isPresentingVC` flag wasn't checking if current view controller was on
the top, which was causing header updates for all screens in the stack
(moreover it was done in non-deterministic order as context updates can
cause non-deterministic rerenders of particular screens), so check `&&
vc == nav.topViewController` was added to `isPresentingVC` flag in
`ios/RNSScreenStackHeaderConfig.mm` file. After that change, we still
update the screen which is directly under the modal, so fix merged in
#1228 is
still valid.

## Screenshots / GIFs

### Before


https://github.com/software-mansion/react-native-screens/assets/44415389/cf9b07fc-4e95-4362-95c7-ab387a94148e

### After


https://github.com/software-mansion/react-native-screens/assets/44415389/94a5dd72-498b-4959-a2de-1e6008d63895


## Test code and steps to reproduce
1. `Test2229` was added, so just render it in `TestsExample` app
2. Push a few screens with header
3. Push screen without header
4. Open modal
5. Background and open the app or change theme
6. Close the modal
7. Before the fix header should be visible on the screen although it
should be a screen without a header

## Checklist

- [X] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md
- [ ]
https://github.com/software-mansion/react-native-screens/blob/main/native-stack/README.md
- [ ]
https://github.com/software-mansion/react-native-screens/blob/main/src/types.tsx
- [ ]
https://github.com/software-mansion/react-native-screens/blob/main/src/native-stack/types.tsx
- [ ] Ensured that CI passes
ja1ns pushed a commit to WiseOwlTech/react-native-screens that referenced this pull request Oct 9, 2024
…oftware-mansion#2229)

## Description
When we push multiple screens with different configuration of
`headerShown` prop (e.g. 4 screens with visible header and one screen
with hidden header), open a modal and trigger rerenders on screens (e.g.
by changing the theme) there's a high chance that value of header hide
prop will be incorrect on the screen under the modal.

Big kudos to @WoLewicki for helping with debugging!

## Changes
`isPresentingVC` flag wasn't checking if current view controller was on
the top, which was causing header updates for all screens in the stack
(moreover it was done in non-deterministic order as context updates can
cause non-deterministic rerenders of particular screens), so check `&&
vc == nav.topViewController` was added to `isPresentingVC` flag in
`ios/RNSScreenStackHeaderConfig.mm` file. After that change, we still
update the screen which is directly under the modal, so fix merged in
software-mansion#1228 is
still valid.

## Screenshots / GIFs

### Before


https://github.com/software-mansion/react-native-screens/assets/44415389/cf9b07fc-4e95-4362-95c7-ab387a94148e

### After


https://github.com/software-mansion/react-native-screens/assets/44415389/94a5dd72-498b-4959-a2de-1e6008d63895


## Test code and steps to reproduce
1. `Test2229` was added, so just render it in `TestsExample` app
2. Push a few screens with header
3. Push screen without header
4. Open modal
5. Background and open the app or change theme
6. Close the modal
7. Before the fix header should be visible on the screen although it
should be a screen without a header

## Checklist

- [X] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md
- [ ]
https://github.com/software-mansion/react-native-screens/blob/main/native-stack/README.md
- [ ]
https://github.com/software-mansion/react-native-screens/blob/main/src/types.tsx
- [ ]
https://github.com/software-mansion/react-native-screens/blob/main/src/native-stack/types.tsx
- [ ] Ensured that CI passes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

iOS: Navbar BG color below modal does not change when appearance changes
3 participants