diff --git a/lib/pangea/pages/analytics/analytics_list_tile.dart b/lib/pangea/pages/analytics/analytics_list_tile.dart index ab35b2610..811f02f6f 100644 --- a/lib/pangea/pages/analytics/analytics_list_tile.dart +++ b/lib/pangea/pages/analytics/analytics_list_tile.dart @@ -104,7 +104,6 @@ class AnalyticsListTileState extends State { ) : null, selected: widget.selected, - enabled: widget.enabled, onTap: () { (room?.isSpace ?? false) && widget.allowNavigateOnSelect ? context.go( diff --git a/lib/pangea/pages/analytics/base_analytics.dart b/lib/pangea/pages/analytics/base_analytics.dart index 634a39980..55731cfb3 100644 --- a/lib/pangea/pages/analytics/base_analytics.dart +++ b/lib/pangea/pages/analytics/base_analytics.dart @@ -5,6 +5,7 @@ import 'package:fluffychat/pangea/extensions/client_extension.dart'; 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'; @@ -101,18 +102,40 @@ class BaseAnalyticsController extends State { } } - void toggleSelection(AnalyticsSelected selectedParam) { + Future toggleSelection(AnalyticsSelected selectedParam) async { + final bool joinSelectedRoom = + selectedParam.type == AnalyticsEntryType.room && + !enableSelection( + selectedParam, + ); + + if (joinSelectedRoom) { + await showFutureLoadingDialog( + context: context, + future: () async { + final waitForRoom = Matrix.of(context).client.waitForRoomInSync( + selectedParam.id, + join: true, + ); + await Matrix.of(context).client.joinRoom(selectedParam.id); + await waitForRoom; + }, + ); + } + setState(() { debugPrint("selectedParam.id is ${selectedParam.id}"); currentLemma = null; selected = isSelected(selectedParam.id) ? null : selectedParam; }); + pangeaController.analytics.setConstructs( constructType: ConstructType.grammar, defaultSelected: widget.defaultSelected, selected: selected, removeIT: true, ); + Future.delayed(Duration.zero, () => setState(() {})); } diff --git a/lib/pangea/pages/analytics/base_analytics_view.dart b/lib/pangea/pages/analytics/base_analytics_view.dart index 86f179829..0c9bf3bc4 100644 --- a/lib/pangea/pages/analytics/base_analytics_view.dart +++ b/lib/pangea/pages/analytics/base_analytics_view.dart @@ -145,6 +145,7 @@ class BaseAnalyticsView extends StatelessWidget { ) * 72, child: TabBarView( + physics: const NeverScrollableScrollPhysics(), children: [ Column( crossAxisAlignment: diff --git a/lib/pangea/pages/analytics/construct_list.dart b/lib/pangea/pages/analytics/construct_list.dart index ca48d4d92..508a1bc7e 100644 --- a/lib/pangea/pages/analytics/construct_list.dart +++ b/lib/pangea/pages/analytics/construct_list.dart @@ -243,9 +243,13 @@ class ConstructListViewState extends State { List? get constructs => widget.pangeaController.analytics.constructs != null - ? widget.pangeaController.myAnalytics.aggregateConstructData( - widget.pangeaController.analytics.constructs!, - ) + ? widget.pangeaController.myAnalytics + .aggregateConstructData( + widget.pangeaController.analytics.constructs!, + ) + .sorted( + (a, b) => b.uses.length.compareTo(a.uses.length), + ) : null; AggregateConstructUses? get currentConstruct => constructs?.firstWhereOrNull(