From 28cde38fffdf58fe1f9aa8fbb14965c98c45d404 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 23 Jan 2026 13:16:32 -0500 Subject: [PATCH] chore: prevent UI block on save activity --- .../activity_finished_status_message.dart | 37 ++++++++++--------- lib/widgets/adaptive_dialogs/user_dialog.dart | 4 +- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/lib/pangea/activity_sessions/activity_session_chat/activity_finished_status_message.dart b/lib/pangea/activity_sessions/activity_session_chat/activity_finished_status_message.dart index cd2159910..971fa359f 100644 --- a/lib/pangea/activity_sessions/activity_session_chat/activity_finished_status_message.dart +++ b/lib/pangea/activity_sessions/activity_session_chat/activity_finished_status_message.dart @@ -7,8 +7,8 @@ import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_room_extension.dart'; import 'package:fluffychat/pangea/activity_summary/activity_summary_model.dart'; +import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/common/widgets/error_indicator.dart'; -import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; class ActivityFinishedStatusMessage extends StatelessWidget { @@ -19,25 +19,28 @@ class ActivityFinishedStatusMessage extends StatelessWidget { required this.controller, }); - Future _onArchive(BuildContext context) async { - final resp = await showFutureLoadingDialog( - context: context, - future: () => _archiveToAnalytics(context), + void _onArchive(BuildContext context) { + _archiveToAnalytics(); + context.go( + "/rooms/spaces/${controller.room.courseParent!.id}/details?tab=course", ); - - if (!resp.isError) { - context.go( - "/rooms/spaces/${controller.room.courseParent!.id}/details?tab=course", - ); - } } - Future _archiveToAnalytics(BuildContext context) async { - await controller.room.archiveActivity(); - await Matrix.of(context) - .analyticsDataService - .updateService - .sendActivityAnalytics(controller.room.id); + Future _archiveToAnalytics() async { + try { + await controller.room.archiveActivity(); + await MatrixState + .pangeaController.matrixState.analyticsDataService.updateService + .sendActivityAnalytics(controller.room.id); + } catch (e, s) { + ErrorHandler.logError( + e: e, + s: s, + data: { + 'roomId': controller.room.id, + }, + ); + } } ActivitySummaryModel? get summary => controller.room.activitySummary; diff --git a/lib/widgets/adaptive_dialogs/user_dialog.dart b/lib/widgets/adaptive_dialogs/user_dialog.dart index 0a285e275..102101336 100644 --- a/lib/widgets/adaptive_dialogs/user_dialog.dart +++ b/lib/widgets/adaptive_dialogs/user_dialog.dart @@ -58,7 +58,9 @@ class UserDialog extends StatelessWidget { client: Matrix.of(context).client, builder: (context, presence) { if (presence == null) return const SizedBox.shrink(); - final statusMsg = presence.statusMsg; + // #Pangea + // final statusMsg = presence.statusMsg; + // Pangea# final lastActiveTimestamp = presence.lastActiveTimestamp; final presenceText = presence.currentlyActive == true ? L10n.of(context).currentlyActive