@@ -77,14 +77,7 @@ class SupabaseChatController {
7777
7878 void _onData (
7979 List <Map <String , dynamic >> newData,
80- List <Map <String , dynamic >> oldData,
8180 ) {
82- final deletedMessagesId = oldData
83- .map (
84- (e) => e['id' ].toString (),
85- )
86- .toList ();
87- _messages.removeWhere ((element) => deletedMessagesId.contains (element.id));
8881 for (var val in newData) {
8982 final author = _room.users.firstWhere (
9083 (u) => u.id == val['authorId' ],
@@ -112,7 +105,7 @@ class SupabaseChatController {
112105 /// then it will be necessary to call the [loadPreviousMessages] method to get
113106 /// the next page of messages
114107 Stream <List <types.Message >> get messages {
115- _messagesQuery ().then ((value) => _onData (value, [] ));
108+ _messagesQuery ().then ((value) => _onData (value));
116109 _client
117110 .channel ('${_config .schema }:${_config .messagesTableName }:${_room .id }' )
118111 .onPostgresChanges (
@@ -124,8 +117,7 @@ class SupabaseChatController {
124117 column: 'roomId' ,
125118 value: _room.id,
126119 ),
127- callback: (payload) =>
128- _onData ([payload.newRecord], [payload.oldRecord]),
120+ callback: (payload) => _onData ([payload.newRecord]),
129121 )
130122 .subscribe ();
131123 return _messagesController.stream;
@@ -135,7 +127,7 @@ class SupabaseChatController {
135127 /// page
136128 Future <void > loadPreviousMessages () async {
137129 _currentPage += 1 ;
138- await _messagesQuery ().then ((value) => _onData (value, [] ));
130+ await _messagesQuery ().then ((value) => _onData (value));
139131 }
140132
141133 /// Returns a stream of typing users from Supabase for a specified room.
@@ -168,6 +160,17 @@ class SupabaseChatController {
168160 'typing' : typing,
169161 };
170162
163+ /// Removes message.
164+ Future <bool > deleteMessage (String roomId, String messageId) async {
165+ final result =
166+ await SupabaseChatCore .instance.deleteMessage (roomId, messageId);
167+ if (result) {
168+ _messages.removeWhere ((e) => messageId == e.id);
169+ _messagesController.sink.add (_messages);
170+ }
171+ return result;
172+ }
173+
171174 void dispose () {
172175 _typingChannel.untrack ();
173176 }
0 commit comments