Skip to content

Commit d2fa852

Browse files
committed
Add support for clear thread's messages or all
1 parent d5e84a9 commit d2fa852

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/app/message/messages.service.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { User } from '../user/user.model';
44
import { Thread } from '../thread/thread.model';
55
import { Message } from '../message/message.model';
66

7+
import * as _ from 'lodash';
8+
79
const initialMessages: Message[] = [];
810

911
interface IMessagesOperation extends Function {
@@ -26,6 +28,8 @@ export class MessagesService {
2628
// action streams
2729
create: Subject<Message> = new Subject<Message>();
2830
markThreadAsRead: Subject<any> = new Subject<any>();
31+
remove: Subject<Message> = new Subject<Message>();
32+
removeThreadMessages: Subject<any> = new Subject<any>();
2933

3034
constructor() {
3135
this.messages = this.updates
@@ -84,13 +88,41 @@ export class MessagesService {
8488
})
8589
.subscribe(this.updates);
8690

91+
// Remove all messages from particular thread
92+
this.removeThreadMessages
93+
.map( (thread: Thread) => {
94+
return (messages: any) => {
95+
_.remove(messages, (el: any) => {
96+
return el.id === thread.id
97+
});
98+
return messages;
99+
};
100+
})
101+
.subscribe(this.updates);
102+
103+
// Remove all messages from message stream
104+
this.remove
105+
.map( function(): IMessagesOperation {
106+
return (messages: Message[]) => {
107+
return messages = [];
108+
};
109+
})
110+
.subscribe(this.updates);
87111
}
88112

89113
// an imperative function call to this action stream
90114
addMessage(message: Message): void {
91115
this.newMessages.next(message);
92116
}
93117

118+
removeAllMessages() {
119+
this.remove.next();
120+
}
121+
122+
removeAllThreadMessages(thread: Thread) {
123+
this.removeThreadMessages.next(thread);
124+
}
125+
94126
messagesForThreadUser(thread: Thread, user: User): Observable<Message> {
95127
return this.newMessages
96128
.filter((message: Message) => {

0 commit comments

Comments
 (0)