diff --git a/app/lib/methods/getCustomEmojis.js b/app/lib/methods/getCustomEmojis.js index a82aae586200b1444731210eea6c12a9bb8a8469..48fea4e4c549a5d1fa47c8d7b3067006f8716d53 100644 --- a/app/lib/methods/getCustomEmojis.js +++ b/app/lib/methods/getCustomEmojis.js @@ -15,9 +15,6 @@ const getLastMessage = () => { export default async function() { try { - if (!this.ddp.status) { - return; - } const lastMessage = getLastMessage(); let emojis = await this.ddp.call('listEmojiCustom'); emojis = emojis.filter(emoji => !lastMessage || emoji._updatedAt > lastMessage); diff --git a/app/static/images/message_empty.png b/app/static/images/message_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..d07e5dcf3d63f34e0085711318a065c73204cbb7 Binary files /dev/null and b/app/static/images/message_empty.png differ diff --git a/app/views/RoomView/ListView.js b/app/views/RoomView/ListView.js index a4cf6c7f36faa317d050aad73349a5c90c1bc693..f55fa43f7a7f502aea1b461998ce1a57d23607dd 100644 --- a/app/views/RoomView/ListView.js +++ b/app/views/RoomView/ListView.js @@ -1,7 +1,6 @@ import { ListView as OldList } from 'realm/react-native'; import React from 'react'; -import cloneReferencedElement from 'react-clone-referenced-element'; -import { ScrollView, ListView as OldList2 } from 'react-native'; +import { ScrollView, ListView as OldList2, ImageBackground } from 'react-native'; import moment from 'moment'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; @@ -63,22 +62,24 @@ export class List extends React.Component { }, 1000); render() { - return (<ListView - enableEmptySections - style={styles.list} - data={this.data} - keyExtractor={item => item._id} - onEndReachedThreshold={100} - renderFooter={this.props.renderFooter} - renderHeader={() => <Typing />} - onEndReached={() => this.props.onEndReached(this.data[this.data.length - 1])} - dataSource={this.dataSource} - renderRow={(item, previousItem) => this.props.renderRow(item, previousItem)} - initialListSize={1} - pageSize={20} - testID='room-view-messages' - {...scrollPersistTaps} - />); + return ( + <ListView + enableEmptySections + style={styles.list} + data={this.data} + keyExtractor={item => item._id} + onEndReachedThreshold={100} + renderFooter={this.props.renderFooter} + renderHeader={() => <Typing />} + onEndReached={() => this.props.onEndReached(this.data[this.data.length - 1])} + dataSource={this.dataSource} + renderRow={(item, previousItem) => this.props.renderRow(item, previousItem)} + initialListSize={1} + pageSize={20} + testID='room-view-messages' + {...scrollPersistTaps} + /> + ); } } @@ -170,16 +171,22 @@ export class ListView extends OldList2 { onKeyboardDidHide: undefined }); - return cloneReferencedElement( - <ScrollView {...props} />, - { - ref: this._setScrollComponentRef, - onContentSizeChange: this._onContentSizeChange, - onLayout: this._onLayout - }, - header, - bodyComponents, - footer, + const image = data.length === 0 ? require('../../static/images/message_empty.png') : null; + return ( + [ + <ImageBackground key='listview-background' source={image} style={styles.imageBackground} />, + <ScrollView + key='listview-scroll' + ref={this._setScrollComponentRef} + onContentSizeChange={this._onContentSizeChange} + onLayout={this._onLayout} + {...props} + > + {header} + {bodyComponents} + {footer} + </ScrollView> + ] ); } } diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index 362d23bff33790a3208ed66055d7923649823d96..e824b9aa931d5aaac50ae5d6fd16cf8e11f73aeb 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -271,10 +271,10 @@ export default class RoomView extends LoggedView { }; renderHeader = () => { - if (this.state.end) { - return <Text style={styles.loadingMore}>{I18n.t('Start_of_conversation')}</Text>; + if (!this.state.end) { + return <Text style={styles.loadingMore}>{I18n.t('Loading_messages_ellipsis')}</Text>; } - return <Text style={styles.loadingMore}>{I18n.t('Loading_messages_ellipsis')}</Text>; + return null; } renderList = () => { diff --git a/app/views/RoomView/styles.js b/app/views/RoomView/styles.js index 439f2fe99e628703be8a244187580c95b9fb199c..ab37be0c496227095da3ade825adc62e7969c492 100644 --- a/app/views/RoomView/styles.js +++ b/app/views/RoomView/styles.js @@ -47,5 +47,10 @@ export default StyleSheet.create({ }, loading: { flex: 1 + }, + imageBackground: { + width: '100%', + height: '100%', + position: 'absolute' } }); diff --git a/package.json b/package.json index 98e21fb4b3b446fc5b885367e51c854d8eee585d..a3b7365f445a3dc27f18b3b842f9632839efc69c 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "moment": "^2.22.2", "prop-types": "^15.6.2", "react": "^16.4.1", - "react-clone-referenced-element": "^1.0.1", "react-emojione": "^5.0.0", "react-native": "^0.56.0", "react-native-actionsheet": "^2.4.2",