[FIX] Load messages when hideSystemMessages is enabled (#2101)
* [WIP] Load messages when hideSystemMessages is enabled * Improve method name * Minor improvements Co-authored-by: Diego Mello <diegolmello@gmail.com>
This commit is contained in:
parent
1fa1ddd89f
commit
fcf6ed4dd7
|
@ -171,9 +171,9 @@ class List extends React.Component {
|
||||||
|
|
||||||
onEndReached = debounce(async() => {
|
onEndReached = debounce(async() => {
|
||||||
const {
|
const {
|
||||||
loading, end, messages
|
loading, end, messages, latest = messages[messages.length - 1].ts
|
||||||
} = this.state;
|
} = this.state;
|
||||||
if (loading || end || messages.length < 50) {
|
if (loading || end) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,16 +185,40 @@ class List extends React.Component {
|
||||||
// `offset` is `messages.length - 1` because we append thread start to `messages` obj
|
// `offset` is `messages.length - 1` because we append thread start to `messages` obj
|
||||||
result = await RocketChat.loadThreadMessages({ tmid, rid, offset: messages.length - 1 });
|
result = await RocketChat.loadThreadMessages({ tmid, rid, offset: messages.length - 1 });
|
||||||
} else {
|
} else {
|
||||||
result = await RocketChat.loadMessagesForRoom({ rid, t, latest: messages[messages.length - 1].ts });
|
result = await RocketChat.loadMessagesForRoom({ rid, t, latest });
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({ end: result.length < 50, loading: false });
|
this.setState({ end: result.length < 50, loading: false, latest: result[result.length - 1].ts }, () => this.loadMoreMessages(result));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.setState({ loading: false });
|
this.setState({ loading: false });
|
||||||
log(e);
|
log(e);
|
||||||
}
|
}
|
||||||
}, 300)
|
}, 300)
|
||||||
|
|
||||||
|
loadMoreMessages = (result) => {
|
||||||
|
const { end } = this.state;
|
||||||
|
|
||||||
|
if (end) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// handle servers with version < 3.0.0
|
||||||
|
let { hideSystemMessages = [] } = this.props;
|
||||||
|
if (!Array.isArray(hideSystemMessages)) {
|
||||||
|
hideSystemMessages = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hideSystemMessages.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const hasReadableMessages = result.filter(message => !message.t || (message.t && !hideSystemMessages.includes(message.t))).length > 0;
|
||||||
|
// if this batch doesn't contain any messages that will be displayed, we'll request a new batch
|
||||||
|
if (!hasReadableMessages) {
|
||||||
|
this.onEndReached();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onRefresh = () => this.setState({ refreshing: true }, async() => {
|
onRefresh = () => this.setState({ refreshing: true }, async() => {
|
||||||
const { messages } = this.state;
|
const { messages } = this.state;
|
||||||
const { rid, tmid } = this.props;
|
const { rid, tmid } = this.props;
|
||||||
|
|
Loading…
Reference in New Issue