mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-08-25 15:39:41 +00:00
Refactor Space and Tag Models: Removed unused JSON serialization methods from SpaceDetailsModel, ProductAllocation, and Subspace. Updated Tag model to eliminate unnecessary fields. Enhanced UpdateSpaceParam to streamline JSON conversion for subspaces and product allocations, improving data handling during updates.
This commit is contained in:
@ -40,16 +40,6 @@ class SpaceDetailsModel extends Equatable {
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'uuid': uuid,
|
||||
'spaceName': spaceName,
|
||||
'icon': icon,
|
||||
'productAllocations': productAllocations.map((e) => e.toJson()).toList(),
|
||||
'subspaces': subspaces.map((e) => e.toJson()).toList(),
|
||||
};
|
||||
}
|
||||
|
||||
SpaceDetailsModel copyWith({
|
||||
String? uuid,
|
||||
String? spaceName,
|
||||
@ -89,14 +79,6 @@ class ProductAllocation extends Equatable {
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'uuid': uuid,
|
||||
'product': product.toJson(),
|
||||
'tag': tag.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
ProductAllocation copyWith({
|
||||
String? uuid,
|
||||
Product? product,
|
||||
@ -134,14 +116,6 @@ class Subspace extends Equatable {
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'uuid': uuid,
|
||||
'name': name,
|
||||
'productAllocations': productAllocations.map((e) => e.toJson()).toList(),
|
||||
};
|
||||
}
|
||||
|
||||
Subspace copyWith({
|
||||
String? uuid,
|
||||
String? name,
|
||||
|
@ -37,7 +37,7 @@ class _SpaceSubSpacesDialogState extends State<SpaceSubSpacesDialog> {
|
||||
..._subspaces,
|
||||
Subspace(
|
||||
name: name,
|
||||
uuid: const Uuid().v4(),
|
||||
uuid: '${const Uuid().v4()}-NewTag',
|
||||
productAllocations: const [],
|
||||
),
|
||||
];
|
||||
|
@ -3,41 +3,19 @@ import 'package:equatable/equatable.dart';
|
||||
class Tag extends Equatable {
|
||||
final String uuid;
|
||||
final String name;
|
||||
final String createdAt;
|
||||
final String updatedAt;
|
||||
|
||||
const Tag({
|
||||
required this.uuid,
|
||||
required this.name,
|
||||
required this.createdAt,
|
||||
required this.updatedAt,
|
||||
});
|
||||
|
||||
factory Tag.empty() => const Tag(
|
||||
uuid: '',
|
||||
name: '',
|
||||
createdAt: '',
|
||||
updatedAt: '',
|
||||
);
|
||||
|
||||
factory Tag.fromJson(Map<String, dynamic> json) {
|
||||
return Tag(
|
||||
uuid: json['uuid'] as String,
|
||||
name: json['name'] as String,
|
||||
createdAt: json['createdAt'] as String,
|
||||
updatedAt: json['updatedAt'] as String,
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'uuid': uuid,
|
||||
'name': name,
|
||||
'createdAt': createdAt,
|
||||
'updatedAt': updatedAt,
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [uuid, name, createdAt, updatedAt];
|
||||
List<Object?> get props => [uuid, name];
|
||||
}
|
||||
|
@ -214,9 +214,12 @@ class _AssignTagsDialogState extends State<AssignTagsDialog> {
|
||||
for (final product in newProducts) {
|
||||
_space.productAllocations.add(
|
||||
ProductAllocation(
|
||||
uuid: const Uuid().v4(),
|
||||
uuid: '${const Uuid().v4()}-NewProductUuid',
|
||||
product: product,
|
||||
tag: Tag.empty(),
|
||||
tag: Tag(
|
||||
uuid: '${const Uuid().v4()}-NewTag',
|
||||
name: '',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:syncrow_web/pages/space_management_v2/modules/tags/domain/models/tag.dart';
|
||||
import 'package:syncrow_web/utils/color_manager.dart';
|
||||
import 'package:syncrow_web/utils/extension/build_context_x.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
class ProductTagField extends StatefulWidget {
|
||||
final List<Tag> items;
|
||||
@ -53,13 +54,8 @@ class _ProductTagFieldState extends State<ProductTagField> {
|
||||
void _submit(String value) {
|
||||
final lowerCaseValue = value.toLowerCase();
|
||||
final selectedTag = widget.items.firstWhere(
|
||||
(tag) => tag.name.toLowerCase() == lowerCaseValue,
|
||||
orElse: () => Tag(
|
||||
name: value,
|
||||
uuid: '',
|
||||
createdAt: '',
|
||||
updatedAt: '',
|
||||
),
|
||||
(e) => e.name.toLowerCase() == lowerCaseValue,
|
||||
orElse: () => Tag(uuid: '${const Uuid().v4()}-NewTag', name: value),
|
||||
);
|
||||
widget.onSelected(selectedTag);
|
||||
_closeDropdown();
|
||||
|
@ -19,7 +19,7 @@ class RemoteUpdateSpaceService implements UpdateSpaceService {
|
||||
final path = await _makeUrl(param);
|
||||
await _httpService.put(
|
||||
path: path,
|
||||
body: param.space.toJson(),
|
||||
body: param.toJson(),
|
||||
expectedResponseModel: (data) {
|
||||
final response = data as Map<String, dynamic>;
|
||||
final isSuccess = response['success'] as bool;
|
||||
|
@ -13,33 +13,29 @@ class UpdateSpaceParam {
|
||||
return {
|
||||
'spaceName': space.spaceName,
|
||||
'icon': space.icon,
|
||||
'subspaces': space.subspaces
|
||||
.map(
|
||||
(e) => {
|
||||
'subspaceName': e.name,
|
||||
'productAllocations': e.productAllocations
|
||||
.map(
|
||||
(e) => {
|
||||
'name': e.tag.name,
|
||||
'productUuid': e.product.uuid,
|
||||
'uuid': e.uuid,
|
||||
},
|
||||
)
|
||||
.toList(),
|
||||
'uuid': e.uuid,
|
||||
},
|
||||
)
|
||||
.toList(),
|
||||
'productAllocations': space.productAllocations
|
||||
.map(
|
||||
(e) => {
|
||||
'tagName': e.tag.name,
|
||||
'tagUuid': e.tag.uuid,
|
||||
'productUuid': e.product.uuid,
|
||||
},
|
||||
)
|
||||
.toList(),
|
||||
'spaceModelUuid': space.uuid,
|
||||
'subspaces': space.subspaces.map((e) => e._toJson()).toList(),
|
||||
'productAllocations':
|
||||
space.productAllocations.map((e) => e._toJson()).toList(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
extension _ProductAllocationToJson on ProductAllocation {
|
||||
Map<String, dynamic> _toJson() {
|
||||
final isNewTag = tag.uuid.isEmpty;
|
||||
return <String, dynamic>{
|
||||
if (isNewTag) 'tagName': tag.name else 'tagUuid': tag.uuid,
|
||||
'productUuid': product.uuid,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
extension _SubspaceToJson on Subspace {
|
||||
Map<String, dynamic> _toJson() {
|
||||
final isNewSubspace = uuid.endsWith('-NewTag');
|
||||
return <String, dynamic>{
|
||||
if (isNewSubspace) 'subspaceName': name else 'uuid': uuid,
|
||||
'productAllocations': productAllocations.map((e) => e._toJson()).toList(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user