-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Hide Android status bar in landscape mode during conferences without immersive mode. #16675
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
base: master
Are you sure you want to change the base?
Hide Android status bar in landscape mode during conferences without immersive mode. #16675
Conversation
|
@saghul please review and let me know if any changes are required. |
|
Hi, thanks for your contribution! |
|
I think this should be done in JS using the StatusBar component. |
|
@saghul I’ve made the suggested changes.
Updated the PR accordingly. Please let me know if anything else needs to be adjusted! |
| _toolboxVisible: isToolboxVisible(state) | ||
| _toolboxVisible: isToolboxVisible(state), | ||
| // true when the conference object exists (we are in a joined conference) | ||
| _inConference: Boolean(state['features/base/conference'].conference) |
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.
You can leave this out, since this component is k ly rendered when we are joining a conference.
| _brandingStyles | ||
| ] }> | ||
| {/* Control the native status bar on Android only: hide when in a call and in landscape */} | ||
| { isAndroid |
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.
Why not do it for iOS too?
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 limited it to Android because the original request focused on Android’s immersive changes, so I assumed it was Android-specific. But you're right - StatusBar works on iOS too, so I’ve updated it to apply on both platforms.
|
@saghul I’ve addressed both review notes:
Updated the code accordingly. Let me know if anything else should be refined! |
saghul
left a comment
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.
@Calinteodor can you PTAL?
| styles.conference, | ||
| _brandingStyles | ||
| ] }> | ||
| {/* Control the native status bar on Android only: hide when in a call and in landscape */} |
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.
Update the commend about Android.
|
@saghul i have updated the comment. |
|
I don't think this is consistent because there are UI differences between Android and iOS. Please test on multiple iOS/Android devices. |
|
@Calinteodor I’ve updated the logic so the StatusBar behavior applies to both Android and iOS, using a simple Platform.OS === 'android' || Platform.OS === 'ios' guard. This keeps the behavior consistent across both platforms while avoiding unintended effects on other React Native targets. |
|
|
|
@saghul Since the immersive-mode removal was tied to Android (as mentioned earlier), I’d prefer to keep this update scoped to Android only for now. To avoid introducing any unverified UI changes on iOS, I’m leaving iOS behavior untouched in this PR. |
This PR implements the behavior requested in #16660.
It hides the Android status bar when the user is in a conference and the device is in landscape mode.
Immersive mode is not reintroduced (it was removed in #16513 due to Android 15 edge-to-edge issues).
Only the status bar is hidden, and gesture navigation remains fully functional.
Changes
isInCallflag to track whether a conference is active.updateStatusBarVisibility()helper toJitsiMeetActivity.isInCall == true, andorientation == ORIENTATION_LANDSCAPE.onConferenceTerminated/onReadyToClose),updateStatusBarVisibility()from:onConferenceJoinedonConferenceTerminatedonReadyToCloseonConfigurationChangedonResumeWindowInsetsControllerCompatWindowInsetsCompat.Type.statusBars()