From c180dc25ffaaca84a3282a6faba41ee7cac077b1 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Thu, 5 Jun 2025 13:03:39 -0400 Subject: [PATCH] chore: add ability to set status in settings --- lib/pages/settings/settings.dart | 30 +++++++++++++++++++++++++++ lib/pages/settings/settings_view.dart | 19 +++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart index 00acd3f38..6ea6f417d 100644 --- a/lib/pages/settings/settings.dart +++ b/lib/pages/settings/settings.dart @@ -207,6 +207,36 @@ class SettingsController extends State { // Pangea# } + // #Pangea + void setStatus() async { + final client = Matrix.of(context).client; + final currentPresence = await client.fetchCurrentPresence(client.userID!); + final input = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).setStatus, + message: L10n.of(context).leaveEmptyToClearStatus, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + hintText: L10n.of(context).statusExampleMessage, + maxLines: 6, + minLines: 1, + maxLength: 255, + initialText: currentPresence.statusMsg, + ); + if (input == null) return; + if (!mounted) return; + await showFutureLoadingDialog( + context: context, + future: () => client.setPresence( + client.userID!, + PresenceType.online, + statusMsg: input, + ), + ); + } + // Pangea# + @override Widget build(BuildContext context) { final client = Matrix.of(context).client; diff --git a/lib/pages/settings/settings_view.dart b/lib/pages/settings/settings_view.dart index 4c51ea86d..ee6a74e51 100644 --- a/lib/pages/settings/settings_view.dart +++ b/lib/pages/settings/settings_view.dart @@ -165,6 +165,25 @@ class SettingsView extends StatelessWidget { // style: const TextStyle(fontSize: 12), ), ), + // #Pangea + TextButton.icon( + onPressed: controller.setStatus, + icon: const Icon( + Icons.add, + size: 14, + ), + style: TextButton.styleFrom( + foregroundColor: + theme.colorScheme.secondary, + iconColor: theme.colorScheme.secondary, + ), + label: Text( + L10n.of(context).setStatus, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + // Pangea# ], ), ),