diff --git a/lib/controllers/rooms_controller.dart b/lib/controllers/rooms_controller.dart index bcee62d..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"; @@ -40,11 +38,7 @@ class RoomsController extends Notifier> { ); Future update(IMap rooms, ISet leftRooms) async { - final merged = await rooms.entries.fold(Future.sync(() => state), ( - accF, - entry, - ) async { - final acc = await accF; + final merged = rooms.entries.fold(state, (acc, entry) { final roomId = entry.key; final incoming = entry.value; final existing = acc[roomId]; @@ -57,18 +51,15 @@ class RoomsController extends Notifier> { events: incoming.events.isEmpty ? existing.events : existing.events.addAll(incoming.events), - state: await Isolate.run(() { - final state = incoming.state.entries.fold( - existing.state, - (previousValue, event) => previousValue.add( - event.key, - (previousValue[event.key] ?? const IMap.empty()).addAll( - event.value, - ), + state: incoming.state.entries.fold( + existing.state, + (previousValue, event) => previousValue.add( + event.key, + (previousValue[event.key] ?? const IMap.empty()).addAll( + event.value, ), - ); - return state; - }), + ), + ), reset: false, hasFetchedMembers: incoming.hasFetchedMembers || existing.hasFetchedMembers, @@ -95,6 +86,7 @@ class RoomsController extends Notifier> { merged, (acc, roomId) => acc.remove(roomId), ); + state = prunedList; }