diff --git a/lib/pangea/pages/analytics/base_analytics.dart b/lib/pangea/pages/analytics/base_analytics.dart index fb5295dfe..768050082 100644 --- a/lib/pangea/pages/analytics/base_analytics.dart +++ b/lib/pangea/pages/analytics/base_analytics.dart @@ -9,6 +9,7 @@ import 'package:fluffychat/pangea/pages/analytics/base_analytics_view.dart'; import 'package:fluffychat/pangea/pages/analytics/student_analytics/student_analytics.dart'; import 'package:flutter/material.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; +import 'package:matrix/matrix.dart'; import '../../../widgets/matrix.dart'; import '../../controllers/pangea_controller.dart'; @@ -48,6 +49,13 @@ class BaseAnalyticsController extends State { bool isSelected(String chatOrStudentId) => chatOrStudentId == selected?.id; + Room? get activeSpace { + if (widget.defaultSelected.type == AnalyticsEntryType.space) { + return Matrix.of(context).client.getRoomById(widget.defaultSelected.id); + } + return null; + } + @override void initState() { super.initState(); diff --git a/lib/pangea/pages/analytics/base_analytics_view.dart b/lib/pangea/pages/analytics/base_analytics_view.dart index 151497063..09805ef71 100644 --- a/lib/pangea/pages/analytics/base_analytics_view.dart +++ b/lib/pangea/pages/analytics/base_analytics_view.dart @@ -62,22 +62,39 @@ class BaseAnalyticsView extends StatelessWidget { style: const TextStyle(decoration: TextDecoration.underline), recognizer: TapGestureRecognizer() ..onTap = () { - if (controller.widget.selectedView == null) return; - String route = + final String route = "/rooms/${controller.widget.defaultSelected.type.route}"; - if (controller.widget.defaultSelected.type == - AnalyticsEntryType.space) { - route += "/${controller.widget.defaultSelected.id}"; - } context.go(route); }, ), + if (controller.activeSpace != null) + const TextSpan( + text: " > ", + ), + if (controller.activeSpace != null) + TextSpan( + text: controller.activeSpace!.getLocalizedDisplayname(), + style: const TextStyle(decoration: TextDecoration.underline), + recognizer: TapGestureRecognizer() + ..onTap = () { + if (controller.widget.selectedView == null) return; + String route = + "/rooms/${controller.widget.defaultSelected.type.route}"; + if (controller.widget.defaultSelected.type == + AnalyticsEntryType.space) { + route += "/${controller.widget.defaultSelected.id}"; + } + context.go(route); + }, + ), if (controller.widget.selectedView != null) const TextSpan( text: " > ", ), if (controller.widget.selectedView != null) - TextSpan(text: controller.widget.selectedView!.string(context)), + TextSpan( + text: controller.widget.selectedView!.string(context), + ), ], ), overflow: TextOverflow.ellipsis,