make PinnedEventsController expose IList of eventRowIds
This commit is contained in:
parent
a91b45be31
commit
2e85b26511
2 changed files with 7 additions and 8 deletions
|
|
@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue