feat: add context menu to conversations screen and simplify manage network UI component
This commit is contained in:
@@ -200,18 +200,48 @@ class _ConversationsScreenState extends ConsumerState<ConversationsScreen> {
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
// Three dots menu (outside the search box)
|
||||
GestureDetector(
|
||||
onTap: () {},
|
||||
behavior: HitTestBehavior.opaque,
|
||||
child: const Padding(
|
||||
padding: EdgeInsets.all(4),
|
||||
child: Icon(
|
||||
Icons.more_horiz,
|
||||
size: 22,
|
||||
color: AppColors.primaryDark,
|
||||
),
|
||||
// Three dots menu
|
||||
PopupMenuButton<String>(
|
||||
icon: const Icon(
|
||||
Icons.more_horiz,
|
||||
size: 22,
|
||||
color: AppColors.primaryDark,
|
||||
),
|
||||
padding: EdgeInsets.zero,
|
||||
onSelected: (value) {
|
||||
switch (value) {
|
||||
case 'mark_all_read':
|
||||
final conversations =
|
||||
ref.read(messagingProvider).conversations;
|
||||
for (final c in conversations) {
|
||||
if (c.unreadCount > 0) {
|
||||
ref
|
||||
.read(messagingProvider.notifier)
|
||||
.markAsRead(c.id);
|
||||
}
|
||||
}
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('All conversations marked as read')),
|
||||
);
|
||||
break;
|
||||
case 'refresh':
|
||||
ref
|
||||
.read(messagingProvider.notifier)
|
||||
.loadConversations();
|
||||
break;
|
||||
}
|
||||
},
|
||||
itemBuilder: (_) => const [
|
||||
PopupMenuItem(
|
||||
value: 'mark_all_read',
|
||||
child: Text('Mark all as read'),
|
||||
),
|
||||
PopupMenuItem(
|
||||
value: 'refresh',
|
||||
child: Text('Refresh'),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user