From 5bdd8e94fa1fdf25029adca5f101f1bd0da7d734 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 23 Feb 2025 18:48:26 +0800 Subject: [PATCH] :bug: Bug hotfix launch 2.3.2+72 --- lib/providers/channel.dart | 6 ++- lib/screens/chat/channel_detail.dart | 59 ++++++++++++++++++++-------- macos/Podfile.lock | 10 ++++- pubspec.lock | 9 +++-- pubspec.yaml | 8 +++- 5 files changed, 66 insertions(+), 26 deletions(-) diff --git a/lib/providers/channel.dart b/lib/providers/channel.dart index 5de6e6a..94d2cd1 100644 --- a/lib/providers/channel.dart +++ b/lib/providers/channel.dart @@ -65,7 +65,11 @@ class ChatChannelProvider extends ChangeNotifier { .getSingleOrNull(); if (local != null) { final out = local.content; - return out.copyWith(realm: await _rels.getRealm(out.realmId!)); + if (out.realmId != null) { + return out.copyWith(realm: await _rels.getRealm(out.realmId!)); + } else { + return out; + } } var resp = diff --git a/lib/screens/chat/channel_detail.dart b/lib/screens/chat/channel_detail.dart index 2a57abf..f56bb8c 100644 --- a/lib/screens/chat/channel_detail.dart +++ b/lib/screens/chat/channel_detail.dart @@ -58,7 +58,8 @@ class _ChannelDetailScreenState extends State { try { final sn = context.read(); - final resp = await sn.client.get('/cgi/im/channels/${_channel!.keyPath}/members/me'); + final resp = + await sn.client.get('/cgi/im/channels/${_channel!.keyPath}/me'); _profile = SnChannelMember.fromJson(resp.data); _notifyLevel = _profile!.notify; if (!mounted) return; @@ -245,7 +246,11 @@ class _ChannelDetailScreenState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text('channelDetailPersonalRegion').bold().fontSize(17).tr().padding(horizontal: 20, bottom: 4), + Text('channelDetailPersonalRegion') + .bold() + .fontSize(17) + .tr() + .padding(horizontal: 20, bottom: 4), ListTile( leading: const Icon(Symbols.notifications), trailing: DropdownButtonHideUnderline( @@ -284,7 +289,8 @@ class _ChannelDetailScreenState extends State { ), ListTile( leading: AccountImage( - content: ud.getAccountFromCache(_profile!.accountId)?.avatar, + content: + ud.getAccountFromCache(_profile!.accountId)?.avatar, radius: 18, ), trailing: const Icon(Symbols.chevron_right), @@ -303,7 +309,8 @@ class _ChannelDetailScreenState extends State { trailing: const Icon(Symbols.chevron_right), title: Text('channelActionLeave').tr(), subtitle: Text('channelActionLeaveDescription').tr(), - contentPadding: const EdgeInsets.symmetric(horizontal: 24), + contentPadding: + const EdgeInsets.symmetric(horizontal: 24), onTap: _leaveChannel, ), ], @@ -311,7 +318,11 @@ class _ChannelDetailScreenState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text('channelDetailMemberRegion').bold().fontSize(17).tr().padding(horizontal: 20, bottom: 4), + Text('channelDetailMemberRegion') + .bold() + .fontSize(17) + .tr() + .padding(horizontal: 20, bottom: 4), ListTile( leading: const Icon(Symbols.group), trailing: const Icon(Symbols.chevron_right), @@ -333,7 +344,11 @@ class _ChannelDetailScreenState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text('channelDetailAdminRegion').bold().fontSize(17).tr().padding(horizontal: 20, bottom: 4), + Text('channelDetailAdminRegion') + .bold() + .fontSize(17) + .tr() + .padding(horizontal: 20, bottom: 4), ListTile( leading: const Icon(Symbols.edit), trailing: const Icon(Symbols.chevron_right), @@ -379,10 +394,12 @@ class _ChannelProfileDetailDialog extends StatefulWidget { }); @override - State<_ChannelProfileDetailDialog> createState() => _ChannelProfileDetailDialogState(); + State<_ChannelProfileDetailDialog> createState() => + _ChannelProfileDetailDialogState(); } -class _ChannelProfileDetailDialogState extends State<_ChannelProfileDetailDialog> { +class _ChannelProfileDetailDialogState + extends State<_ChannelProfileDetailDialog> { bool _isBusy = false; final TextEditingController _nickController = TextEditingController(); @@ -457,7 +474,8 @@ class _ChannelMemberListWidget extends StatefulWidget { const _ChannelMemberListWidget({required this.channel}); @override - State<_ChannelMemberListWidget> createState() => _ChannelMemberListWidgetState(); + State<_ChannelMemberListWidget> createState() => + _ChannelMemberListWidgetState(); } class _ChannelMemberListWidgetState extends State<_ChannelMemberListWidget> { @@ -472,10 +490,12 @@ class _ChannelMemberListWidgetState extends State<_ChannelMemberListWidget> { try { final ud = context.read(); final sn = context.read(); - final resp = await sn.client.get('/cgi/im/channels/${widget.channel.keyPath}/members', queryParameters: { - 'take': 10, - 'offset': _members.length, - }); + final resp = await sn.client.get( + '/cgi/im/channels/${widget.channel.keyPath}/members', + queryParameters: { + 'take': 10, + 'offset': _members.length, + }); final out = List.from( resp.data['data']?.map((e) => SnChannelMember.fromJson(e)) ?? [], ); @@ -533,7 +553,9 @@ class _ChannelMemberListWidgetState extends State<_ChannelMemberListWidget> { children: [ const Icon(Symbols.group, size: 24), const Gap(16), - Text('channelMemberManage').tr().textStyle(Theme.of(context).textTheme.titleLarge!), + Text('channelMemberManage') + .tr() + .textStyle(Theme.of(context).textTheme.titleLarge!), ], ).padding(horizontal: 20, top: 16, bottom: 12), Expanded( @@ -544,7 +566,8 @@ class _ChannelMemberListWidgetState extends State<_ChannelMemberListWidget> { }, child: InfiniteList( itemCount: _members.length, - hasReachedMax: _totalCount != null && _members.length >= _totalCount!, + hasReachedMax: + _totalCount != null && _members.length >= _totalCount!, isLoading: _isBusy, onFetchData: _fetchMembers, itemBuilder: (context, index) { @@ -555,7 +578,8 @@ class _ChannelMemberListWidgetState extends State<_ChannelMemberListWidget> { content: ud.getAccountFromCache(member.accountId)?.avatar, ), title: Text( - ud.getAccountFromCache(member.accountId)?.name ?? 'unknown'.tr(), + ud.getAccountFromCache(member.accountId)?.name ?? + 'unknown'.tr(), ), subtitle: Text(member.nick ?? 'unknown'.tr()), trailing: SizedBox( @@ -565,7 +589,8 @@ class _ChannelMemberListWidgetState extends State<_ChannelMemberListWidget> { mainAxisAlignment: MainAxisAlignment.end, children: [ IconButton( - onPressed: _isUpdating ? null : () => _deleteMember(member), + onPressed: + _isUpdating ? null : () => _deleteMember(member), icon: const Icon(Symbols.person_remove), ), ], diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 7acfc90..be821fd 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -142,10 +142,12 @@ PODS: - HotKey - in_app_review (2.0.0): - FlutterMacOS - - livekit_client (2.3.6): + - livekit_client (2.4.0): - flutter_webrtc - FlutterMacOS - WebRTC-SDK (= 125.6422.06) + - local_notifier (0.1.0): + - FlutterMacOS - media_kit_libs_macos_video (1.0.4): - FlutterMacOS - media_kit_native_event_loop (1.0.0): @@ -225,6 +227,7 @@ DEPENDENCIES: - hotkey_manager_macos (from `Flutter/ephemeral/.symlinks/plugins/hotkey_manager_macos/macos`) - in_app_review (from `Flutter/ephemeral/.symlinks/plugins/in_app_review/macos`) - livekit_client (from `Flutter/ephemeral/.symlinks/plugins/livekit_client/macos`) + - local_notifier (from `Flutter/ephemeral/.symlinks/plugins/local_notifier/macos`) - media_kit_libs_macos_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos`) - media_kit_native_event_loop (from `Flutter/ephemeral/.symlinks/plugins/media_kit_native_event_loop/macos`) - media_kit_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_video/macos`) @@ -297,6 +300,8 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/in_app_review/macos livekit_client: :path: Flutter/ephemeral/.symlinks/plugins/livekit_client/macos + local_notifier: + :path: Flutter/ephemeral/.symlinks/plugins/local_notifier/macos media_kit_libs_macos_video: :path: Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos media_kit_native_event_loop: @@ -356,7 +361,8 @@ SPEC CHECKSUMS: HotKey: 400beb7caa29054ea8d864c96f5ba7e5b4852277 hotkey_manager_macos: 1e2edb0c7ae4fe67108af44a9d3445de41404160 in_app_review: a6a031b9acd03c7d103e341aa334adf2c493fb93 - livekit_client: 0ad107154753a5a76802d2222c040223ad049499 + livekit_client: 2e766be2c3ee6274a8e2633b356b98b5eb842987 + local_notifier: e9506bc66fc70311e8bc7291fb70f743c081e4ff media_kit_libs_macos_video: b3e2bbec2eef97c285f2b1baa7963c67c753fb82 media_kit_native_event_loop: 81fd5b45192b72f8b5b69eaf5b540f45777eb8d5 media_kit_video: c75b07f14d59706c775778e4dd47dd027de8d1e5 diff --git a/pubspec.lock b/pubspec.lock index d317bf8..2653e89 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -2309,10 +2309,11 @@ packages: workmanager: dependency: "direct main" description: - name: workmanager - sha256: ed13530cccd28c5c9959ad42d657cd0666274ca74c56dea0ca183ddd527d3a00 - url: "https://pub.dev" - source: hosted + path: workmanager + ref: main + resolved-ref: "4ce065135dc1b91fee918f81596b42a56850391d" + url: "https://github.com/fluttercommunity/flutter_workmanager.git" + source: git version: "0.5.2" xdg_directories: dependency: transitive diff --git a/pubspec.yaml b/pubspec.yaml index 2966358..722d70d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 2.3.2+71 +version: 2.3.2+72 environment: sdk: ^3.5.4 @@ -103,7 +103,11 @@ dependencies: flutter_svg: ^2.0.16 home_widget: ^0.7.0 receive_sharing_intent: ^1.8.1 - workmanager: ^0.5.2 + workmanager: + git: + url: https://github.com/fluttercommunity/flutter_workmanager.git + path: workmanager + ref: main flutter_app_update: ^3.2.2 in_app_review: ^2.0.10 version: ^3.0.2