lazy load memberships

This commit is contained in:
Henry Hiles 2026-03-22 16:35:15 -04:00
commit 9054b6b357
No known key found for this signature in database
14 changed files with 231 additions and 197 deletions

View file

@ -0,0 +1,14 @@
import "package:flutter_chat_core/flutter_chat_core.dart";
import "package:freezed_annotation/freezed_annotation.dart";
import "package:nexus/models/room.dart";
part "author_config.freezed.dart";
part "author_config.g.dart";
@freezed
abstract class AuthorConfig with _$AuthorConfig {
const factory AuthorConfig({required Message message, required Room room}) =
_AuthorConfig;
factory AuthorConfig.fromJson(Map<String, Object?> json) =>
_$AuthorConfigFromJson(json);
}

View file

@ -1,13 +0,0 @@
import "package:freezed_annotation/freezed_annotation.dart";
import "package:nexus/models/room.dart";
part "member_config.freezed.dart";
part "member_config.g.dart";
@freezed
abstract class MemberConfig with _$MemberConfig {
const factory MemberConfig({required Room room, required String userId}) =
_MemberConfig;
factory MemberConfig.fromJson(Map<String, Object?> json) =>
_$MemberConfigFromJson(json);
}

View file

@ -1,15 +1,22 @@
import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:freezed_annotation/freezed_annotation.dart";
part "membership.freezed.dart";
part "membership.g.dart";
@freezed
abstract class Membership with _$Membership {
const Membership._();
const factory Membership({
required Uri? avatarUrl,
required String displayName,
required String userId,
}) = _Membership;
factory Membership.fromJson(Map<String, Object?> json) =>
_$MembershipFromJson(json);
factory Membership.fromContent(
IMap<String, dynamic> content,
String userId,
) => Membership(
avatarUrl: Uri.tryParse(content["avatar_url"] ?? ""),
userId: userId,
displayName: content["displayname"] ?? userId.substring(1).split(":").first,
);
}

View file

@ -18,7 +18,6 @@ abstract class Room with _$Room {
@Default(IMap.empty()) IMap<String, IList<ReadReceipt>> receipts,
@Default(false) bool dismissNotifications,
@Default(true) bool hasMore,
@Default(false) bool hasFetchedMembers,
// required IList<Notification> notifications,
}) = _Room;