parent
49f2dc55b8
commit
8da46dffe4
5 changed files with 75 additions and 16 deletions
|
|
@ -97,6 +97,25 @@ class RoomChatController(final ChatParams info)
|
|||
),
|
||||
);
|
||||
|
||||
void hideClientSticky(int eventRowId) => ref
|
||||
.read(RoomsController.provider.notifier)
|
||||
.update(
|
||||
.new({
|
||||
info.roomId: Room(
|
||||
resetClientSticky: true,
|
||||
clientSticky:
|
||||
ref
|
||||
.read(
|
||||
RoomsController.provider.select(
|
||||
(rooms) => rooms[info.roomId]?.clientSticky,
|
||||
),
|
||||
)
|
||||
?.remove(eventRowId) ??
|
||||
.new(),
|
||||
),
|
||||
}),
|
||||
);
|
||||
|
||||
Future<void> paginate(Direction direction) async {
|
||||
if (state.isLoading) return;
|
||||
|
||||
|
|
|
|||
|
|
@ -46,13 +46,16 @@ class RoomsController extends Notifier<IMap<String, Room>> {
|
|||
roomId,
|
||||
existing?.copyWith(
|
||||
hasMore: incoming.hasMore,
|
||||
clientSticky:
|
||||
(incoming.clientSticky.isEmpty == true
|
||||
? existing.clientSticky
|
||||
: existing.clientSticky.addAll(incoming.clientSticky))
|
||||
.removeWhere(
|
||||
(rowId) => incoming.timeline.values.contains(rowId),
|
||||
),
|
||||
clientSticky: incoming.resetClientSticky
|
||||
? incoming.clientSticky
|
||||
: (incoming.clientSticky.isEmpty == true
|
||||
? existing.clientSticky
|
||||
: existing.clientSticky.addAll(
|
||||
incoming.clientSticky,
|
||||
))
|
||||
.removeWhere(
|
||||
(rowId) => incoming.timeline.values.contains(rowId),
|
||||
),
|
||||
metadata: incoming.metadata ?? existing.metadata,
|
||||
events: incoming.events.isEmpty
|
||||
? existing.events
|
||||
|
|
@ -64,6 +67,7 @@ class RoomsController extends Notifier<IMap<String, Room>> {
|
|||
(previousValue[event.key] ?? .new()).addAll(event.value),
|
||||
),
|
||||
),
|
||||
resetClientSticky: false,
|
||||
reset: false,
|
||||
hasFetchedMembers:
|
||||
incoming.hasFetchedMembers || existing.hasFetchedMembers,
|
||||
|
|
|
|||
Loading…
Reference in a new issue