Skip to content

Commit 1b08054

Browse files
Merge pull request #93 from GetStream/vishal/event-history-issue
CRNS-33: Fixing issue with event history when message list is empty
2 parents 061910d + 5e187b3 commit 1b08054

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/components/ChannelInner.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,9 @@ export class ChannelInner extends PureComponent {
469469
addToEventHistory = (e) => {
470470
this.setState((prevState) => {
471471
const lastMessageId =
472-
prevState.messages[prevState.messages.length - 1].id;
472+
prevState.messages.length > 0
473+
? prevState.messages[prevState.messages.length - 1].id
474+
: 'none';
473475

474476
if (!prevState.eventHistory[lastMessageId])
475477
return {
@@ -495,11 +497,20 @@ export class ChannelInner extends PureComponent {
495497
if (this.state.loadingMore || !this.state.hasMore) return;
496498
if (this._unmounted) return;
497499
this.setState({ loadingMore: true });
500+
501+
if (!this.state.messages.length === 0) {
502+
this.setState({
503+
loadingMore: false,
504+
});
505+
506+
return;
507+
}
508+
498509
const oldestMessage = this.state.messages[0]
499510
? this.state.messages[0]
500511
: null;
501512

502-
if (oldestMessage.status !== 'received') {
513+
if (oldestMessage && oldestMessage.status !== 'received') {
503514
this.setState({
504515
loadingMore: false,
505516
});

src/components/MessageList.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,16 @@ const MessageList = withChannelContext(
263263

264264
insertDates = (messages) => {
265265
const newMessages = [];
266+
if (messages.length === 0) {
267+
this.props.eventHistory.none.forEach((e) => {
268+
newMessages.push({
269+
type: 'channel.event',
270+
event: e,
271+
});
272+
});
273+
274+
return newMessages;
275+
}
266276

267277
for (const [i, message] of messages.entries()) {
268278
if (message.type === 'message.read' || message.deleted_at) {
@@ -512,11 +522,16 @@ const MessageList = withChannelContext(
512522
};
513523

514524
render() {
525+
const hasEventHistory =
526+
this.props.eventHistory &&
527+
Object.keys(this.props.eventHistory).length > 0;
528+
515529
// We can't provide ListEmptyComponent to FlatList when inverted flag is set.
516530
// https://github.com/facebook/react-native/issues/21196
517531
if (
518532
this.props.messages &&
519533
this.props.messages.length === 0 &&
534+
!hasEventHistory &&
520535
!this.props.threadList
521536
) {
522537
return <View style={{ flex: 1 }}>{this.renderEmptyState()}</View>;

0 commit comments

Comments
 (0)