diff --git a/lib/controllers/room_chat_controller.dart b/lib/controllers/room_chat_controller.dart index 1f0fe2c..4412b2d 100644 --- a/lib/controllers/room_chat_controller.dart +++ b/lib/controllers/room_chat_controller.dart @@ -88,7 +88,7 @@ class RoomChatController extends AsyncNotifier> { ), ); - ref + await ref .watch(RoomsController.provider.notifier) .update( IMap({ diff --git a/lib/controllers/rooms_controller.dart b/lib/controllers/rooms_controller.dart index 382fac4..55a0d2b 100644 --- a/lib/controllers/rooms_controller.dart +++ b/lib/controllers/rooms_controller.dart @@ -1,5 +1,3 @@ -import "dart:isolate"; - import "package:fast_immutable_collections/fast_immutable_collections.dart"; import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:nexus/models/event.dart"; @@ -14,7 +12,7 @@ class RoomsController extends Notifier> { String roomId, IList state, { bool isMembers = false, - }) async => update( + }) => update( { roomId: Room( events: IMap.fromEntries( @@ -22,25 +20,24 @@ class RoomsController extends Notifier> { ), hasFetchedState: true, hasFetchedMembers: isMembers, - state: await Isolate.run(() { - final newState = state.fold( - const IMap>.empty(), - (previousValue, stateEvent) => previousValue.add( - stateEvent.type, - (previousValue[stateEvent.type] ?? const IMap.empty()).add( - stateEvent.stateKey!, - stateEvent.rowId, - ), + state: state.fold( + const IMap.empty(), + (previousValue, stateEvent) => previousValue.add( + stateEvent.type, + (previousValue[stateEvent.type] ?? const IMap.empty()).addAll( + IMap({ + if (stateEvent.stateKey != null) + stateEvent.stateKey!: stateEvent.rowId, + }), ), - ); - return newState; - }), + ), + ), ), }.toIMap(), const ISet.empty(), ); - void update(IMap rooms, ISet leftRooms) { + Future update(IMap rooms, ISet leftRooms) async { final merged = rooms.entries.fold(state, (acc, entry) { final roomId = entry.key; final incoming = entry.value;