feat(mobile): UI-01 album cards, photo grid and full viewer

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-21 15:55:44 +08:00
parent c94b9e5e58
commit f6929ae18f
17 changed files with 2750 additions and 702 deletions
+21 -3
View File
@@ -262,6 +262,9 @@ Map<String, dynamic> adminPhotoJson({
String visibility = 'published',
String processingState = 'ready',
int bytes = 123456,
String uploaderAccount = 'staff02',
String uploaderName = 'Staff Two',
Map<String, dynamic>? preview,
}) => <String, dynamic>{
'photoId': photoId,
'albumId': albumId,
@@ -278,10 +281,25 @@ Map<String, dynamic> adminPhotoJson({
'likeCount': 0,
'uploader': <String, dynamic>{
'userId': 'u-2',
'account': 'staff02',
'displayName': 'Staff Two',
'account': uploaderAccount,
'displayName': uploaderName,
},
'preview': preview,
};
/// 契约 `PhotoPreview` 响应体(thumb/browse 签名 URL)。
Map<String, dynamic> photoPreviewJson({
String thumbUrl = 'http://test.local/thumb.jpg',
String browseUrl = 'http://test.local/browse.jpg',
}) => <String, dynamic>{
'thumb': {
'url': thumbUrl,
'expiresAt': '2026-09-22T00:00:00Z',
},
'browse': {
'url': browseUrl,
'expiresAt': '2026-09-22T00:00:00Z',
},
'preview': null,
};
/// 契约游标分页响应体(hasMore 与 nextCursor 成对)。