♻️ Refactored post draft system

This commit is contained in:
2025-06-25 02:15:45 +08:00
parent b89cffeb18
commit 47c31ddec2
19 changed files with 776 additions and 1844 deletions

View File

@ -9,36 +9,36 @@ part 'post.g.dart';
sealed class SnPost with _$SnPost {
const factory SnPost({
required String id,
required String? title,
required String? description,
required String? language,
required DateTime? editedAt,
required DateTime publishedAt,
required int visibility,
required String? content,
required int type,
required Map<String, dynamic>? meta,
required int viewsUnique,
required int viewsTotal,
required int upvotes,
required int downvotes,
required int repliesCount,
required String? threadedPostId,
required SnPost? threadedPost,
required String? repliedPostId,
required SnPost? repliedPost,
required String? forwardedPostId,
required SnPost? forwardedPost,
required List<SnCloudFile> attachments,
required SnPublisher publisher,
String? title,
String? description,
String? language,
DateTime? editedAt,
@Default(null) DateTime? publishedAt,
@Default(0) int visibility,
String? content,
@Default(0) int type,
Map<String, dynamic>? meta,
@Default(0) int viewsUnique,
@Default(0) int viewsTotal,
@Default(0) int upvotes,
@Default(0) int downvotes,
@Default(0) int repliesCount,
String? threadedPostId,
SnPost? threadedPost,
String? repliedPostId,
SnPost? repliedPost,
String? forwardedPostId,
SnPost? forwardedPost,
@Default([]) List<SnCloudFile> attachments,
@Default(SnPublisher()) SnPublisher publisher,
@Default({}) Map<String, int> reactionsCount,
required List<dynamic> reactions,
required List<dynamic> tags,
required List<dynamic> categories,
required List<dynamic> collections,
required DateTime createdAt,
required DateTime updatedAt,
required DateTime? deletedAt,
@Default([]) List<dynamic> reactions,
@Default([]) List<dynamic> tags,
@Default([]) List<dynamic> categories,
@Default([]) List<dynamic> collections,
@Default(null) DateTime? createdAt,
@Default(null) DateTime? updatedAt,
DateTime? deletedAt,
@Default(false) bool isTruncated,
}) = _SnPost;
@ -48,20 +48,20 @@ sealed class SnPost with _$SnPost {
@freezed
sealed class SnPublisher with _$SnPublisher {
const factory SnPublisher({
required String id,
required int type,
required String name,
required String nick,
@Default('') String id,
@Default(0) int type,
@Default('') String name,
@Default('') String nick,
@Default('') String bio,
required SnCloudFile? picture,
required SnCloudFile? background,
required SnAccount? account,
required String? accountId,
required DateTime createdAt,
required DateTime updatedAt,
required DateTime? deletedAt,
required String? realmId,
required SnVerificationMark? verification,
SnCloudFile? picture,
SnCloudFile? background,
SnAccount? account,
String? accountId,
@Default(null) DateTime? createdAt,
@Default(null) DateTime? updatedAt,
DateTime? deletedAt,
String? realmId,
SnVerificationMark? verification,
}) = _SnPublisher;
factory SnPublisher.fromJson(Map<String, dynamic> json) =>