fix memberships constantly reloading
This commit is contained in:
parent
46d7ec4202
commit
9303fee0de
4 changed files with 14 additions and 8 deletions
|
|
@ -61,7 +61,7 @@ class RoomChatController extends AsyncNotifier<IList<Event>> {
|
||||||
loadOlder();
|
loadOlder();
|
||||||
}
|
}
|
||||||
|
|
||||||
return room.timeline
|
return room.timeline.reversed
|
||||||
.map(
|
.map(
|
||||||
(timeline) => room.events.firstWhereOrNull(
|
(timeline) => room.events.firstWhereOrNull(
|
||||||
(event) => event.rowId == timeline.eventRowId,
|
(event) => event.rowId == timeline.eventRowId,
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import "dart:convert";
|
||||||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
import "package:nexus/models/event.dart";
|
import "package:nexus/models/event.dart";
|
||||||
|
|
@ -19,6 +20,6 @@ class EventText extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Text(event.eventId); // NEXT TODO
|
return Text(json.encode(event.toJson())); // NEXT TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import "package:flutter/material.dart";
|
||||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||||
import "package:nexus/controllers/author_controller.dart";
|
import "package:nexus/controllers/author_controller.dart";
|
||||||
import "package:nexus/helpers/extensions/better_when.dart";
|
import "package:nexus/helpers/extensions/better_when.dart";
|
||||||
|
import "package:nexus/helpers/extensions/get_localpart.dart";
|
||||||
import "package:nexus/helpers/extensions/show_user_popover.dart";
|
import "package:nexus/helpers/extensions/show_user_popover.dart";
|
||||||
import "package:nexus/models/event.dart";
|
import "package:nexus/models/event.dart";
|
||||||
|
|
||||||
|
|
@ -29,7 +30,7 @@ class MessageDisplayname extends ConsumerWidget {
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
child: Text(
|
child: Text(
|
||||||
"${membership.displayName}${event.pmp == null ? "" : " (via ${event.sender})"}",
|
"${membership.displayName ?? event.sender.localpart}${event.pmp == null ? "" : " (via ${event.sender})"}",
|
||||||
style: style,
|
style: style,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,11 @@ class RoomChat extends HookConsumerWidget {
|
||||||
final memberListOpened = useState<bool>(showMembersByDefault);
|
final memberListOpened = useState<bool>(showMembersByDefault);
|
||||||
|
|
||||||
final listController = useRef(ListController());
|
final listController = useRef(ListController());
|
||||||
final scrollController = useScrollController();
|
final scrollController = useScrollController(
|
||||||
// TODO: Do things on scroll to top or bottom
|
onAttach: (position) => position.addListener(() {
|
||||||
|
// TODO: Do things on scroll to top or bottom
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
final userId = ref.watch(ClientStateController.provider)?.userId;
|
final userId = ref.watch(ClientStateController.provider)?.userId;
|
||||||
final roomId = ref.watch(
|
final roomId = ref.watch(
|
||||||
|
|
@ -308,8 +311,12 @@ class RoomChat extends HookConsumerWidget {
|
||||||
child: switch (ref.watch(controllerProvider)) {
|
child: switch (ref.watch(controllerProvider)) {
|
||||||
AsyncData(:final value) ||
|
AsyncData(:final value) ||
|
||||||
AsyncLoading(:final value?) => CustomScrollView(
|
AsyncLoading(:final value?) => CustomScrollView(
|
||||||
|
reverse: true,
|
||||||
controller: scrollController,
|
controller: scrollController,
|
||||||
slivers: [
|
slivers: [
|
||||||
|
SliverPadding(
|
||||||
|
padding: EdgeInsetsGeometry.only(bottom: 64),
|
||||||
|
),
|
||||||
SuperSliverList.builder(
|
SuperSliverList.builder(
|
||||||
listController: listController.value,
|
listController: listController.value,
|
||||||
itemCount: value.length,
|
itemCount: value.length,
|
||||||
|
|
@ -334,9 +341,6 @@ class RoomChat extends HookConsumerWidget {
|
||||||
isFlashing: false,
|
isFlashing: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SliverPadding(
|
|
||||||
padding: EdgeInsetsGeometry.only(bottom: 64),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
AsyncLoading() => Loading(),
|
AsyncLoading() => Loading(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue