allow sending emoji/stickers from emote packs

This commit is contained in:
Henry Hiles 2026-10-23 18:16:45 -04:00
commit 3754bc2feb
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -11,29 +11,35 @@ class RoomsController extends Notifier<IMap<String, Room>> {
@override
IMap<String, Room> build() => .new();
void addState(
String roomId,
IList<Event> state, {
bool isMembers = false,
}) => update(
.new({
roomId: Room(
events: .fromEntries(state.map((event) => .new(event.rowId, event))),
hasFetchedState: true,
hasFetchedMembers: isMembers,
state: .new(
state
.groupListsBy((event) => event.type)
.map(
(type, group) => .new(
type,
.fromEntries(group.map((e) => .new(e.stateKey!, e.rowId))),
),
),
),
),
}),
.new(),
void addState(String roomId, IList<Event> state, {bool isMembers = false}) =>
update(
.new({
roomId: stateRoom(state)
.copyWith(hasFetchedState: true, hasFetchedMembers: isMembers),
}),
.new(),
);
void addSpecificState(Iterable<Event> state) => update(
.new(
state
.groupListsBy((event) => event.roomId)
.map((roomId, roomState) => .new(roomId, stateRoom(roomState))),
),
);
static Room stateRoom(Iterable<Event> state) => Room(
events: .fromEntries(state.map((event) => .new(event.rowId, event))),
state: .new(
state
.groupListsBy((event) => event.type)
.map(
(type, group) => .new(
type,
.fromEntries(group.map((e) => .new(e.stateKey!, e.rowId))),
),
),
),
);
static IMap<String, IList<ReadReceipt>> mergeReceipts(