57 lines
1.5 KiB
Dart
57 lines
1.5 KiB
Dart
import 'dart:convert';
|
|
|
|
class ProjectTaskComment {
|
|
final int id;
|
|
final int taskId;
|
|
final int userId;
|
|
final String content;
|
|
final List<String> images;
|
|
final DateTime createdAt;
|
|
|
|
ProjectTaskComment({
|
|
required this.id,
|
|
required this.taskId,
|
|
required this.userId,
|
|
required this.content,
|
|
required this.images,
|
|
required this.createdAt,
|
|
});
|
|
|
|
factory ProjectTaskComment.fromJson(Map<String, dynamic> json) {
|
|
List<String> parsedImages = [];
|
|
if (json['images'] != null) {
|
|
if (json['images'] is String) {
|
|
try {
|
|
final decoded = jsonDecode(json['images']);
|
|
if (decoded is List) {
|
|
for (var item in decoded) {
|
|
if (item is String) {
|
|
parsedImages.add(item);
|
|
} else if (item is Map) {
|
|
parsedImages.add(jsonEncode(item)); // keep it as json string
|
|
}
|
|
}
|
|
}
|
|
} catch (_) {}
|
|
} else if (json['images'] is List) {
|
|
for (var item in json['images']) {
|
|
if (item is String) {
|
|
parsedImages.add(item);
|
|
} else if (item is Map) {
|
|
parsedImages.add(jsonEncode(item));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return ProjectTaskComment(
|
|
id: json['id'] as int,
|
|
taskId: json['taskId'] as int,
|
|
userId: json['userId'] as int,
|
|
content: json['content'] as String,
|
|
images: parsedImages,
|
|
createdAt: DateTime.parse(json['createdAt']),
|
|
);
|
|
}
|
|
}
|