Skip to content

Commit 6c747bc

Browse files
committed
Refactor GroupChatInfo to manage group image path and subscription lifecycle
1 parent 3cf0bb3 commit 6c747bc

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

lib/ui/chat/chat_info/chat_info_screen.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:whitenoise/config/providers/chat_search_provider.dart';
99
import 'package:whitenoise/config/providers/follow_provider.dart';
1010
import 'package:whitenoise/config/providers/follows_provider.dart';
1111
import 'package:whitenoise/config/providers/group_provider.dart';
12+
import 'package:whitenoise/config/states/group_state.dart';
1213
import 'package:whitenoise/domain/models/dm_chat_data.dart';
1314
import 'package:whitenoise/domain/models/user_model.dart';
1415
import 'package:whitenoise/domain/services/dm_chat_service.dart';

lib/ui/chat/chat_info/group_chat_info.dart

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,34 @@ class _GroupChatInfoState extends ConsumerState<GroupChatInfo> {
1616
bool isLoadingMembers = false;
1717
String? currentUserNpub;
1818
String? groupImagePath;
19+
ProviderSubscription<GroupsState>? _groupsSubscription;
20+
1921
@override
2022
void initState() {
2123
super.initState();
2224
WidgetsBinding.instance.addPostFrameCallback((_) {
2325
_loadGroup();
2426
_loadMembers();
2527
_loadCurrentUserNpub();
28+
29+
setState(() {
30+
groupImagePath = ref.read(groupsProvider.notifier).getCachedGroupImagePath(widget.groupId);
31+
});
32+
33+
_groupsSubscription = ref.listenManual(groupsProvider, (previous, next) {
34+
if (mounted) {
35+
_loadMembers();
36+
}
37+
});
2638
});
2739
}
2840

41+
@override
42+
void dispose() {
43+
_groupsSubscription?.close();
44+
super.dispose();
45+
}
46+
2947
Future<void> _loadGroup() async {
3048
final groupDetails = ref.read(groupsProvider).groupsMap?[widget.groupId];
3149
if (groupDetails?.nostrGroupId != null) {
@@ -127,11 +145,6 @@ class _GroupChatInfoState extends ConsumerState<GroupChatInfo> {
127145
@override
128146
Widget build(BuildContext context) {
129147
final groupDetails = ref.watch(groupsProvider).groupsMap?[widget.groupId];
130-
final groupsNotifier = ref.watch(groupsProvider.notifier);
131-
ref.listen(groupsProvider, (previous, next) {
132-
groupImagePath = groupsNotifier.getCachedGroupImagePath(widget.groupId);
133-
_loadMembers();
134-
});
135148
final isAdmin = groupAdmins.any((admin) {
136149
if (currentUserNpub == null) {
137150
return false;

0 commit comments

Comments
 (0)