mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-07-15 09:45:22 +00:00

- Update device status handling from 'status' to 'isOnline' for consistency - Remove unused imports and redundant code related to light switches - Refactor UI components to use 'isOnline' instead of 'status' for device status
117 lines
2.7 KiB
Dart
117 lines
2.7 KiB
Dart
import 'package:syncrow_app/features/devices/model/function_model.dart';
|
|
import 'package:syncrow_app/utils/resource_manager/constants.dart';
|
|
|
|
class DeviceModel {
|
|
int? activeTime;
|
|
String? category;
|
|
String? categoryName;
|
|
int? createTime;
|
|
String? gatewayId;
|
|
String? icon;
|
|
String? id;
|
|
String? ip;
|
|
double? lat;
|
|
String? localKey;
|
|
double? lon;
|
|
String? model;
|
|
String? name;
|
|
String? nodeId; //rmeove
|
|
bool? isOnline;
|
|
String? ownerId; //remove
|
|
String? productId; //remove
|
|
String? productName;
|
|
bool? isSub;
|
|
String? timeZone;
|
|
int? updateTime;
|
|
String? uuid;
|
|
DeviceType? productType;
|
|
bool isSelected = false;
|
|
late List<FunctionModel> functions;
|
|
DeviceModel({
|
|
this.activeTime,
|
|
this.category,
|
|
this.categoryName,
|
|
this.createTime,
|
|
this.gatewayId,
|
|
this.icon,
|
|
this.id,
|
|
this.ip,
|
|
this.lat,
|
|
this.localKey,
|
|
this.lon,
|
|
this.model,
|
|
this.name,
|
|
this.nodeId,
|
|
this.isOnline,
|
|
this.ownerId,
|
|
this.productId,
|
|
this.productName,
|
|
this.isSub,
|
|
this.timeZone,
|
|
this.updateTime,
|
|
this.uuid,
|
|
this.productType,
|
|
}) {
|
|
functions = getFunctions(productType!);
|
|
}
|
|
|
|
factory DeviceModel.fromJson(Map<String, dynamic> json) {
|
|
return DeviceModel(
|
|
activeTime: json['activeTime'],
|
|
category: json['category'],
|
|
categoryName: json['categoryName'],
|
|
createTime: json['createTime'],
|
|
gatewayId: json['gatewayId'],
|
|
icon: json['icon'],
|
|
id: json['id'],
|
|
ip: json['ip'],
|
|
lat: double.tryParse(json['lat']),
|
|
localKey: json['localKey'],
|
|
lon: double.tryParse(json['lon']),
|
|
model: json['model'],
|
|
name: json['name'],
|
|
nodeId: json['nodeId'],
|
|
isOnline: json['online'],
|
|
ownerId: json['ownerId'],
|
|
productId: json['productId'],
|
|
productName: json['productName'],
|
|
isSub: json['sub'],
|
|
timeZone: json['timeZone'],
|
|
updateTime: json['updateTime'],
|
|
uuid: json['uuid'],
|
|
productType: devicesTypesMap[json['productName']] ?? DeviceType.Other,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'activeTime': activeTime,
|
|
'category': category,
|
|
'categoryName': categoryName,
|
|
'createTime': createTime,
|
|
'gatewayId': gatewayId,
|
|
'icon': icon,
|
|
'id': id,
|
|
'ip': ip,
|
|
'lat': lat,
|
|
'localKey': localKey,
|
|
'lon': lon,
|
|
'model': model,
|
|
'name': name,
|
|
'nodeId': nodeId,
|
|
'online': isOnline,
|
|
'ownerId': ownerId,
|
|
'productId': productId,
|
|
'productName': productName,
|
|
'sub': isSub,
|
|
'timeZone': timeZone,
|
|
'updateTime': updateTime,
|
|
'uuid': uuid,
|
|
'productType': productType,
|
|
};
|
|
}
|
|
|
|
List<FunctionModel> getFunctions(DeviceType type) =>
|
|
devicesFunctionsMap[productType] ?? [];
|
|
}
|