Fetch devices based on selection

This commit is contained in:
Abdullah Alassaf
2025-02-03 11:15:36 +03:00
parent 5ae07688cb
commit 506531e16a
9 changed files with 49 additions and 22 deletions

View File

@ -1,6 +1,8 @@
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart';
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
import 'package:syncrow_web/services/devices_mang_api.dart';
part 'device_managment_event.dart';
@ -32,7 +34,19 @@ class DeviceManagementBloc extends Bloc<DeviceManagementEvent, DeviceManagementS
Future<void> _onFetchDevices(FetchDevices event, Emitter<DeviceManagementState> emit) async {
emit(DeviceManagementLoading());
try {
final devices = await DevicesManagementApi().fetchDevices(event.communityId, event.spaceId);
List<AllDevicesModel> devices = [];
var spaceBloc = event.context.read<SpaceTreeBloc>();
if (spaceBloc.state.selectedCommunities.isEmpty) {
devices = await DevicesManagementApi().fetchDevices('', '');
} else {
for (var community in spaceBloc.state.selectedCommunities) {
List<String> spacesList = spaceBloc.state.selectedCommunityAndSpaces[community] ?? [];
for (var space in spacesList) {
await DevicesManagementApi().fetchDevices(community, space);
}
}
}
_selectedDevices.clear();
_devices = devices;
_filteredDevices = devices;

View File

@ -8,12 +8,13 @@ abstract class DeviceManagementEvent extends Equatable {
}
class FetchDevices extends DeviceManagementEvent {
final String communityId;
final String spaceId;
// final Map<String, List<String>> selectedCommunitiesSpaces;
// final String spaceId;
final BuildContext context;
const FetchDevices(this.communityId, this.spaceId);
const FetchDevices(this.context);
@override
List<Object?> get props => [communityId, spaceId];
List<Object?> get props => [context];
}
class FilterDevices extends DeviceManagementEvent {

View File

@ -19,7 +19,7 @@ class DeviceManagementPage extends StatelessWidget with HelperResponsiveLayout {
return MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => DeviceManagementBloc()..add(const FetchDevices('', '')),
create: (context) => DeviceManagementBloc()..add(FetchDevices(context)),
),
],
child: WebScaffold(

View File

@ -8,6 +8,7 @@ import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_mo
import 'package:syncrow_web/pages/device_managment/all_devices/widgets/device_search_filters.dart';
import 'package:syncrow_web/pages/device_managment/shared/device_batch_control_dialog.dart';
import 'package:syncrow_web/pages/device_managment/shared/device_control_dialog.dart';
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
import 'package:syncrow_web/pages/space_tree/view/space_tree_view.dart';
import 'package:syncrow_web/utils/format_date_time.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
@ -62,12 +63,11 @@ class DeviceManagementBody extends StatelessWidget with HelperResponsiveLayout {
return Row(
children: [
const Expanded(
child: SpaceTreeView(
// onSelectAction: (String communityId, String spaceId) {
// context.read<DeviceManagementBloc>().add(FetchDevices(communityId, spaceId));
// },
)),
Expanded(child: SpaceTreeView(
onSelect: () {
context.read<DeviceManagementBloc>().add(FetchDevices(context));
},
)),
Expanded(
flex: 3,
child: state is DeviceManagementLoading

View File

@ -85,7 +85,7 @@ class _DeviceSearchFiltersState extends State<DeviceSearchFilters> with HelperRe
productNameController.clear();
context.read<DeviceManagementBloc>()
..add(ResetFilters())
..add(const FetchDevices('', ''));
..add(FetchDevices(context));
},
);
}