diff --git a/lib/pangea/activity_sessions/activity_session_chat/activity_stats_button.dart b/lib/pangea/activity_sessions/activity_session_chat/activity_stats_button.dart index 2d5e27cc0..ffd026654 100644 --- a/lib/pangea/activity_sessions/activity_session_chat/activity_stats_button.dart +++ b/lib/pangea/activity_sessions/activity_session_chat/activity_stats_button.dart @@ -78,8 +78,10 @@ class _ActivityStatsButtonState extends State { // if someone has finished the activity, enable the tooltip final activityRoles = widget.controller.room.activityRoles?.roles.values.toList() ?? []; - if (activityRoles.any((r) => r.isFinished)) { - return true; + final finishedRoles = activityRoles.where((r) => r.isFinished).toList(); + + if (finishedRoles.isNotEmpty) { + return !finishedRoles.any((r) => r.userId == _client.userID); } // otherwise, if no one has finished, only show if the user has sent >= 3 messages diff --git a/lib/pangea/activity_sessions/activity_session_chat/activity_stats_menu.dart b/lib/pangea/activity_sessions/activity_session_chat/activity_stats_menu.dart index ca7ebb0e2..9bd8d8431 100644 --- a/lib/pangea/activity_sessions/activity_session_chat/activity_stats_menu.dart +++ b/lib/pangea/activity_sessions/activity_session_chat/activity_stats_menu.dart @@ -196,7 +196,7 @@ class ActivityStatsMenuState extends State { ), ], ), - if (!room.hasArchivedActivity) + if (!userComplete) ...[ Text( L10n.of(context).activityDropdownDesc, textAlign: TextAlign.center, @@ -205,7 +205,6 @@ class ActivityStatsMenuState extends State { fontWeight: FontWeight.w600, ), ), - if (!userComplete) ...[ if (shouldShowEndForAll) ElevatedButton( style: ElevatedButton.styleFrom( diff --git a/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart b/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart index d877b0d6d..42b91792e 100644 --- a/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart +++ b/lib/pangea/chat_list/utils/chat_list_handle_space_tap.dart @@ -76,6 +76,10 @@ Future showInviteDialog(Room room, BuildContext context) async { ); if (joinResult.error != null) return; + if (room.membership != Membership.join) { + await room.client.waitForRoomInSync(room.id, join: true); + } + context.go( room.isSpace ? "/rooms/spaces/${room.id}/details" : "/rooms/${room.id}", ); diff --git a/lib/pangea/chat_settings/widgets/chat_context_menu_action.dart b/lib/pangea/chat_settings/widgets/chat_context_menu_action.dart index 618022be4..c00d209c8 100644 --- a/lib/pangea/chat_settings/widgets/chat_context_menu_action.dart +++ b/lib/pangea/chat_settings/widgets/chat_context_menu_action.dart @@ -271,6 +271,7 @@ void chatContextMenuAction( context.go("/rooms"); } } else { + final parentSpaceId = room.courseParent?.id; final confirmed = await showOkCancelAlertDialog( context: context, title: l10n.areYouSure, @@ -286,8 +287,8 @@ void chatContextMenuAction( ); if (!resp.isError) { outerContext.go( - room.courseParent != null - ? "/rooms/spaces/${room.courseParent!.id}/details" + parentSpaceId != null + ? "/rooms/spaces/$parentSpaceId/details" : "/rooms", ); } diff --git a/lib/pangea/common/controllers/pangea_controller.dart b/lib/pangea/common/controllers/pangea_controller.dart index fd01ea217..ab927535b 100644 --- a/lib/pangea/common/controllers/pangea_controller.dart +++ b/lib/pangea/common/controllers/pangea_controller.dart @@ -233,7 +233,23 @@ class PangeaController { } Future _onLanguageUpdate(LanguageUpdate update) async { - clearCache(exclude: ["analytics_storage"]); + final exclude = [ + 'analytics_storage', + 'course_location_media_storage', + 'course_location_storage', + 'course_media_storage', + ]; + + // only clear course data if the base language has changed + if (update.prevBaseLang == update.baseLang) { + exclude.addAll([ + 'course_storage', + 'course_topic_storage', + 'course_activity_storage', + ]); + } + + clearCache(exclude: exclude); _updateBotOptions(); }