Compare commits
No commits in common. "8d9645b4608b43aa07cc183c3b301c945dd35735" and "c65e8e056260b75fd66d490f105d8e09f2244ff2" have entirely different histories.
8d9645b460
...
c65e8e0562
2 changed files with 31 additions and 30 deletions
|
|
@ -51,13 +51,11 @@ class RoomChatController extends AsyncNotifier<IList<Event>> {
|
|||
const ISet.empty(),
|
||||
);
|
||||
|
||||
final room = ref.watch(
|
||||
RoomsController.provider.select((rooms) => rooms[roomId]),
|
||||
);
|
||||
final room = ref.watch(RoomsController.provider)[roomId];
|
||||
if (room == null) return const IList.empty();
|
||||
|
||||
// While there are under 30 messages, try up to load more messages until there's no more or we have 20 messages.
|
||||
if (room.hasMore && room.events.length < 30) {
|
||||
// While there are under 20 messages, try up to load more messages until there's no more or we have 20 messages.
|
||||
if (room.hasMore && room.events.length < 20) {
|
||||
loadOlder();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import "package:nexus/controllers/power_level_controller.dart";
|
|||
import "package:nexus/controllers/selected_room_controller.dart";
|
||||
import "package:nexus/controllers/room_chat_controller.dart";
|
||||
import "package:nexus/controllers/via_controller.dart";
|
||||
import "package:nexus/helpers/extensions/better_when.dart";
|
||||
import "package:nexus/models/configs/power_level_config.dart";
|
||||
import "package:nexus/models/content/content.dart";
|
||||
import "package:nexus/models/content/message.dart";
|
||||
|
|
@ -288,6 +289,30 @@ class RoomChat extends HookConsumerWidget {
|
|||
].toIList();
|
||||
}
|
||||
|
||||
SuperListView messageView(IList<Event> events) => SuperListView.builder(
|
||||
controller: scrollController,
|
||||
listController: listController.value,
|
||||
itemCount: events.length,
|
||||
itemBuilder: (_, index) => MessageWrapper(
|
||||
events[index],
|
||||
EventText(
|
||||
events[index],
|
||||
onTapReply: () => listController.value.animateToItem(
|
||||
index: index,
|
||||
scrollController: scrollController,
|
||||
alignment: 0.5,
|
||||
duration: (_) => Duration(milliseconds: 250),
|
||||
curve: (_) => Curves.easeInOut,
|
||||
),
|
||||
getEventOptions: getEventOptions,
|
||||
),
|
||||
// TODO: Reimplement grouping
|
||||
isGrouped: false,
|
||||
// TODO: Reimplement flashing
|
||||
isFlashing: false,
|
||||
),
|
||||
);
|
||||
|
||||
return Scaffold(
|
||||
appBar: RoomAppbar(
|
||||
isDesktop: isDesktop,
|
||||
|
|
@ -304,31 +329,9 @@ class RoomChat extends HookConsumerWidget {
|
|||
children: [
|
||||
Positioned.fill(
|
||||
child: switch (ref.watch(controllerProvider)) {
|
||||
AsyncData(:final value) ||
|
||||
AsyncLoading(:final value?) => SuperListView.builder(
|
||||
controller: scrollController,
|
||||
listController: listController.value,
|
||||
itemCount: value.length,
|
||||
itemBuilder: (_, index) => MessageWrapper(
|
||||
value[index],
|
||||
EventText(
|
||||
value[index],
|
||||
onTapReply: () => listController.value.animateToItem(
|
||||
index: index,
|
||||
scrollController: scrollController,
|
||||
alignment: 0.5,
|
||||
duration: (_) => Duration(milliseconds: 250),
|
||||
curve: (_) => Curves.easeInOut,
|
||||
),
|
||||
getEventOptions: getEventOptions,
|
||||
),
|
||||
// TODO: Reimplement grouping
|
||||
isGrouped: false,
|
||||
// TODO: Reimplement flashing
|
||||
isFlashing: false,
|
||||
),
|
||||
),
|
||||
AsyncLoading() => Loading(),
|
||||
AsyncData(:final value) => messageView(value),
|
||||
AsyncLoading(:final value) =>
|
||||
value == null ? Loading() : messageView(value),
|
||||
AsyncError(:final error, :final stackTrace) => ErrorDialog(
|
||||
error,
|
||||
stackTrace,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue