Compare commits
2 Commits
develop
...
fix.scroll
Author | SHA1 | Date |
---|---|---|
Reinaldo Neto | 7d28758fe7 | |
Reinaldo Neto | 5c75be6ac5 |
|
@ -6,7 +6,7 @@ import scrollPersistTaps from '../lib/methods/helpers/scrollPersistTaps';
|
||||||
interface IKeyboardViewProps extends KeyboardAwareScrollViewProps {
|
interface IKeyboardViewProps extends KeyboardAwareScrollViewProps {
|
||||||
keyboardVerticalOffset?: number;
|
keyboardVerticalOffset?: number;
|
||||||
scrollEnabled?: boolean;
|
scrollEnabled?: boolean;
|
||||||
children: React.ReactElement[] | React.ReactElement;
|
children: React.ReactElement[] | React.ReactElement | null | (React.ReactElement | null)[];
|
||||||
}
|
}
|
||||||
|
|
||||||
const KeyboardView = ({ style, contentContainerStyle, scrollEnabled, keyboardVerticalOffset, children }: IKeyboardViewProps) => (
|
const KeyboardView = ({ style, contentContainerStyle, scrollEnabled, keyboardVerticalOffset, children }: IKeyboardViewProps) => (
|
||||||
|
|
|
@ -27,6 +27,7 @@ import { IApplicationState, IServerRoom, IUser, SubscriptionType } from '../../d
|
||||||
import styles from './styles';
|
import styles from './styles';
|
||||||
import Options from './Options';
|
import Options from './Options';
|
||||||
import { Services } from '../../lib/services';
|
import { Services } from '../../lib/services';
|
||||||
|
import KeyboardView from '../../containers/KeyboardView';
|
||||||
|
|
||||||
interface IDirectoryViewProps {
|
interface IDirectoryViewProps {
|
||||||
navigation: CompositeNavigationProp<
|
navigation: CompositeNavigationProp<
|
||||||
|
@ -290,31 +291,33 @@ class DirectoryView extends React.Component<IDirectoryViewProps, IDirectoryViewS
|
||||||
const { isFederationEnabled, theme } = this.props;
|
const { isFederationEnabled, theme } = this.props;
|
||||||
return (
|
return (
|
||||||
<SafeAreaView style={{ backgroundColor: themes[theme].backgroundColor }} testID='directory-view'>
|
<SafeAreaView style={{ backgroundColor: themes[theme].backgroundColor }} testID='directory-view'>
|
||||||
<StatusBar />
|
<KeyboardView>
|
||||||
<FlatList
|
<StatusBar />
|
||||||
data={data}
|
<FlatList
|
||||||
style={styles.list}
|
data={data}
|
||||||
contentContainerStyle={styles.listContainer}
|
style={styles.list}
|
||||||
extraData={this.state}
|
contentContainerStyle={styles.listContainer}
|
||||||
keyExtractor={item => item._id}
|
extraData={this.state}
|
||||||
ListHeaderComponent={this.renderHeader}
|
keyExtractor={item => item._id}
|
||||||
renderItem={this.renderItem}
|
ListHeaderComponent={this.renderHeader}
|
||||||
ItemSeparatorComponent={List.Separator}
|
renderItem={this.renderItem}
|
||||||
keyboardShouldPersistTaps='always'
|
ItemSeparatorComponent={List.Separator}
|
||||||
ListFooterComponent={loading ? <ActivityIndicator /> : null}
|
keyboardShouldPersistTaps='always'
|
||||||
onEndReached={() => this.load({})}
|
ListFooterComponent={loading ? <ActivityIndicator /> : null}
|
||||||
/>
|
onEndReached={() => this.load({})}
|
||||||
{showOptionsDropdown ? (
|
|
||||||
<Options
|
|
||||||
theme={theme}
|
|
||||||
type={type}
|
|
||||||
globalUsers={globalUsers}
|
|
||||||
close={this.toggleDropdown}
|
|
||||||
changeType={this.changeType}
|
|
||||||
toggleWorkspace={this.toggleWorkspace}
|
|
||||||
isFederationEnabled={isFederationEnabled}
|
|
||||||
/>
|
/>
|
||||||
) : null}
|
{showOptionsDropdown ? (
|
||||||
|
<Options
|
||||||
|
theme={theme}
|
||||||
|
type={type}
|
||||||
|
globalUsers={globalUsers}
|
||||||
|
close={this.toggleDropdown}
|
||||||
|
changeType={this.changeType}
|
||||||
|
toggleWorkspace={this.toggleWorkspace}
|
||||||
|
isFederationEnabled={isFederationEnabled}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
|
</KeyboardView>
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,6 +5,7 @@ import { FlatList } from 'react-native';
|
||||||
import { shallowEqual } from 'react-redux';
|
import { shallowEqual } from 'react-redux';
|
||||||
import { useNavigation } from '@react-navigation/native';
|
import { useNavigation } from '@react-navigation/native';
|
||||||
|
|
||||||
|
import KeyboardView from '../../containers/KeyboardView';
|
||||||
import * as HeaderButton from '../../containers/HeaderButton';
|
import * as HeaderButton from '../../containers/HeaderButton';
|
||||||
import * as List from '../../containers/List';
|
import * as List from '../../containers/List';
|
||||||
import SafeAreaView from '../../containers/SafeAreaView';
|
import SafeAreaView from '../../containers/SafeAreaView';
|
||||||
|
@ -82,29 +83,31 @@ const NewMessageView = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SafeAreaView testID='new-message-view'>
|
<SafeAreaView testID='new-message-view'>
|
||||||
<StatusBar />
|
<KeyboardView>
|
||||||
<FlatList
|
<StatusBar />
|
||||||
data={search.length > 0 ? search : chats}
|
<FlatList
|
||||||
keyExtractor={item => item._id || item.rid}
|
data={search.length > 0 ? search : chats}
|
||||||
ListHeaderComponent={<HeaderNewMessage maxUsers={maxUsers} onChangeText={handleSearch} />}
|
keyExtractor={item => item._id || item.rid}
|
||||||
renderItem={({ item }) => {
|
ListHeaderComponent={<HeaderNewMessage maxUsers={maxUsers} onChangeText={handleSearch} />}
|
||||||
const itemSearch = item as ISearch;
|
renderItem={({ item }) => {
|
||||||
const itemModel = item as TSubscriptionModel;
|
const itemSearch = item as ISearch;
|
||||||
|
const itemModel = item as TSubscriptionModel;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<UserItem
|
<UserItem
|
||||||
name={useRealName && itemSearch.fname ? itemSearch.fname : itemModel.name}
|
name={useRealName && itemSearch.fname ? itemSearch.fname : itemModel.name}
|
||||||
username={itemSearch.search ? itemSearch.username : itemModel.name}
|
username={itemSearch.search ? itemSearch.username : itemModel.name}
|
||||||
onPress={() => goRoom(itemModel)}
|
onPress={() => goRoom(itemModel)}
|
||||||
testID={`new-message-view-item-${item.name}`}
|
testID={`new-message-view-item-${item.name}`}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
ItemSeparatorComponent={List.Separator}
|
ItemSeparatorComponent={List.Separator}
|
||||||
ListFooterComponent={List.Separator}
|
ListFooterComponent={List.Separator}
|
||||||
contentContainerStyle={{ backgroundColor: colors.backgroundColor }}
|
contentContainerStyle={{ backgroundColor: colors.backgroundColor }}
|
||||||
keyboardShouldPersistTaps='always'
|
keyboardShouldPersistTaps='always'
|
||||||
/>
|
/>
|
||||||
|
</KeyboardView>
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,7 @@ import { Header } from '@react-navigation/elements';
|
||||||
import { CompositeNavigationProp, RouteProp } from '@react-navigation/native';
|
import { CompositeNavigationProp, RouteProp } from '@react-navigation/native';
|
||||||
import { Dispatch } from 'redux';
|
import { Dispatch } from 'redux';
|
||||||
|
|
||||||
|
import KeyboardView from '../../containers/KeyboardView';
|
||||||
import database from '../../lib/database';
|
import database from '../../lib/database';
|
||||||
import RoomItem, { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from '../../containers/RoomItem';
|
import RoomItem, { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from '../../containers/RoomItem';
|
||||||
import log, { logEvent, events } from '../../lib/methods/helpers/log';
|
import log, { logEvent, events } from '../../lib/methods/helpers/log';
|
||||||
|
@ -1025,12 +1026,14 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SafeAreaView testID='rooms-list-view' style={{ backgroundColor: themes[theme].backgroundColor }}>
|
<SafeAreaView testID='rooms-list-view' style={{ backgroundColor: themes[theme].backgroundColor }}>
|
||||||
<StatusBar />
|
<KeyboardView>
|
||||||
{this.renderHeader()}
|
<StatusBar />
|
||||||
{this.renderScroll()}
|
{this.renderHeader()}
|
||||||
{/* TODO - this ts-ignore is here because the route props, on IBaseScreen*/}
|
{this.renderScroll()}
|
||||||
{/* @ts-ignore*/}
|
{/* TODO - this ts-ignore is here because the route props, on IBaseScreen*/}
|
||||||
{showServerDropdown ? <ServerDropdown navigation={navigation} theme={theme} /> : null}
|
{/* @ts-ignore*/}
|
||||||
|
{showServerDropdown ? <ServerDropdown navigation={navigation} theme={theme} /> : null}
|
||||||
|
</KeyboardView>
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,8 @@ export default StyleSheet.create({
|
||||||
flex: 1
|
flex: 1
|
||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
width: '100%'
|
width: '100%',
|
||||||
|
flex: 1
|
||||||
},
|
},
|
||||||
dropdownContainerHeader: {
|
dropdownContainerHeader: {
|
||||||
height: 41,
|
height: 41,
|
||||||
|
|
|
@ -39,6 +39,7 @@ import {
|
||||||
ICustomEmoji
|
ICustomEmoji
|
||||||
} from '../../definitions';
|
} from '../../definitions';
|
||||||
import { Services } from '../../lib/services';
|
import { Services } from '../../lib/services';
|
||||||
|
import KeyboardView from '../../containers/KeyboardView';
|
||||||
|
|
||||||
const QUERY_SIZE = 50;
|
const QUERY_SIZE = 50;
|
||||||
|
|
||||||
|
@ -327,18 +328,20 @@ class SearchMessagesView extends React.Component<ISearchMessagesViewProps, ISear
|
||||||
return (
|
return (
|
||||||
<SafeAreaView style={{ backgroundColor: themes[theme].backgroundColor }} testID='search-messages-view'>
|
<SafeAreaView style={{ backgroundColor: themes[theme].backgroundColor }} testID='search-messages-view'>
|
||||||
<StatusBar />
|
<StatusBar />
|
||||||
<View style={styles.searchContainer}>
|
<KeyboardView>
|
||||||
<FormTextInput
|
<View style={styles.searchContainer}>
|
||||||
autoFocus
|
<FormTextInput
|
||||||
label={I18n.t('Search')}
|
autoFocus
|
||||||
onChangeText={this.search}
|
label={I18n.t('Search')}
|
||||||
placeholder={I18n.t('Search_Messages')}
|
onChangeText={this.search}
|
||||||
testID='search-message-view-input'
|
placeholder={I18n.t('Search_Messages')}
|
||||||
/>
|
testID='search-message-view-input'
|
||||||
<Markdown msg={I18n.t('You_can_search_using_RegExp_eg')} theme={theme} />
|
/>
|
||||||
<View style={[styles.divider, { backgroundColor: themes[theme].separatorColor }]} />
|
<Markdown msg={I18n.t('You_can_search_using_RegExp_eg')} theme={theme} />
|
||||||
</View>
|
<View style={[styles.divider, { backgroundColor: themes[theme].separatorColor }]} />
|
||||||
{this.renderList()}
|
</View>
|
||||||
|
{this.renderList()}
|
||||||
|
</KeyboardView>
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ import styles from './styles';
|
||||||
import { IApplicationState, IBaseScreen, IMessage, SubscriptionType, TSubscriptionModel, TThreadModel } from '../../definitions';
|
import { IApplicationState, IBaseScreen, IMessage, SubscriptionType, TSubscriptionModel, TThreadModel } from '../../definitions';
|
||||||
import { getUidDirectMessage, debounce, isIOS } from '../../lib/methods/helpers';
|
import { getUidDirectMessage, debounce, isIOS } from '../../lib/methods/helpers';
|
||||||
import { Services } from '../../lib/services';
|
import { Services } from '../../lib/services';
|
||||||
|
import KeyboardView from '../../containers/KeyboardView';
|
||||||
|
|
||||||
const API_FETCH_COUNT = 50;
|
const API_FETCH_COUNT = 50;
|
||||||
|
|
||||||
|
@ -516,16 +517,18 @@ class ThreadMessagesView extends React.Component<IThreadMessagesViewProps, IThre
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SafeAreaView testID='thread-messages-view'>
|
<SafeAreaView testID='thread-messages-view'>
|
||||||
<StatusBar />
|
<KeyboardView>
|
||||||
{this.renderContent()}
|
<StatusBar />
|
||||||
{showFilterDropdown ? (
|
{this.renderContent()}
|
||||||
<Dropdown
|
{showFilterDropdown ? (
|
||||||
currentFilter={currentFilter}
|
<Dropdown
|
||||||
onFilterSelected={this.onFilterSelected}
|
currentFilter={currentFilter}
|
||||||
onClose={this.closeFilterDropdown}
|
onFilterSelected={this.onFilterSelected}
|
||||||
theme={theme}
|
onClose={this.closeFilterDropdown}
|
||||||
/>
|
theme={theme}
|
||||||
) : null}
|
/>
|
||||||
|
) : null}
|
||||||
|
</KeyboardView>
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue