chore: Follow up chat appbar actions

This commit is contained in:
krille-chan 2023-12-28 18:54:44 +01:00
parent 2382141cc5
commit 08ca53a46d
No known key found for this signature in database

View file

@ -24,8 +24,6 @@ import '../../utils/stream_extension.dart';
import 'chat_emoji_picker.dart'; import 'chat_emoji_picker.dart';
import 'chat_input_row.dart'; import 'chat_input_row.dart';
enum _EventContextAction { info, report }
class ChatView extends StatelessWidget { class ChatView extends StatelessWidget {
final ChatController controller; final ChatController controller;
@ -60,54 +58,30 @@ class ChatView extends StatelessWidget {
onPressed: controller.pinEvent, onPressed: controller.pinEvent,
tooltip: L10n.of(context)!.pinMessage, tooltip: L10n.of(context)!.pinMessage,
), ),
if (controller.canRedactSelectedEvents) if (controller.selectedEvents.length == 1) ...[
IconButton( IconButton(
icon: const Icon(Icons.delete_outlined), icon: const Icon(Icons.info_outlined),
tooltip: L10n.of(context)!.redactMessage, tooltip: L10n.of(context)!.messageInfo,
onPressed: controller.redactEventsAction, onPressed: controller.showEventInfo,
), ),
if (controller.selectedEvents.length == 1) IconButton(
PopupMenuButton<_EventContextAction>( icon: const Icon(
onSelected: (action) { Icons.shield_outlined,
switch (action) { color: Colors.orange,
case _EventContextAction.info: ),
controller.showEventInfo(); tooltip: L10n.of(context)!.reportMessage,
controller.clearSelectedEvents(); onPressed: controller.reportEventAction,
break; ),
case _EventContextAction.report: if (controller.canRedactSelectedEvents)
controller.reportEventAction(); IconButton(
break; icon: Icon(
} Icons.delete_outlined,
}, color: Theme.of(context).colorScheme.error,
itemBuilder: (context) => [
PopupMenuItem(
value: _EventContextAction.info,
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.info_outlined),
const SizedBox(width: 12),
Text(L10n.of(context)!.messageInfo),
],
),
), ),
if (controller.selectedEvents.single.status.isSent) tooltip: L10n.of(context)!.redactMessage,
PopupMenuItem( onPressed: controller.redactEventsAction,
value: _EventContextAction.report, ),
child: Row( ],
mainAxisSize: MainAxisSize.min,
children: [
const Icon(
Icons.shield_outlined,
color: Colors.red,
),
const SizedBox(width: 12),
Text(L10n.of(context)!.reportMessage),
],
),
),
],
),
]; ];
} else if (!controller.room.isArchived) { } else if (!controller.room.isArchived) {
return [ return [
@ -178,7 +152,14 @@ class ChatView extends StatelessWidget {
), ),
titleSpacing: 0, titleSpacing: 0,
title: ChatAppBarTitle(controller), title: ChatAppBarTitle(controller),
actions: _appBarActions(context), actions: _appBarActions(context)
.map(
(icon) => Padding(
padding: const EdgeInsets.only(left: 8),
child: icon,
),
)
.toList(),
), ),
floatingActionButton: controller.showScrollDownButton && floatingActionButton: controller.showScrollDownButton &&
controller.selectedEvents.isEmpty controller.selectedEvents.isEmpty