👽 Support new attachment reference system

This commit is contained in:
2025-06-02 01:08:04 +08:00
parent 152e076d44
commit 4187ceb248
50 changed files with 219 additions and 227 deletions

View File

@ -166,7 +166,8 @@ class CallScreen extends HookConsumerWidget {
.profile
?.account
.profile
.pictureId,
.picture
?.id,
size: 72,
),
),

View File

@ -109,7 +109,7 @@ class ChatRoomListTile extends HookConsumerWidget {
},
loading: () => const SizedBox.shrink(),
error:
(_, __) =>
(_, _) =>
isDirect && room.description == null
? Text(
room.members!.map((e) => '@${e.account.name}').join(', '),
@ -127,19 +127,19 @@ class ChatRoomListTile extends HookConsumerWidget {
isLabelVisible: summary.when(
data: (data) => (data?.unreadCount ?? 0) > 0,
loading: () => false,
error: (_, __) => false,
error: (_, _) => false,
),
child:
(isDirect && room.pictureId == null)
(isDirect && room.picture?.id == null)
? SplitAvatarWidget(
filesId:
room.members!
.map((e) => e.account.profile.pictureId)
.map((e) => e.account.profile.picture?.id)
.toList(),
)
: room.pictureId == null
: room.picture?.id == null
? CircleAvatar(child: Text(room.name![0].toUpperCase()))
: ProfilePictureWidget(fileId: room.pictureId),
: ProfilePictureWidget(fileId: room.picture?.id),
),
title: Text(
(isDirect && room.name == null)
@ -147,7 +147,7 @@ class ChatRoomListTile extends HookConsumerWidget {
: room.name ?? '',
),
subtitle: buildSubtitle(),
trailing: trailing, // Add this line
trailing: trailing, // Add this line
onTap: () async {
// Clear unread count if there are unread messages
ref.read(chatSummaryProvider.future).then((summary) {
@ -280,13 +280,13 @@ class ChatListScreen extends HookConsumerWidget {
label: Text(
chatInvites.when(
data: (invites) => invites.length.toString(),
error: (_, __) => '0',
error: (_, _) => '0',
loading: () => '0',
),
),
isLabelVisible: chatInvites.when(
data: (invites) => invites.isNotEmpty,
error: (_, __) => false,
error: (_, _) => false,
loading: () => false,
),
child: const Icon(Symbols.email),
@ -589,7 +589,7 @@ class EditChatScreen extends HookConsumerWidget {
realms: joinedRealms.when(
data: (realms) => realms,
loading: () => [],
error: (_, __) => [],
error: (_, _) => [],
),
onChanged: (SnRealm? value) {
currentRealm.value = value;

View File

@ -433,19 +433,23 @@ class ChatRoomScreen extends HookConsumerWidget {
height: 26,
width: 26,
child:
(room!.type == 1 && room.pictureId == null)
(room!.type == 1 && room.picture?.id == null)
? SplitAvatarWidget(
filesId:
room.members!
.map(
(e) =>
e.account.profile.pictureId,
e
.account
.profile
.picture
?.id,
)
.toList(),
)
: room.pictureId != null
: room.picture?.id != null
? ProfilePictureWidget(
fileId: room.pictureId,
fileId: room.picture?.id,
fallbackIcon: Symbols.chat,
)
: CircleAvatar(
@ -473,19 +477,23 @@ class ChatRoomScreen extends HookConsumerWidget {
height: 26,
width: 26,
child:
(room!.type == 1 && room.pictureId == null)
(room!.type == 1 && room.picture?.id == null)
? SplitAvatarWidget(
filesId:
room.members!
.map(
(e) =>
e.account.profile.pictureId,
e
.account
.profile
.picture
?.id,
)
.toList(),
)
: room.pictureId != null
: room.picture?.id != null
? ProfilePictureWidget(
fileId: room.pictureId,
fileId: room.picture?.id,
fallbackIcon: Symbols.chat,
)
: CircleAvatar(

View File

@ -48,9 +48,9 @@ class ChatDetailScreen extends HookConsumerWidget {
flexibleSpace: FlexibleSpaceBar(
background:
(currentRoom!.type == 1 &&
currentRoom.backgroundId != null)
currentRoom.background?.id != null)
? CloudImageWidget(
fileId: currentRoom.backgroundId!,
fileId: currentRoom.background!.id,
)
: (currentRoom.type == 1 &&
currentRoom.members!.length == 1 &&
@ -59,7 +59,8 @@ class ChatDetailScreen extends HookConsumerWidget {
.first
.account
.profile
.backgroundId !=
.background
?.id !=
null)
? CloudImageWidget(
fileId:
@ -68,11 +69,12 @@ class ChatDetailScreen extends HookConsumerWidget {
.first
.account
.profile
.backgroundId!,
.background!
.id,
)
: currentRoom.backgroundId != null
: currentRoom.background?.id != null
? CloudImageWidget(
fileId: currentRoom.backgroundId!,
fileId: currentRoom.background!.id,
fit: BoxFit.cover,
)
: Container(
@ -390,7 +392,7 @@ class _ChatMemberListSheet extends HookConsumerWidget {
return ListTile(
contentPadding: EdgeInsets.only(left: 16, right: 12),
leading: ProfilePictureWidget(
fileId: member.account.profile.pictureId,
fileId: member.account.profile.picture?.id,
),
title: Row(
spacing: 6,