♻️ Refactored the chat loading to use more local data

This commit is contained in:
2025-12-04 22:10:07 +08:00
parent dfcb089c69
commit 31b83b2d27
14 changed files with 731 additions and 366 deletions

View File

@@ -17,6 +17,7 @@ import "package:island/models/wallet.dart";
import "package:island/models/realm.dart";
import "package:island/models/sticker.dart";
import "package:island/pods/config.dart";
import "package:island/pods/userinfo.dart";
import "package:island/services/autocomplete_service.dart";
import "package:island/services/responsive.dart";
import "package:island/widgets/content/attachment_preview.dart";
@@ -344,6 +345,14 @@ class ChatInput extends HookConsumerWidget {
final double rightMargin = isWideScreen(context) ? leftMargin + 8 : 16;
const double bottomMargin = 16;
final userInfo = ref.watch(userInfoProvider);
List<SnChatMember> getValidMembers(List<SnChatMember> members) {
return members
.where((member) => member.accountId != userInfo.value?.id)
.toList();
}
return Container(
margin: EdgeInsets.only(
left: leftMargin,
@@ -878,9 +887,9 @@ class ChatInput extends HookConsumerWidget {
(chatRoom.type == 1 && chatRoom.name == null)
? 'chatDirectMessageHint'.tr(
args: [
chatRoom.members!
.map((e) => e.account.nick)
.join(', '),
getValidMembers(
chatRoom.members!,
).map((e) => e.account.nick).join(', '),
],
)
: 'chatMessageHint'.tr(

View File

@@ -205,7 +205,7 @@ class PublicRoomPreview extends HookConsumerWidget {
showLoadingModal(context);
final apiClient = ref.read(apiClientProvider);
await apiClient.post('/sphere/chat/${room.id}/members/me');
ref.invalidate(chatroomIdentityProvider(id));
ref.invalidate(ChatRoomIdentityNotifierProvider(id));
} catch (err) {
showErrorAlert(err);
} finally {

View File

@@ -664,7 +664,7 @@ class _ChatRoomsList extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final chatRooms = ref.watch(chatroomsJoinedProvider);
final chatRooms = ref.watch(chatRoomJoinedNotifierProvider);
return chatRooms.when(
data: (rooms) {