diff --git a/lib/controllers/room_chat.dart b/lib/controllers/room_chat.dart index 4043922..2db473e 100644 --- a/lib/controllers/room_chat.dart +++ b/lib/controllers/room_chat.dart @@ -17,11 +17,9 @@ import "package:nexus/models/requests/send_message.dart"; import "package:nexus/models/room.dart"; import "package:nexus/models/room_chat.dart"; -class RoomChatController(final (String roomId, String? withEventId) info) - extends AsyncNotifier { +class RoomChatController(final String roomId) extends AsyncNotifier { @override Future build() async { - final (roomId, eventId) = info; final client = ref.read(ClientController.provider.notifier); final room = ref.watch( RoomsController.provider.select((rooms) => rooms[roomId]), @@ -66,7 +64,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) .redactEvent( RedactEventRequest( eventId: event.eventId, - roomId: info.$1, + roomId: roomId, reason: reason, ), ); @@ -77,14 +75,14 @@ class RoomChatController(final (String roomId, String? withEventId) info) state = .loading(); final timelineKeys = ref - .read(RoomsController.provider.select((value) => value[info.$1])) + .read(RoomsController.provider.select((value) => value[roomId])) ?.timeline .keys; final response = await ref .read(ClientController.provider.notifier) .paginate( .new( - roomId: info.$1, + roomId: roomId, maxTimelineId: timelineKeys?.isNotEmpty == true ? timelineKeys?.reduce(min) : null, @@ -99,7 +97,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) .read(RoomsController.provider.notifier) .update( IMap({ - info.$1: Room( + roomId: Room( events: IMap.fromIterable( response.events.addAll(response.relatedEvents), keyMapper: (event) => event.rowId, @@ -128,7 +126,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) if (relationType == .edit) { baseContent = relation?.content; } else { - final provider = AttachmentController.provider(info.$1); + final provider = AttachmentController.provider(roomId); baseContent = ref.read(provider)?.$2; ref.invalidate(provider); } @@ -148,7 +146,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) final client = ref.read(ClientController.provider.notifier); final event = await client.sendMessage( SendMessageRequest( - roomId: info.$1, + roomId: roomId, baseContent: baseContent, mentions: Mentions( userIds: [ @@ -170,7 +168,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) .read(RoomsController.provider.notifier) .update( .new({ - info.$1: .new( + roomId: .new( events: .new({event.rowId: event}), clientSticky: .new({event.rowId}), ), @@ -187,7 +185,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) final client = ref.read(ClientController.provider.notifier); final allReactionEvents = await client.getRelatedEvents( .new( - roomId: info.$1, + roomId: roomId, eventId: event.eventId, relationType: "m.annotation", ), @@ -208,7 +206,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) if (reactionEvent != null) { await ref .watch(ClientController.provider.notifier) - .redactEvent(.new(eventId: reactionEvent.eventId, roomId: info.$1)); + .redactEvent(.new(eventId: reactionEvent.eventId, roomId: roomId)); } } @@ -217,7 +215,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) await client.sendEvent( .new( - roomId: info.$1, + roomId: roomId, type: EventType.reaction.type, content: ReactionContent(key: reaction), synchronous: true, @@ -229,7 +227,7 @@ class RoomChatController(final (String roomId, String? withEventId) info) } static final provider = AsyncNotifierProvider.family - .autoDispose( + .autoDispose( RoomChatController.new, ); } diff --git a/lib/helpers/extensions/build_event_options.dart b/lib/helpers/extensions/build_event_options.dart index a95da6d..5319f2b 100644 --- a/lib/helpers/extensions/build_event_options.dart +++ b/lib/helpers/extensions/build_event_options.dart @@ -27,9 +27,7 @@ extension BuildEventOptions on Event { final theme = Theme.of(context); final danger = theme.colorScheme.error; - final notifier = ref.read( - RoomChatController.provider((roomId, null)).notifier, - ); + final notifier = ref.read(RoomChatController.provider(roomId).notifier); final client = ref.read(ClientController.provider.notifier); final isPinned = ref diff --git a/lib/helpers/hooks/chat_scroll.dart b/lib/helpers/hooks/chat_scroll.dart index 9efd3b2..d8bfae8 100644 --- a/lib/helpers/hooks/chat_scroll.dart +++ b/lib/helpers/hooks/chat_scroll.dart @@ -15,7 +15,7 @@ final class ChatScroll({ required final ScrollController scrollController, required final Future Function(String id) jumpToId, }) { - factory use({ + static ChatScroll use({ required AsyncValue controllerData, required Future Function() loadOlder, required Future Function() markRead, diff --git a/lib/widgets/reaction_row.dart b/lib/widgets/reaction_row.dart index 195aa4f..56f2356 100644 --- a/lib/widgets/reaction_row.dart +++ b/lib/widgets/reaction_row.dart @@ -64,10 +64,8 @@ class const ReactionRow(final Event event, {super.key}) extends ConsumerWidget { enabled.value = false; try { final controller = ref.watch( - RoomChatController.provider(( - event.roomId, - null, - )).notifier, + RoomChatController.provider(event.roomId) + .notifier, ); if (selected) { diff --git a/lib/widgets/room_chat/room_chat.dart b/lib/widgets/room_chat/room_chat.dart index 186b2a6..9d81c16 100644 --- a/lib/widgets/room_chat/room_chat.dart +++ b/lib/widgets/room_chat/room_chat.dart @@ -24,14 +24,13 @@ final class const RoomChat({ required final String? roomId, required final bool isDesktop, required final bool showMembersByDefault, - final String? initialHighlightedEvent, super.key, }) extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final relatedEvent = useState(null); final relationType = useState(RelationType.reply); - final highlightedEvent = useState(initialHighlightedEvent); + final highlightedEvent = useState(null); final composerSize = useState(64); @@ -60,10 +59,7 @@ final class const RoomChat({ final roomId = this.roomId!; - final controllerProvider = RoomChatController.provider(( - roomId, - initialHighlightedEvent, - )); + final controllerProvider = RoomChatController.provider(roomId); final notifier = ref.watch(controllerProvider.notifier); final client = ref.read(ClientController.provider.notifier);