fix: scroll the pages New Message, Search for Rooms, Messages and Threads (#4952)

* [FIX] Scroll the pages Directory, New Message, Search for Rooms, Messages and Threads

* flex for the flatlist

* minor tweak at roomslistview and remove the keyboard from directoryview

---------

Co-authored-by: Gleidson Daniel Silva <gleidson10daniel@hotmail.com>
This commit is contained in:
Reinaldo Neto 2023-04-10 16:41:49 -03:00 committed by GitHub
parent 4b13045d1c
commit cf14ebea78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 67 additions and 55 deletions

View File

@ -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) => (

View File

@ -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,6 +83,7 @@ const NewMessageView = () => {
return ( return (
<SafeAreaView testID='new-message-view'> <SafeAreaView testID='new-message-view'>
<KeyboardView>
<StatusBar /> <StatusBar />
<FlatList <FlatList
data={search.length > 0 ? search : chats} data={search.length > 0 ? search : chats}
@ -105,6 +107,7 @@ const NewMessageView = () => {
contentContainerStyle={{ backgroundColor: colors.backgroundColor }} contentContainerStyle={{ backgroundColor: colors.backgroundColor }}
keyboardShouldPersistTaps='always' keyboardShouldPersistTaps='always'
/> />
</KeyboardView>
</SafeAreaView> </SafeAreaView>
); );
}; };

View File

@ -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';
@ -62,8 +63,8 @@ import { E2E_BANNER_TYPE, DisplayMode, SortBy, MAX_SIDEBAR_WIDTH, themes } from
import { Services } from '../../lib/services'; import { Services } from '../../lib/services';
type TNavigation = CompositeNavigationProp< type TNavigation = CompositeNavigationProp<
StackNavigationProp<ChatsStackParamList, 'RoomsListView'>, StackNavigationProp<ChatsStackParamList, 'RoomsListView'>,
CompositeNavigationProp<StackNavigationProp<ChatsStackParamList>, StackNavigationProp<DrawerParamList>> CompositeNavigationProp<StackNavigationProp<ChatsStackParamList>, StackNavigationProp<DrawerParamList>>
>; >;
interface IRoomsListViewProps { interface IRoomsListViewProps {
@ -907,7 +908,7 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
} }
}; };
getScrollRef = (ref: FlatList) => (this.scroll = ref); getScrollRef = (ref: FlatList) => this.scroll = ref;
renderListHeader = () => { renderListHeader = () => {
const { searching } = this.state; const { searching } = this.state;
@ -1025,9 +1026,11 @@ 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 }}>
<KeyboardView>
<StatusBar /> <StatusBar />
{this.renderHeader()} {this.renderHeader()}
{this.renderScroll()} {this.renderScroll()}
</KeyboardView>
{/* TODO - this ts-ignore is here because the route props, on IBaseScreen*/} {/* TODO - this ts-ignore is here because the route props, on IBaseScreen*/}
{/* @ts-ignore*/} {/* @ts-ignore*/}
{showServerDropdown ? <ServerDropdown navigation={navigation} theme={theme} /> : null} {showServerDropdown ? <ServerDropdown navigation={navigation} theme={theme} /> : null}

View File

@ -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,6 +328,7 @@ 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 />
<KeyboardView>
<View style={styles.searchContainer}> <View style={styles.searchContainer}>
<FormTextInput <FormTextInput
autoFocus autoFocus
@ -339,6 +341,7 @@ class SearchMessagesView extends React.Component<ISearchMessagesViewProps, ISear
<View style={[styles.divider, { backgroundColor: themes[theme].separatorColor }]} /> <View style={[styles.divider, { backgroundColor: themes[theme].separatorColor }]} />
</View> </View>
{this.renderList()} {this.renderList()}
</KeyboardView>
</SafeAreaView> </SafeAreaView>
); );
} }

View File

@ -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,6 +517,7 @@ class ThreadMessagesView extends React.Component<IThreadMessagesViewProps, IThre
return ( return (
<SafeAreaView testID='thread-messages-view'> <SafeAreaView testID='thread-messages-view'>
<KeyboardView>
<StatusBar /> <StatusBar />
{this.renderContent()} {this.renderContent()}
{showFilterDropdown ? ( {showFilterDropdown ? (
@ -526,6 +528,7 @@ class ThreadMessagesView extends React.Component<IThreadMessagesViewProps, IThre
theme={theme} theme={theme}
/> />
) : null} ) : null}
</KeyboardView>
</SafeAreaView> </SafeAreaView>
); );
} }