diff --git a/lib/pages/space_management_v2/modules/devices/domain/models/device_model.dart b/lib/pages/space_management_v2/modules/devices/domain/models/device_model.dart deleted file mode 100644 index 3ddb4eea..00000000 --- a/lib/pages/space_management_v2/modules/devices/domain/models/device_model.dart +++ /dev/null @@ -1,82 +0,0 @@ -import 'package:equatable/equatable.dart'; - -class DeviceModel extends Equatable { - final String uuid; - final String name; - final String type; - final String status; - final String lastSeen; - final String spaceUuid; - final List capabilities; - - const DeviceModel({ - required this.uuid, - required this.name, - required this.type, - required this.status, - required this.lastSeen, - required this.spaceUuid, - required this.capabilities, - }); - - factory DeviceModel.fromJson(Map json) { - return DeviceModel( - uuid: json['uuid'] as String, - name: json['name'] as String, - type: json['type'] as String, - status: json['status'] as String, - lastSeen: json['lastSeen'] as String, - spaceUuid: json['spaceUuid'] as String, - capabilities: (json['capabilities'] as List) - .map((e) => DeviceCapability.fromJson(e as Map)) - .toList(), - ); - } - - Map toJson() { - return { - 'uuid': uuid, - 'name': name, - 'type': type, - 'status': status, - 'lastSeen': lastSeen, - 'spaceUuid': spaceUuid, - 'capabilities': capabilities.map((e) => e.toJson()).toList(), - }; - } - - @override - List get props => - [uuid, name, type, status, lastSeen, spaceUuid, capabilities]; -} - -class DeviceCapability extends Equatable { - final String name; - final String type; - final Map config; - - const DeviceCapability({ - required this.name, - required this.type, - required this.config, - }); - - factory DeviceCapability.fromJson(Map json) { - return DeviceCapability( - name: json['name'] as String, - type: json['type'] as String, - config: json['config'] as Map, - ); - } - - Map toJson() { - return { - 'name': name, - 'type': type, - 'config': config, - }; - } - - @override - List get props => [name, type, config]; -} diff --git a/lib/pages/space_management_v2/modules/devices/domain/services/device_service.dart b/lib/pages/space_management_v2/modules/devices/domain/services/device_service.dart deleted file mode 100644 index 9721962d..00000000 --- a/lib/pages/space_management_v2/modules/devices/domain/services/device_service.dart +++ /dev/null @@ -1,6 +0,0 @@ -import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/models/device_model.dart'; -import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/params/load_devices_param.dart'; - -abstract class DeviceService { - Future> getDevices(LoadDevicesParam param); -} diff --git a/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_bloc.dart b/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_bloc.dart deleted file mode 100644 index cdae542e..00000000 --- a/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_bloc.dart +++ /dev/null @@ -1,32 +0,0 @@ -import 'package:bloc/bloc.dart'; -import 'package:equatable/equatable.dart'; -import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/models/device_model.dart'; -import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/params/load_devices_param.dart'; -import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/services/device_service.dart'; -import 'package:syncrow_web/services/api/api_exception.dart'; - -part 'device_event.dart'; -part 'device_state.dart'; - -class DeviceBloc extends Bloc { - final DeviceService _deviceService; - - DeviceBloc(this._deviceService) : super(DeviceInitial()) { - on(_onLoadDevices); - } - - Future _onLoadDevices( - LoadDevices event, - Emitter emit, - ) async { - emit(DeviceLoading()); - try { - final devices = await _deviceService.getDevices(event.param); - emit(DeviceLoaded(devices)); - } on APIException catch (e) { - emit(DeviceFailure(e.message)); - } catch (e) { - emit(DeviceFailure(e.toString())); - } - } -} diff --git a/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_event.dart b/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_event.dart deleted file mode 100644 index bec89dee..00000000 --- a/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_event.dart +++ /dev/null @@ -1,17 +0,0 @@ -part of 'device_bloc.dart'; - -sealed class DeviceEvent extends Equatable { - const DeviceEvent(); - - @override - List get props => []; -} - -final class LoadDevices extends DeviceEvent { - const LoadDevices(this.param); - - final LoadDevicesParam param; - - @override - List get props => [param]; -} diff --git a/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_state.dart b/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_state.dart deleted file mode 100644 index a5c028df..00000000 --- a/lib/pages/space_management_v2/modules/devices/presentation/bloc/device_state.dart +++ /dev/null @@ -1,30 +0,0 @@ -part of 'device_bloc.dart'; - -sealed class DeviceState extends Equatable { - const DeviceState(); - - @override - List get props => []; -} - -final class DeviceInitial extends DeviceState {} - -final class DeviceLoading extends DeviceState {} - -final class DeviceLoaded extends DeviceState { - final List devices; - - const DeviceLoaded(this.devices); - - @override - List get props => [devices]; -} - -final class DeviceFailure extends DeviceState { - final String message; - - const DeviceFailure(this.message); - - @override - List get props => [message]; -} diff --git a/lib/pages/space_management_v2/modules/devices/data/services/remote_device_service.dart b/lib/pages/space_management_v2/modules/products/data/services/remote_products_service.dart similarity index 66% rename from lib/pages/space_management_v2/modules/devices/data/services/remote_device_service.dart rename to lib/pages/space_management_v2/modules/products/data/services/remote_products_service.dart index df1a9f76..47b8f6aa 100644 --- a/lib/pages/space_management_v2/modules/devices/data/services/remote_device_service.dart +++ b/lib/pages/space_management_v2/modules/products/data/services/remote_products_service.dart @@ -1,21 +1,19 @@ import 'package:dio/dio.dart'; -import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/models/device_model.dart'; -import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/params/load_devices_param.dart'; -import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/services/device_service.dart'; +import 'package:syncrow_web/pages/space_management_v2/modules/products/domain/models/product_model.dart'; +import 'package:syncrow_web/pages/space_management_v2/modules/products/domain/params/load_products_param.dart'; +import 'package:syncrow_web/pages/space_management_v2/modules/products/domain/services/products_service.dart'; import 'package:syncrow_web/services/api/api_exception.dart'; import 'package:syncrow_web/services/api/http_service.dart'; -class RemoteDeviceService implements DeviceService { - final HTTPService _httpService; +class RemoteProductsService implements ProductsService { + const RemoteProductsService(this._httpService); - RemoteDeviceService({ - required HTTPService httpService, - }) : _httpService = httpService; + final HTTPService _httpService; static const _defaultErrorMessage = 'Failed to load devices'; @override - Future> getDevices(LoadDevicesParam param) async { + Future> getProducts(LoadProductsParam param) async { try { final response = await _httpService.get( path: 'devices', @@ -26,7 +24,7 @@ class RemoteDeviceService implements DeviceService { }, expectedResponseModel: (data) { return (data as List) - .map((e) => DeviceModel.fromJson(e as Map)) + .map((e) => ProductModel.fromJson(e as Map)) .toList(); }, ); diff --git a/lib/pages/space_management_v2/modules/products/domain/models/product_model.dart b/lib/pages/space_management_v2/modules/products/domain/models/product_model.dart new file mode 100644 index 00000000..03a7995c --- /dev/null +++ b/lib/pages/space_management_v2/modules/products/domain/models/product_model.dart @@ -0,0 +1,21 @@ +import 'package:equatable/equatable.dart'; + +class ProductModel extends Equatable { + final String uuid; + final String name; + + const ProductModel({ + required this.uuid, + required this.name, + }); + + factory ProductModel.fromJson(Map json) { + return ProductModel( + uuid: json['uuid'] as String, + name: json['name'] as String, + ); + } + + @override + List get props => [uuid, name]; +} diff --git a/lib/pages/space_management_v2/modules/devices/domain/params/load_devices_param.dart b/lib/pages/space_management_v2/modules/products/domain/params/load_products_param.dart similarity index 72% rename from lib/pages/space_management_v2/modules/devices/domain/params/load_devices_param.dart rename to lib/pages/space_management_v2/modules/products/domain/params/load_products_param.dart index 2bd1f1aa..87194ae7 100644 --- a/lib/pages/space_management_v2/modules/devices/domain/params/load_devices_param.dart +++ b/lib/pages/space_management_v2/modules/products/domain/params/load_products_param.dart @@ -1,9 +1,9 @@ -class LoadDevicesParam { +class LoadProductsParam { final String spaceUuid; final String? type; final String? status; - const LoadDevicesParam({ + const LoadProductsParam({ required this.spaceUuid, this.type, this.status, diff --git a/lib/pages/space_management_v2/modules/products/domain/services/products_service.dart b/lib/pages/space_management_v2/modules/products/domain/services/products_service.dart new file mode 100644 index 00000000..fe9b2850 --- /dev/null +++ b/lib/pages/space_management_v2/modules/products/domain/services/products_service.dart @@ -0,0 +1,6 @@ +import 'package:syncrow_web/pages/space_management_v2/modules/products/domain/models/product_model.dart'; +import 'package:syncrow_web/pages/space_management_v2/modules/products/domain/params/load_products_param.dart'; + +abstract class ProductsService { + Future> getProducts(LoadProductsParam param); +} diff --git a/lib/pages/space_management_v2/modules/products/presentation/bloc/products_bloc.dart b/lib/pages/space_management_v2/modules/products/presentation/bloc/products_bloc.dart new file mode 100644 index 00000000..a0f227c1 --- /dev/null +++ b/lib/pages/space_management_v2/modules/products/presentation/bloc/products_bloc.dart @@ -0,0 +1,32 @@ +import 'package:bloc/bloc.dart'; +import 'package:equatable/equatable.dart'; +import 'package:syncrow_web/pages/space_management_v2/modules/products/domain/models/product_model.dart'; +import 'package:syncrow_web/pages/space_management_v2/modules/products/domain/params/load_products_param.dart'; +import 'package:syncrow_web/pages/space_management_v2/modules/products/domain/services/products_service.dart'; +import 'package:syncrow_web/services/api/api_exception.dart'; + +part 'products_event.dart'; +part 'products_state.dart'; + +class ProductsBloc extends Bloc { + final ProductsService _deviceService; + + ProductsBloc(this._deviceService) : super(ProductsInitial()) { + on(_onLoadDevices); + } + + Future _onLoadDevices( + LoadProducts event, + Emitter emit, + ) async { + emit(ProductsLoading()); + try { + final devices = await _deviceService.getProducts(event.param); + emit(ProductsLoaded(devices)); + } on APIException catch (e) { + emit(ProductsFailure(e.message)); + } catch (e) { + emit(ProductsFailure(e.toString())); + } + } +} diff --git a/lib/pages/space_management_v2/modules/products/presentation/bloc/products_event.dart b/lib/pages/space_management_v2/modules/products/presentation/bloc/products_event.dart new file mode 100644 index 00000000..971b6d27 --- /dev/null +++ b/lib/pages/space_management_v2/modules/products/presentation/bloc/products_event.dart @@ -0,0 +1,17 @@ +part of 'products_bloc.dart'; + +sealed class ProductsEvent extends Equatable { + const ProductsEvent(); + + @override + List get props => []; +} + +final class LoadProducts extends ProductsEvent { + const LoadProducts(this.param); + + final LoadProductsParam param; + + @override + List get props => [param]; +} diff --git a/lib/pages/space_management_v2/modules/products/presentation/bloc/products_state.dart b/lib/pages/space_management_v2/modules/products/presentation/bloc/products_state.dart new file mode 100644 index 00000000..68942282 --- /dev/null +++ b/lib/pages/space_management_v2/modules/products/presentation/bloc/products_state.dart @@ -0,0 +1,30 @@ +part of 'products_bloc.dart'; + +sealed class ProductsState extends Equatable { + const ProductsState(); + + @override + List get props => []; +} + +final class ProductsInitial extends ProductsState {} + +final class ProductsLoading extends ProductsState {} + +final class ProductsLoaded extends ProductsState { + final List devices; + + const ProductsLoaded(this.devices); + + @override + List get props => [devices]; +} + +final class ProductsFailure extends ProductsState { + final String message; + + const ProductsFailure(this.message); + + @override + List get props => [message]; +}