diff --git a/lib/pages/analytics/modules/analytics/strategies/energy_management_data_loading_strategy.dart b/lib/pages/analytics/modules/analytics/strategies/energy_management_data_loading_strategy.dart index 2d12ed28..1e251a41 100644 --- a/lib/pages/analytics/modules/analytics/strategies/energy_management_data_loading_strategy.dart +++ b/lib/pages/analytics/modules/analytics/strategies/energy_management_data_loading_strategy.dart @@ -14,12 +14,20 @@ class EnergyManagementDataLoadingStrategy implements AnalyticsDataLoadingStrateg CommunityModel community, List spaces, ) { + // Add to space tree bloc first context.read().add( OnCommunitySelected( community.uuid, spaces, ), ); + + final spaceTreeState = context.read().state; + if (spaceTreeState.selectedCommunities.contains(community.uuid)) { + clearData(context); + return; + } + FetchEnergyManagementDataHelper.loadEnergyManagementData( context, communityId: community.uuid, @@ -41,6 +49,13 @@ class EnergyManagementDataLoadingStrategy implements AnalyticsDataLoadingStrateg ), ); + final spaceTreeState = context.read().state; + if (spaceTreeState.selectedCommunities.contains(community.uuid) || + spaceTreeState.selectedSpaces.contains(space.uuid)) { + clearData(context); + return; + } + FetchEnergyManagementDataHelper.loadEnergyManagementData( context, communityId: community.uuid, @@ -54,7 +69,7 @@ class EnergyManagementDataLoadingStrategy implements AnalyticsDataLoadingStrateg CommunityModel community, SpaceModel child, ) { - // Do nothing + // Do nothing else as per original implementation } @override diff --git a/lib/pages/analytics/modules/analytics/strategies/occupancy_data_loading_strategy.dart b/lib/pages/analytics/modules/analytics/strategies/occupancy_data_loading_strategy.dart index 588a125b..fb93ec30 100644 --- a/lib/pages/analytics/modules/analytics/strategies/occupancy_data_loading_strategy.dart +++ b/lib/pages/analytics/modules/analytics/strategies/occupancy_data_loading_strategy.dart @@ -20,6 +20,12 @@ class OccupancyDataLoadingStrategy implements AnalyticsDataLoadingStrategy { spaces.isNotEmpty ? [spaces.first] : [], ), ); + + final spaceTreeState = context.read().state; + if (spaceTreeState.selectedCommunities.contains(community.uuid)) { + clearData(context); + return; + } FetchOccupancyDataHelper.loadOccupancyData( context, communityId: community.uuid, @@ -47,6 +53,13 @@ class OccupancyDataLoadingStrategy implements AnalyticsDataLoadingStrategy { ..add(OnSpaceSelected(community, space.uuid ?? '', [])); } + final spaceTreeState = context.read().state; + if (spaceTreeState.selectedCommunities.contains(community.uuid) || + spaceTreeState.selectedSpaces.contains(space.uuid)) { + clearData(context); + return; + } + FetchOccupancyDataHelper.loadOccupancyData( context, communityId: community.uuid, @@ -66,6 +79,6 @@ class OccupancyDataLoadingStrategy implements AnalyticsDataLoadingStrategy { @override void clearData(BuildContext context) { context.read().add(const SpaceTreeClearSelectionEvent()); - // FetchOccupancyDataHelper.clearAllData(context); + FetchOccupancyDataHelper.clearAllData(context); } } diff --git a/lib/pages/analytics/modules/analytics/widgets/analytics_communities_sidebar.dart b/lib/pages/analytics/modules/analytics/widgets/analytics_communities_sidebar.dart index b63c6411..24799a0e 100644 --- a/lib/pages/analytics/modules/analytics/widgets/analytics_communities_sidebar.dart +++ b/lib/pages/analytics/modules/analytics/widgets/analytics_communities_sidebar.dart @@ -14,14 +14,24 @@ class AnalyticsCommunitiesSidebar extends StatelessWidget { return Expanded( child: AnalyticsSpaceTreeView( - onSelectCommunity: (community, spaces) { - strategy.onCommunitySelected(context, community, spaces); + onSelectCommunity: (community, spaces) async { + await Future.delayed(const Duration(milliseconds: 100), () { + if (!context.mounted) return; + strategy.onCommunitySelected(context, community, spaces); + }); }, - onSelectSpace: (community, space) { - strategy.onSpaceSelected(context, community, space); + onSelectSpace: (community, space) async { + await Future.delayed(const Duration(milliseconds: 100), () { + if (!context.mounted) return; + strategy.onSpaceSelected(context, community, space); + }); }, - onSelectChildSpace: (community, child) { - strategy.onChildSpaceSelected(context, community, child); + onSelectChildSpace: (community, child) async { + await Future.delayed(const Duration(milliseconds: 100), () { + if (!context.mounted) return; + strategy.onChildSpaceSelected(context, community, child); + }); + }, ), );