forked from Ivasoft/mattermost-mobile
91 lines
3.7 KiB
JavaScript
91 lines
3.7 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import React from 'react';
|
|
import {Dimensions, View} from 'react-native';
|
|
import {KeyboardTrackingView} from 'react-native-keyboard-tracking-view';
|
|
|
|
import Autocomplete, {AUTOCOMPLETE_MAX_HEIGHT} from 'app/components/autocomplete';
|
|
import ChannelLoader from 'app/components/channel_loader';
|
|
import FileUploadPreview from 'app/components/file_upload_preview';
|
|
import NetworkIndicator from 'app/components/network_indicator';
|
|
import PostTextbox from 'app/components/post_textbox';
|
|
import SafeAreaView from 'app/components/safe_area_view';
|
|
import StatusBar from 'app/components/status_bar';
|
|
import {DeviceTypes} from 'app/constants';
|
|
|
|
import LocalConfig from 'assets/config';
|
|
|
|
import ChannelBase, {ClientUpgradeListener, style} from './channel_base';
|
|
import ChannelNavBar from './channel_nav_bar';
|
|
import ChannelPostList from './channel_post_list';
|
|
|
|
const ACCESSORIES_CONTAINER_NATIVE_ID = 'channelAccessoriesContainer';
|
|
const CHANNEL_POST_TEXTBOX_CURSOR_CHANGE = 'onChannelTextBoxCursorChange';
|
|
const CHANNEL_POST_TEXTBOX_VALUE_CHANGE = 'onChannelTextBoxValueChange';
|
|
|
|
export default class ChannelIOS extends ChannelBase {
|
|
previewChannel = (passProps, options) => {
|
|
const {actions} = this.props;
|
|
const screen = 'ChannelPeek';
|
|
|
|
actions.peek(screen, passProps, options);
|
|
};
|
|
|
|
optionalProps = {previewChannel: this.previewChannel};
|
|
|
|
render() {
|
|
const {height} = Dimensions.get('window');
|
|
const {currentChannelId} = this.props;
|
|
|
|
const channelLoaderStyle = [style.channelLoader, {height}];
|
|
if ((DeviceTypes.IS_IPHONE_WITH_INSETS || DeviceTypes.IS_TABLET)) {
|
|
channelLoaderStyle.push(style.iOSHomeIndicator);
|
|
}
|
|
|
|
const drawerContent = (
|
|
<React.Fragment>
|
|
<SafeAreaView>
|
|
<StatusBar/>
|
|
<NetworkIndicator/>
|
|
<ChannelNavBar
|
|
openChannelDrawer={this.openChannelSidebar}
|
|
openSettingsDrawer={this.openSettingsSidebar}
|
|
onPress={this.goToChannelInfo}
|
|
/>
|
|
<ChannelPostList
|
|
updateNativeScrollView={this.updateNativeScrollView}
|
|
/>
|
|
<View nativeID={ACCESSORIES_CONTAINER_NATIVE_ID}>
|
|
<FileUploadPreview/>
|
|
<Autocomplete
|
|
maxHeight={AUTOCOMPLETE_MAX_HEIGHT}
|
|
onChangeText={this.handleAutoComplete}
|
|
cursorPositionEvent={CHANNEL_POST_TEXTBOX_CURSOR_CHANGE}
|
|
valueEvent={CHANNEL_POST_TEXTBOX_VALUE_CHANGE}
|
|
/>
|
|
</View>
|
|
<ChannelLoader
|
|
height={height}
|
|
style={channelLoaderStyle}
|
|
/>
|
|
{LocalConfig.EnableMobileClientUpgrade && <ClientUpgradeListener/>}
|
|
</SafeAreaView>
|
|
<KeyboardTrackingView
|
|
ref={this.keyboardTracker}
|
|
scrollViewNativeID={currentChannelId}
|
|
accessoriesContainerID={ACCESSORIES_CONTAINER_NATIVE_ID}
|
|
>
|
|
<PostTextbox
|
|
cursorPositionEvent={CHANNEL_POST_TEXTBOX_CURSOR_CHANGE}
|
|
valueEvent={CHANNEL_POST_TEXTBOX_VALUE_CHANGE}
|
|
ref={this.postTextbox}
|
|
/>
|
|
</KeyboardTrackingView>
|
|
</React.Fragment>
|
|
);
|
|
|
|
return this.renderChannel(drawerContent, this.optionalProps);
|
|
}
|
|
}
|