@@ -4,6 +4,8 @@ import { User } from '../user/user.model';
44import { Thread } from '../thread/thread.model' ;
55import { Message } from '../message/message.model' ;
66
7+ import * as _ from 'lodash' ;
8+
79const initialMessages : Message [ ] = [ ] ;
810
911interface 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