diff --git a/src/app/message/messages.service.ts b/src/app/message/messages.service.ts index 7024fd1..0da98a9 100644 --- a/src/app/message/messages.service.ts +++ b/src/app/message/messages.service.ts @@ -4,6 +4,8 @@ import { User } from '../user/user.model'; import { Thread } from '../thread/thread.model'; import { Message } from '../message/message.model'; +import * as _ from 'lodash'; + const initialMessages: Message[] = []; interface IMessagesOperation extends Function { @@ -26,6 +28,8 @@ export class MessagesService { // action streams create: Subject = new Subject(); markThreadAsRead: Subject = new Subject(); + remove: Subject = new Subject(); + removeThreadMessages: Subject = new Subject(); constructor() { this.messages = this.updates @@ -84,6 +88,26 @@ export class MessagesService { }) .subscribe(this.updates); + // Remove all messages from particular thread + this.removeThreadMessages + .map( (thread: Thread) => { + return (messages: any) => { + _.remove(messages, (el: any) => { + return el.id === thread.id + }); + return messages; + }; + }) + .subscribe(this.updates); + + // Remove all messages from message stream + this.remove + .map( function(): IMessagesOperation { + return (messages: Message[]) => { + return messages = []; + }; + }) + .subscribe(this.updates); } // an imperative function call to this action stream @@ -91,6 +115,14 @@ export class MessagesService { this.newMessages.next(message); } + removeAllMessages() { + this.remove.next(); + } + + removeAllThreadMessages(thread: Thread) { + this.removeThreadMessages.next(thread); + } + messagesForThreadUser(thread: Thread, user: User): Observable { return this.newMessages .filter((message: Message) => {