Use timelines, encryption now works, except not fetching keys from old devices

This commit is contained in:
Henry Hiles 2026-01-06 16:31:51 -05:00
commit 3fd0d5f461
No known key found for this signature in database
4 changed files with 24 additions and 42 deletions

View file

@ -1,30 +1,18 @@
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:matrix/matrix.dart";
import "package:nexus/controllers/from_controller.dart";
class EventsController extends AsyncNotifier<GetRoomEventsResponse> {
class EventsController extends AsyncNotifier<Timeline> {
EventsController(this.room);
final Room room;
@override
Future<GetRoomEventsResponse> build({String? from}) async {
final response = await room.client.getRoomEvents(
room.id,
Direction.b,
from: from,
limit: 32,
);
if (ref.mounted) {
ref.watch(FromController.provider(room).notifier).set(response.end);
}
return response;
Future<Timeline> build({String? from}) => room.getTimeline();
Future<void> prev() async {
final timeline = await future;
await timeline.requestHistory();
}
Future<GetRoomEventsResponse> prev() async =>
build(from: ref.read(FromController.provider(room)));
static final provider = AsyncNotifierProvider.autoDispose
.family<EventsController, GetRoomEventsResponse, Room>(
EventsController.new,
);
.family<EventsController, Timeline, Room>(EventsController.new);
}