import 'dart:ui'; import 'package:syncrow_web/pages/spaces_management/model/community_model.dart'; class SpaceModel { final String uuid; final DateTime createdAt; final DateTime updatedAt; final String? spaceTuyaUuid; final String name; final bool isPrivate; final String? invitationCode; final bool isParent; final SpaceModel? parent; final CommunityModel? community; final List children; final String? icon; Offset position; bool isHovered; SpaceModel({ required this.uuid, required this.createdAt, required this.updatedAt, this.spaceTuyaUuid, required this.name, required this.isPrivate, this.invitationCode, required this.isParent, this.parent, this.community, required this.children, required this.icon, required this.position, this.isHovered = false, }); factory SpaceModel.fromJson(Map json) { return SpaceModel( uuid: json['uuid'], createdAt: DateTime.parse(json['createdAt']), updatedAt: DateTime.parse(json['updatedAt']), spaceTuyaUuid: json['spaceTuyaUuid'], name: json['name'], isPrivate: json['isPrivate'], invitationCode: json['invitationCode'], isParent: json['isParent'], parent: json['parent'] != null ? SpaceModel.fromJson(json['parent']) : null, community: json['community'] != null ? CommunityModel.fromJson(json['community']) : null, children: json['children'] != null ? (json['children'] as List) .map((child) => SpaceModel.fromJson(child)) .toList() : [], icon: json['icon'], position: json['position'] != null ? Offset(json['position']['dx'], json['position']['dy']) : const Offset(0, 0), isHovered: false, ); } Map toMap() { return { 'uuid': uuid, 'createdAt': createdAt.toIso8601String(), 'updatedAt': updatedAt.toIso8601String(), 'spaceTuyaUuid': spaceTuyaUuid, 'name': name, 'isPrivate': isPrivate, 'invitationCode': invitationCode, 'isParent': isParent, 'parent': parent?.toMap(), 'community': community?.toMap(), 'children': children.map((child) => child.toMap()).toList(), 'icon': icon, 'position': {'dx': position.dx, 'dy': position.dy}, 'isHovered': isHovered, }; } }