[MM-24061] Bring back channel sidebar hamburger icon for tablets (#4244)
* MM-24061 Bring back channel sidebar hamburger icon for tablets * Remove channel sidebar icon for iPads iPads run with a "persistent" sidebar already. * Better conditional logic from PR review + tests * Test tidying from PR review
This commit is contained in:
parent
1a605891fe
commit
67fa7aeb53
2 changed files with 86 additions and 7 deletions
|
|
@ -70,6 +70,14 @@ export default class ChannelNavBar extends PureComponent {
|
|||
}
|
||||
};
|
||||
|
||||
drawerButtonVisible = () => {
|
||||
if (Platform.OS === 'android') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return (!DeviceTypes.IS_TABLET || this.state.isSplitView || !this.state.permanentSidebar);
|
||||
};
|
||||
|
||||
render() {
|
||||
const {isLandscape, onPress, theme} = this.props;
|
||||
const {openMainSidebar, openSettingsSidebar} = this.props;
|
||||
|
|
@ -99,16 +107,11 @@ export default class ChannelNavBar extends PureComponent {
|
|||
break;
|
||||
}
|
||||
|
||||
let drawerButtonVisible = false;
|
||||
if (!DeviceTypes.IS_TABLET || this.state.isSplitView || !this.state.permanentSidebar) {
|
||||
drawerButtonVisible = true;
|
||||
}
|
||||
|
||||
return (
|
||||
<View style={[style.header, padding(isLandscape), {height}]}>
|
||||
<ChannelDrawerButton
|
||||
openSidebar={openMainSidebar}
|
||||
visible={drawerButtonVisible}
|
||||
visible={this.drawerButtonVisible()}
|
||||
/>
|
||||
<ChannelTitle
|
||||
onPress={onPress}
|
||||
|
|
|
|||
|
|
@ -2,15 +2,19 @@
|
|||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
import {Platform} from 'react-native';
|
||||
import {shallow} from 'enzyme';
|
||||
|
||||
import Preferences from '@mm-redux/constants/preferences';
|
||||
|
||||
import {DeviceTypes} from 'app/constants';
|
||||
import {DeviceTypes} from '@constants';
|
||||
|
||||
import ChannelNavBar from './channel_nav_bar';
|
||||
|
||||
jest.mock('react-intl');
|
||||
jest.mock('app/mattermost_managed', () => ({
|
||||
isRunningInSplitView: jest.fn().mockResolvedValue(false),
|
||||
}));
|
||||
|
||||
describe('ChannelNavBar', () => {
|
||||
const baseProps = {
|
||||
|
|
@ -49,4 +53,76 @@ describe('ChannelNavBar', () => {
|
|||
|
||||
expect(wrapper.state('permanentSidebar')).toBeDefined();
|
||||
});
|
||||
|
||||
test('drawerButtonVisible appears for android tablets', () => {
|
||||
const wrapper = shallow(
|
||||
<ChannelNavBar {...baseProps}/>,
|
||||
);
|
||||
|
||||
DeviceTypes.IS_TABLET = true;
|
||||
Platform.OS = 'android';
|
||||
|
||||
expect(wrapper.instance().drawerButtonVisible()).toBe(true);
|
||||
});
|
||||
|
||||
test('drawerButtonVisible appears for android phones', () => {
|
||||
const wrapper = shallow(
|
||||
<ChannelNavBar {...baseProps}/>,
|
||||
);
|
||||
|
||||
DeviceTypes.IS_TABLET = false;
|
||||
Platform.OS = 'android';
|
||||
|
||||
expect(wrapper.instance().drawerButtonVisible()).toBe(true);
|
||||
});
|
||||
|
||||
test('drawerButtonVisible appears for iOS phones', () => {
|
||||
const wrapper = shallow(
|
||||
<ChannelNavBar {...baseProps}/>,
|
||||
);
|
||||
|
||||
DeviceTypes.IS_TABLET = false;
|
||||
Platform.OS = 'ios';
|
||||
|
||||
expect(wrapper.instance().drawerButtonVisible()).toBe(true);
|
||||
});
|
||||
|
||||
test('drawerButtonVisible appears for iOS tablets with PermanentSidebar at default false, and not in splitview', () => {
|
||||
const wrapper = shallow(
|
||||
<ChannelNavBar {...baseProps}/>,
|
||||
);
|
||||
|
||||
wrapper.setState({permanentSidebar: false, isSplitView: false});
|
||||
|
||||
DeviceTypes.IS_TABLET = true;
|
||||
Platform.OS = 'ios';
|
||||
|
||||
expect(wrapper.instance().drawerButtonVisible()).toBe(true);
|
||||
});
|
||||
|
||||
test('drawerButtonVisible does not appear for iOS tablets with permanentSidebar enabled', () => {
|
||||
const wrapper = shallow(
|
||||
<ChannelNavBar {...baseProps}/>,
|
||||
);
|
||||
|
||||
wrapper.setState({permanentSidebar: true});
|
||||
|
||||
DeviceTypes.IS_TABLET = true;
|
||||
Platform.OS = 'ios';
|
||||
|
||||
expect(wrapper.instance().drawerButtonVisible()).toBe(false);
|
||||
});
|
||||
|
||||
test('drawerButtonVisible appears for iOS tablets with splitview enabled', () => {
|
||||
const wrapper = shallow(
|
||||
<ChannelNavBar {...baseProps}/>,
|
||||
);
|
||||
|
||||
wrapper.setState({isSplitView: true});
|
||||
|
||||
DeviceTypes.IS_TABLET = true;
|
||||
Platform.OS = 'ios';
|
||||
|
||||
expect(wrapper.instance().drawerButtonVisible()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue