* Update screens * Update login tests * Remove done * Fix failing tests * Update screens and components * Check styles fix * Update tests * Prevent setState call after component unmounts * Add empty setButtons func to dummy navigator * Remove platform check * Remove Platform import * Update react-native-navigation version * Add separate showModalOverCurrentContext function * check-style fixes * Remove overriding of AppDelegate's window * Fix modal over current context animation * Add showSearchModal navigation action * Check-style fix * Address review comments * Update SettingsSidebar and children * Update EditProfile screen * Update SettingsSidebar * Keep track of latest componentId to appear * Track componentId in state to use in navigation actions * Update FlaggedPosts and children * Update RecentMentions * Update Settings * Store componentIds in ephemeral store * Update AttachmentButton * Remove unnecessary dismissModal * Fix typo * Upate NotificationSettings * Update NotificationSettingsAutoResponder * Update NotificationSettingsMentions * Update NotificationSettingsMobile * Update CreateChannel and children * Update MoreChannels * Update ChannelPeek and children * Update ChannelNavBar and children * Update ChannelPostList and children * Update ChannelInfo and children * Update ChannelAddMembers * Update ChannelMembers * Update EditChannel * Fix setting of top bar buttons * Update Channel screen and children * Update PinnedPosts * Update LongPost * Update PostOptions * Update PostTextboxBase * Update EditPost * Check-styles fix * Update DisplaySettings * Update Timezone * Update SelectTimezone * Update IntlWrapper and Notification * Update InteractiveDialog and children * Update ExpandedAnnouncementBanner * Update ClientUpgradeListener * Update MoreDirectMessages * Update SelectorScreen * Update UserProfile * Update Thread * Update About * Update ImagePreview * Update TextPreview * Update AddReaction * Update ReactionList and children * Update Code * Update TermsOfService * Update Permalink * Update Permalink * Update ErrorTeamsList * Update Search * Remove navigator prop * Fix setButtons calls * Remove navigationComponentId * Fix test * Handle in-app notifs in global event handler * Fix in-app notification handling * Fix typo * Fix tests * Auto dismiss in-app notif after 5 seconds * Fix typo * Update overlay dismissal * Animate in-app notif dismissal and allow gesture dismissal
92 lines
3.7 KiB
JavaScript
92 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_X || 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);
|
|
}
|
|
}
|