// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react';
import {StyleSheet, View, BackHandler, ToastAndroid} from 'react-native';
import {openMainSideMenu, openSettingsSideMenu} from '@actions/navigation';
import AnnouncementBanner from '@components/announcement_banner';
import GlobalThreadsList from '@components/global_threads';
import InteractiveDialogController from '@components/interactive_dialog_controller';
import KeyboardLayout from '@components/layout/keyboard_layout';
import NetworkIndicator from '@components/network_indicator';
import PostDraft from '@components/post_draft';
import {NavigationTypes} from '@constants';
import EventEmitter from '@mm-redux/utils/event_emitter';
import EphemeralStore from '@store/ephemeral_store';
import ChannelBase from './channel_base';
import ChannelNavBar from './channel_nav_bar';
import ChannelPostList from './channel_post_list';
let backPressedCount = 0;
export default class ChannelAndroid extends ChannelBase {
openMainSidebar = () => {
EventEmitter.emit(NavigationTypes.BLUR_POST_DRAFT);
openMainSideMenu();
};
openSettingsSidebar = () => {
EventEmitter.emit(NavigationTypes.BLUR_POST_DRAFT);
openSettingsSideMenu();
};
componentDidMount() {
super.componentDidMount();
BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
}
handleBackPress = () => {
if (!backPressedCount && EphemeralStore.getNavigationTopComponentId() === 'Channel') {
const {formatMessage} = this.context.intl;
backPressedCount++;
ToastAndroid.show(formatMessage({
id: 'mobile.android.back_handler_exit',
defaultMessage: 'Press back again to exit',
}), ToastAndroid.SHORT);
setTimeout(() => {
backPressedCount = 0;
}, 2000);
return true;
}
backPressedCount = 0;
return false;
};
componentWillUnmount() {
super.componentWillUnmount();
BackHandler.removeEventListener('hardwareBackPress', this.handleBackPress);
}
render() {
const {theme, viewingGlobalThreads} = this.props;
let component;
if (viewingGlobalThreads) {
component = (
);
} else {
component = this.renderLoadingOrFailedChannel();
if (!component) {
component = (
);
}
}
const drawerContent = (
<>
{component}
>
);
return (
<>
{drawerContent}
>
);
}
}
const style = StyleSheet.create({
flex: {
flex: 1,
},
});