@@ -84,7 +84,7 @@ actor ChatMessagesPreviewsStorage: ChatMessagesPreviewsStorageProtocol {
8484
8585 private func handle( events: EventsBunch ) async {
8686 var hasChanges = false
87-
87+
8888 for event in events. middlewareEvents {
8989 switch event. value {
9090 case let . chatStateUpdate( state) :
@@ -95,11 +95,15 @@ actor ChatMessagesPreviewsStorage: ChatMessagesPreviewsStorageProtocol {
9595 if await handleChatAddEvent ( spaceId: event. spaceID, contextId: events. contextId, data: data) {
9696 hasChanges = true
9797 }
98+ case let . chatDelete( data) :
99+ if handleChatDeleteEvent ( spaceId: event. spaceID, contextId: events. contextId, data: data) {
100+ hasChanges = true
101+ }
98102 default :
99103 break
100104 }
101105 }
102-
106+
103107 if hasChanges {
104108 previewsStream. send ( Array ( previewsBySpace. values) )
105109 }
@@ -125,11 +129,26 @@ actor ChatMessagesPreviewsStorage: ChatMessagesPreviewsStorageProtocol {
125129
126130 private func handleChatAddEvent( spaceId: String , contextId: String , data: ChatAddData ) async -> Bool {
127131 guard data. subIds. contains ( subscriptionId) else { return false }
128-
132+
129133 await handleChatLastMessage ( spaceId: spaceId, chatId: contextId, message: data. message, dependencies: data. dependencies. compactMap ( \. asDetails) )
130134 return true
131135 }
132-
136+
137+ private func handleChatDeleteEvent( spaceId: String , contextId: String , data: ChatDeleteData ) -> Bool {
138+ guard data. subIds. contains ( subscriptionId) else { return false }
139+
140+ let key = ChatMessagePreviewKey ( spaceId: spaceId, chatId: contextId)
141+ guard var preview = previewsBySpace [ key] else { return false }
142+
143+ guard let lastMessage = preview. lastMessage, lastMessage. id == data. id else {
144+ return false
145+ }
146+
147+ preview. lastMessage = nil
148+ previewsBySpace [ key] = preview
149+ return true
150+ }
151+
133152 private func handleChatLastMessage( spaceId: String , chatId: String , message: ChatMessage , dependencies: [ ObjectDetails ] ) async {
134153 guard message. hasMessage else { return }
135154
@@ -142,11 +161,12 @@ actor ChatMessagesPreviewsStorage: ChatMessagesPreviewsStorageProtocol {
142161
143162 let attachmentsIds = message. attachments. map ( \. target)
144163 let attachments = attachmentsIds. compactMap { id in dependencies. first { $0. id == id } }
145-
164+
146165 // TODO: change to full equality after MW fix
147166 let creator = dependencies. first { $0. id. hasSuffix ( message. creator) } . flatMap { try ? Participant ( details: $0) }
148-
167+
149168 let message = LastMessagePreview (
169+ id: message. id,
150170 creator: creator,
151171 text: messageTextBuilder. makeMessaeWithoutStyle ( content: message. message) ,
152172 createdAt: message. createdAtDate,
0 commit comments