Skip to content

Commit

Permalink
Merge pull request #276 from GetStream/vishal/thread-remove-message-fix
Browse files Browse the repository at this point in the history
Updating removeMessage function to handle threads
  • Loading branch information
vishalnarkhede committed Mar 20, 2020
2 parents b765c27 + c7fefa8 commit 13bdeb7
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 14 deletions.
38 changes: 29 additions & 9 deletions src/channel_state.js
Original file line number Diff line number Diff line change
Expand Up @@ -251,23 +251,43 @@ export class ChannelState {
* @return {boolean} Returns if the message was removed
*/
removeMessage(messageToRemove) {
let removed = false;
const messages = this.messages.flatMap(message => {
const idMatch =
message.id && messageToRemove.id && message.id === messageToRemove.id;
let isRemoved = false;
if (messageToRemove.parent_id && this.threads[messageToRemove.parent_id]) {
const { removed, result: threadMessages } = this.removeMessageFromArray(
this.threads[messageToRemove.parent_id],
messageToRemove,
);
this.threads = this.threads[messageToRemove.parent_id].set(
messageToRemove.parent_id,
threadMessages,
);
isRemoved = removed;
} else {
const { removed, result: messages } = this.removeMessageFromArray(
this.messages,
messageToRemove,
);
this.messages = messages;
isRemoved = removed;
}

return isRemoved;
}

removeMessageFromArray = (msgArray, msg) => {
let removed = false;
const result = msgArray.flatMap(message => {
const idMatch = message.id && msg.id && message.id === msg.id;
if (idMatch) {
removed = true;
return [];
} else {
removed = true;
return message;
}
});

this.messages = messages;
return removed;
}

return { removed, result };
};
/**
* filterErrorMessages - Removes error messages from the channel state.
*
Expand Down
21 changes: 16 additions & 5 deletions types/stream-chat/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ export class Channel {
show(userId?: string): Promise<APIResponse>;
getMessagesById(messageIds: string[]): Promise<APIResponse>;

mute(options?: object): Promise<MuteAPIResponse>;
mute(options?: object): Promise<MuteChannelAPIResponse>;
unmute(options?: object): Promise<UnmuteAPIResponse>;
}

Expand Down Expand Up @@ -496,11 +496,16 @@ export interface BanUserAPIResponse extends APIResponse {}
export interface UnbanUserAPIResponse extends APIResponse {}

export interface MuteAPIResponse extends APIResponse {
mute: MuteResponse;
channel_mute: MuteChannelResponse;
mute: MuteUserResponse;
own_user: OwnUserResponse;
}

export interface MuteChannelAPIResponse extends APIResponse {
mute: MuteUserResponse;
own_user: OwnUserResponse;
channel_mute: ChannelMute;
}

export interface UnmuteAPIResponse extends APIResponse {}

export interface FlagAPIResponse extends APIResponse {
Expand Down Expand Up @@ -629,6 +634,7 @@ export interface OwnUserResponse extends UserResponse {
total_unread_count: number;
unread_channels: number;
mutes: Mute[];
channel_mutes: ChannelMute[];
}

export interface Mute {
Expand Down Expand Up @@ -689,19 +695,24 @@ export interface ReadResponse {
export interface MuteResponse {
user: UserResponse;
target?: UserResponse;
channel?: Channel;
created_at?: string;
updated_at?: string;
}

export interface MuteChannelResponse {
export interface MuteUserResponse extends MuteResponse {}
export interface ChannelMute {
user: UserResponse;
channel?: Channel;
expires?: string;
created_at?: string;
updated_at?: string;
}

export interface MuteChannelAPIResponse {
channel_mute: ChannelMute;
own_user: OwnUserResponse;
}

export interface FlagResponse {
created_by_automod: boolean;
user?: UserResponse;
Expand Down

0 comments on commit 13bdeb7

Please sign in to comment.