import 'dart:async'; import 'package:flutter/material.dart'; import '../feature/devices/device_model.dart'; import '../product/base/bloc/base_bloc.dart'; import '../product/constant/app/app_constants.dart'; import '../product/services/api_services.dart'; import '../product/utils/date_time_utils.dart'; import '../product/utils/device_utils.dart'; import '../feature/device_log/device_logs_model.dart'; class DeviceLogsBloc extends BlocBase { APIServices apiServices = APIServices(); final fromDate = StreamController.broadcast(); StreamSink get sinkFromDate => fromDate.sink; Stream get streamFromDate => fromDate.stream; final hasMore = StreamController.broadcast(); StreamSink get sinkHasMore => hasMore.sink; Stream get streamHasMore => hasMore.stream; final allDevices = StreamController>.broadcast(); StreamSink> get sinkAllDevices => allDevices.sink; Stream> get streamAllDevices => allDevices.stream; final sensors = StreamController>.broadcast(); StreamSink> get sinkSensors => sensors.sink; Stream> get streamSensors => sensors.stream; final message = StreamController.broadcast(); StreamSink get sinkmessage => message.sink; Stream get streammessage => message.stream; @override void dispose() {} void getAllDevices(BuildContext context) async { await apiServices.execute(context, () async { List originalDevices = await apiServices.getOwnerDevices(); List devices = DeviceUtils.instance.sortDeviceByState(originalDevices); sinkAllDevices.add(devices); }); } void getDeviceLogByThingID( BuildContext context, int offset, String thingID, DateTime fromDate, List sensors, ) async { await apiServices.execute(context, () async { sinkmessage.add(ApplicationConstants.LOADING); String fromDateString = DateTimeUtils.instance.formatDateTimeToString(fromDate); String now = DateTimeUtils.instance.formatDateTimeToString(DateTime.now()); Map params = { 'thing_id': thingID, 'from': fromDateString, 'to': now, 'limit': '30', "offset": offset.toString(), "asc": "true" }; DeviceLog devicesListLog = await apiServices.getLogsOfDevice(thingID, params); if (devicesListLog.sensors!.isEmpty) { bool hasMore = false; sinkHasMore.add(hasMore); } if (devicesListLog.sensors!.isNotEmpty) { for (var sensor in devicesListLog.sensors!) { sensors.add(sensor); } } else { sinkmessage.add(ApplicationConstants.NO_DATA); } sinkSensors.add(sensors); }); // try { // sinkmessage.add(ApplicationConstants.LOADING); // String fromDateString = // DateTimeUtils.instance.formatDateTimeToString(fromDate); // String now = // DateTimeUtils.instance.formatDateTimeToString(DateTime.now()); // Map params = { // 'thing_id': thingID, // 'from': fromDateString, // 'to': now, // 'limit': '30', // "offset": offset.toString(), // "asc": "true" // }; // DeviceLog devicesListLog = // await apiServices.getLogsOfDevice(thingID, params); // if (devicesListLog.sensors!.isEmpty) { // bool hasMore = false; // sinkHasMore.add(hasMore); // } // if (devicesListLog.sensors!.isNotEmpty) { // for (var sensor in devicesListLog.sensors!) { // sensors.add(sensor); // } // } else { // sinkmessage.add(ApplicationConstants.NO_DATA); // } // sinkSensors.add(sensors); // } catch (e) { // if (!context.mounted) return; // showErrorTopSnackBarCustom(context, e.toString()); // } } }