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

View file

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