accessiblity fixes

This commit is contained in:
Henry Hiles 2026-03-01 14:40:14 -05:00
commit b594f5a1d1
No known key found for this signature in database
11 changed files with 147 additions and 118 deletions

View file

@ -4,23 +4,21 @@ import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/models/event.dart";
import "package:nexus/models/room.dart";
class MembersController extends AsyncNotifier<IList<Event>> {
class MembersController extends Notifier<IList<Event>> {
final Room room;
MembersController(this.room);
@override
Future<IList<Event>> build() async =>
(room.state["m.room.member"]?.values ?? [])
.map(
(eventRowId) => room.events.firstWhereOrNull(
(event) => event.rowId == eventRowId,
),
)
.nonNulls
.where((member) => member.content["membership"] == "join")
.toIList();
IList<Event> build() => (room.state["m.room.member"]?.values ?? [])
.map(
(eventRowId) =>
room.events.firstWhereOrNull((event) => event.rowId == eventRowId),
)
.nonNulls
.where((member) => member.content["membership"] == "join")
.toIList();
static final provider = AsyncNotifierProvider.family
static final provider = NotifierProvider.family
.autoDispose<MembersController, IList<Event>, Room>(
MembersController.new,
);

View file

@ -37,9 +37,7 @@ class MessageController extends AsyncNotifier<Message?> {
if (!ref.mounted) return null;
final members = await ref.watch(
MembersController.provider(config.room).future,
);
final members = ref.watch(MembersController.provider(config.room));
final author = members.firstWhereOrNull(
(member) => member.stateKey == event.authorId,
);

View file

@ -25,7 +25,7 @@ class RoomChatController extends AsyncNotifier<ChatController> {
@override
Future<ChatController> build() async {
final client = ref.watch(ClientController.provider.notifier);
final room = ref.read(RoomsController.provider)[roomId];
var room = ref.read(RoomsController.provider)[roomId];
if (room == null) return InMemoryChatController();
final state = await client.getRoomState(
@ -59,13 +59,16 @@ class RoomChatController extends AsyncNotifier<ChatController> {
const ISet.empty(),
);
room = ref.read(RoomsController.provider)[roomId];
if (room == null) return InMemoryChatController();
final messages = await ref.watch(
MessagesController.provider(
MessagesConfig(
room: room,
events: room.timeline
.map(
(timelineRowTuple) => room.events.firstWhereOrNull(
(timelineRowTuple) => room!.events.firstWhereOrNull(
(event) => event.rowId == timelineRowTuple.eventRowId,
),
)
@ -91,7 +94,7 @@ class RoomChatController extends AsyncNotifier<ChatController> {
} else {
final message = await ref.watch(
MessageController.provider(
MessageConfig(event: event, room: room, includeEdits: true),
MessageConfig(event: event, room: room!, includeEdits: true),
).future,
);
if (event.relationType == "m.replace") {