@@ -111,9 +111,6 @@ class MessagesRepository {
111111 _logger.i ("Socket reconnected, rejoining conversations" );
112112 for (var conversationId in _joinedConversations) {
113113 _socket.joinConversation (conversationId);
114- }
115-
116- for (var conversationId in _joinedConversations) {
117114 _reSyncMessageHistory (conversationId);
118115 }
119116 }
@@ -174,66 +171,7 @@ class MessagesRepository {
174171 }
175172 }
176173
177- Future <void > sendMessage (int senderId, int conversationId, String message) async {
178- _logger.i ("Sending message to conversation $conversationId : $message " );
179-
180- final request = CreateMessageRequest (
181- conversationId: conversationId,
182- senderId: senderId,
183- text: message,
184- );
185-
186- // 1. Create a temporary local message (with negative ID to avoid conflicts)
187- final tempId = - DateTime .now ().millisecondsSinceEpoch;
188-
189- final optimisticMessage = ChatMessage (
190- id: tempId,
191- text: message,
192- time: DateTime .now (),
193- isMine: true ,
194- isDelivered: false ,
195- isSeen: false ,
196- senderId: senderId,
197- conversationId: conversationId,
198- );
199-
200- // Add optimistic message
201- _cache.addMessage (conversationId, optimisticMessage);
202- _getNotifier (conversationId).add (null );
203-
204- MessageDto ? messageDto;
205-
206- try {
207- messageDto = await _socket.sendMessage (request);
208- } on BlockedUserError {
209- // Remove the optimistic message
210- _cache.removeMessage (conversationId, tempId);
211- _getNotifier (conversationId).add (null );
212- rethrow ;
213- }
214-
215- // If server sent nothing, just remove local optimistic message
216- if (messageDto == null ) {
217- _logger.e ("Failed to send message, server returned null" );
218- _cache.removeMessage (conversationId, tempId);
219- _getNotifier (conversationId).add (null );
220- return ;
221- }
222-
223- // Remove the optimistic message
224- _cache.removeMessage (conversationId, tempId);
225-
226- // Add the real server message
227- _cache.addMessage (
228- conversationId,
229- ChatMessage .fromDto (
230- messageDto,
231- currentUserId: _authState.user! .id! ,
232- ),
233- );
234-
235- _getNotifier (conversationId).add (null );
236- }
174+
237175
238176
239177 Future <bool > _reSyncMessageHistory (int conversationId) async {
@@ -315,6 +253,67 @@ class MessagesRepository {
315253 return messagesDto.metadata.hasMore ?? false ;
316254 }
317255
256+ Future <void > sendMessage (int senderId, int conversationId, String message) async {
257+ _logger.i ("Sending message to conversation $conversationId : $message " );
258+
259+ final request = CreateMessageRequest (
260+ conversationId: conversationId,
261+ senderId: senderId,
262+ text: message,
263+ );
264+
265+ // 1. Create a temporary local message (with negative ID to avoid conflicts)
266+ final tempId = - DateTime .now ().millisecondsSinceEpoch;
267+
268+ final optimisticMessage = ChatMessage (
269+ id: tempId,
270+ text: message,
271+ time: DateTime .now (),
272+ isMine: true ,
273+ isDelivered: false ,
274+ isSeen: false ,
275+ senderId: senderId,
276+ conversationId: conversationId,
277+ );
278+
279+ // Add optimistic message
280+ _cache.addMessage (conversationId, optimisticMessage);
281+ _getNotifier (conversationId).add (null );
282+
283+ MessageDto ? messageDto;
284+
285+ try {
286+ messageDto = await _socket.sendMessage (request);
287+ } on BlockedUserError {
288+ // Remove the optimistic message
289+ _cache.removeMessage (conversationId, tempId);
290+ _getNotifier (conversationId).add (null );
291+ rethrow ;
292+ }
293+
294+ // If server sent nothing, just remove local optimistic message
295+ if (messageDto == null ) {
296+ _logger.e ("Failed to send message, server returned null" );
297+ _cache.removeMessage (conversationId, tempId);
298+ _getNotifier (conversationId).add (null );
299+ return ;
300+ }
301+
302+ // Remove the optimistic message
303+ _cache.removeMessage (conversationId, tempId);
304+
305+ // Add the real server message
306+ _cache.addMessage (
307+ conversationId,
308+ ChatMessage .fromDto (
309+ messageDto,
310+ currentUserId: _authState.user! .id! ,
311+ ),
312+ );
313+
314+ _getNotifier (conversationId).add (null );
315+ }
316+
318317 void sendMarkAsSeen (int conversationId) async {
319318
320319 final req = MarkSeenRequest (
0 commit comments