make PinnedEventsController expose IList of eventRowIds

This commit is contained in:
Henry Hiles 2026-10-01 12:26:12 -04:00
commit 2e85b26511
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
2 changed files with 7 additions and 8 deletions

View file

@ -2,26 +2,25 @@ import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:hooks_riverpod/hooks_riverpod.dart"; import "package:hooks_riverpod/hooks_riverpod.dart";
import "package:nexus/controllers/event.dart"; import "package:nexus/controllers/event.dart";
import "package:nexus/controllers/pinned_ids.dart"; import "package:nexus/controllers/pinned_ids.dart";
import "package:nexus/models/event.dart";
class PinnedEventsController(final String roomId) class PinnedEventsController(final String roomId)
extends AsyncNotifier<IList<Event>> { extends AsyncNotifier<IList<int>> {
@override @override
Future<IList<Event>> build() async { Future<IList<int>> build() async {
final pinIds = ref.watch(PinnedIdsController.provider(roomId)); final pinIds = ref.watch(PinnedIdsController.provider(roomId));
return (await Future.wait( return (await Future.wait(
pinIds.map( pinIds.map(
(eventId) => ref.watch( (eventId) => ref.watch(
EventController.provider(.new(eventId: eventId, roomId: roomId)) EventController.provider(.new(eventId: eventId, roomId: roomId))
.future, .selectAsync((data) => data?.rowId),
), ),
), ),
)).nonNulls.toIList(); )).nonNulls.toIList();
} }
static final provider = AsyncNotifierProvider.family static final provider = AsyncNotifierProvider.family
.autoDispose<PinnedEventsController, IList<Event>, String>( .autoDispose<PinnedEventsController, IList<int>, String>(
PinnedEventsController.new, PinnedEventsController.new,
); );
} }

View file

@ -57,19 +57,19 @@ final class const PinnedEventsDrawer(
reverse: true, reverse: true,
itemCount: value.length, itemCount: value.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
final event = value.reversed[index]; final rowId = value.reversed[index];
return InkWell( return InkWell(
borderRadius: .circular(12), borderRadius: .circular(12),
onTap: () { onTap: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
jumpToEvent(event.rowId); jumpToEvent(rowId);
}, },
child: Padding( child: Padding(
padding: .symmetric(vertical: 4), padding: .symmetric(vertical: 4),
child: IgnorePointer( child: IgnorePointer(
child: EventRenderer( child: EventRenderer(
event.rowId, rowId,
roomId: roomId, roomId: roomId,
maxLines: 2, maxLines: 2,
getEventOptions: getEventOptions, getEventOptions: getEventOptions,