refactor: Implement own adaptive dialogs and remove package

This commit is contained in:
krille-chan 2024-12-10 18:47:58 +01:00
commit 8819c40ebd
No known key found for this signature in database
42 changed files with 597 additions and 439 deletions

View file

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:go_router/go_router.dart';
@ -12,6 +11,8 @@ import 'package:fluffychat/pages/settings/settings.dart';
import 'package:fluffychat/utils/file_selector.dart';
import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart';
import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart';
import 'package:fluffychat/widgets/future_loading_dialog.dart';
import 'package:fluffychat/widgets/matrix.dart';
@ -46,20 +47,16 @@ class ChatDetailsController extends State<ChatDetails> {
title: L10n.of(context).changeTheNameOfTheGroup,
okLabel: L10n.of(context).ok,
cancelLabel: L10n.of(context).cancel,
textFields: [
DialogTextField(
initialText: room.getLocalizedDisplayname(
MatrixLocals(
L10n.of(context),
),
),
initialText: room.getLocalizedDisplayname(
MatrixLocals(
L10n.of(context),
),
],
),
);
if (input == null) return;
final success = await showFutureLoadingDialog(
context: context,
future: () => room.setName(input.single),
future: () => room.setName(input),
);
if (success.error == null) {
ScaffoldMessenger.of(context).showSnackBar(
@ -75,19 +72,15 @@ class ChatDetailsController extends State<ChatDetails> {
title: L10n.of(context).setChatDescription,
okLabel: L10n.of(context).ok,
cancelLabel: L10n.of(context).cancel,
textFields: [
DialogTextField(
hintText: L10n.of(context).noChatDescriptionYet,
initialText: room.topic,
minLines: 4,
maxLines: 8,
),
],
hintText: L10n.of(context).noChatDescriptionYet,
initialText: room.topic,
minLines: 4,
maxLines: 8,
);
if (input == null) return;
final success = await showFutureLoadingDialog(
context: context,
future: () => room.setDescription(input.single),
future: () => room.setDescription(input),
);
if (success.error == null) {
ScaffoldMessenger.of(context).showSnackBar(
@ -116,30 +109,31 @@ class ChatDetailsController extends State<ChatDetails> {
final room = Matrix.of(context).client.getRoomById(roomId!);
final actions = [
if (PlatformInfos.isMobile)
SheetAction(
key: AvatarAction.camera,
AdaptiveModalAction(
value: AvatarAction.camera,
label: L10n.of(context).openCamera,
isDefaultAction: true,
icon: Icons.camera_alt_outlined,
icon: const Icon(Icons.camera_alt_outlined),
),
SheetAction(
key: AvatarAction.file,
AdaptiveModalAction(
value: AvatarAction.file,
label: L10n.of(context).openGallery,
icon: Icons.photo_outlined,
icon: const Icon(Icons.photo_outlined),
),
if (room?.avatar != null)
SheetAction(
key: AvatarAction.remove,
AdaptiveModalAction(
value: AvatarAction.remove,
label: L10n.of(context).delete,
isDestructiveAction: true,
icon: Icons.delete_outlined,
isDestructive: true,
icon: const Icon(Icons.delete_outlined),
),
];
final action = actions.length == 1
? actions.single.key
: await showModalActionSheet<AvatarAction>(
? actions.single.value
: await showModalActionPopup<AvatarAction>(
context: context,
title: L10n.of(context).editRoomAvatar,
cancelLabel: L10n.of(context).cancel,
actions: actions,
);
if (action == null) return;