Add category filter to galleries

This commit is contained in:
2024-08-10 10:04:48 +00:00
committed by GitHub
parent e74a940191
commit 1a79e41f7a
8 changed files with 210 additions and 85 deletions

View File

@@ -240,6 +240,7 @@ abstract class _EHApi {
@Query("sort_by_gid") bool? sortByGid, @Query("sort_by_gid") bool? sortByGid,
@Query("uploader") String? uploader, @Query("uploader") String? uploader,
@Query("tag") String? tag, @Query("tag") String? tag,
@Query("category") String? category,
@CancelRequest() CancelToken? cancel}); @CancelRequest() CancelToken? cancel});
@GET('/tag/{id}') @GET('/tag/{id}')

View File

@@ -6,7 +6,7 @@ part of 'client.dart';
// RetrofitGenerator // RetrofitGenerator
// ************************************************************************** // **************************************************************************
// ignore_for_file: unnecessary_brace_in_string_interps,no_leading_underscores_for_local_identifiers // ignore_for_file: unnecessary_brace_in_string_interps,no_leading_underscores_for_local_identifiers,unused_element
class __EHApi implements _EHApi { class __EHApi implements _EHApi {
__EHApi( __EHApi(
@@ -51,11 +51,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<BUser>.fromJson( final _value = ApiResult<BUser>.fromJson(
_result.data!, _result.data!,
(json) => BUser.fromJson(json as Map<String, dynamic>), (json) => BUser.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -101,11 +101,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<dynamic>.fromJson( final _value = ApiResult<dynamic>.fromJson(
_result.data!, _result.data!,
(json) => json as dynamic, (json) => json as dynamic,
); );
return value; return _value;
} }
@override @override
@@ -160,11 +160,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<int>.fromJson( final _value = ApiResult<int>.fromJson(
_result.data!, _result.data!,
(json) => json as int, (json) => json as int,
); );
return value; return _value;
} }
@override @override
@@ -209,11 +209,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<dynamic>.fromJson( final _value = ApiResult<dynamic>.fromJson(
_result.data!, _result.data!,
(json) => json as dynamic, (json) => json as dynamic,
); );
return value; return _value;
} }
@override @override
@@ -248,11 +248,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<BUser>.fromJson( final _value = ApiResult<BUser>.fromJson(
_result.data!, _result.data!,
(json) => BUser.fromJson(json as Map<String, dynamic>), (json) => BUser.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -289,7 +289,7 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<List<BUser>>.fromJson( final _value = ApiResult<List<BUser>>.fromJson(
_result.data!, _result.data!,
(json) => json is List<dynamic> (json) => json is List<dynamic>
? json ? json
@@ -297,7 +297,7 @@ class __EHApi implements _EHApi {
.toList() .toList()
: List.empty(), : List.empty(),
); );
return value; return _value;
} }
@override @override
@@ -370,11 +370,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<BUser>.fromJson( final _value = ApiResult<BUser>.fromJson(
_result.data!, _result.data!,
(json) => BUser.fromJson(json as Map<String, dynamic>), (json) => BUser.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -402,11 +402,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<ServerStatus>.fromJson( final _value = ApiResult<ServerStatus>.fromJson(
_result.data!, _result.data!,
(json) => ServerStatus.fromJson(json as Map<String, dynamic>), (json) => ServerStatus.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -501,11 +501,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<Token>.fromJson( final _value = ApiResult<Token>.fromJson(
_result.data!, _result.data!,
(json) => Token.fromJson(json as Map<String, dynamic>), (json) => Token.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -571,11 +571,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<Token>.fromJson( final _value = ApiResult<Token>.fromJson(
_result.data!, _result.data!,
(json) => Token.fromJson(json as Map<String, dynamic>), (json) => Token.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -613,11 +613,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<bool>.fromJson( final _value = ApiResult<bool>.fromJson(
_result.data!, _result.data!,
(json) => json as bool, (json) => json as bool,
); );
return value; return _value;
} }
@override @override
@@ -648,11 +648,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<TokenWithUserInfo>.fromJson( final _value = ApiResult<TokenWithUserInfo>.fromJson(
_result.data!, _result.data!,
(json) => TokenWithUserInfo.fromJson(json as Map<String, dynamic>), (json) => TokenWithUserInfo.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -684,8 +684,8 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = _result.data!.cast<int>(); final _value = _result.data!.cast<int>();
final httpResponse = HttpResponse(value, _result); final httpResponse = HttpResponse(_value, _result);
return httpResponse; return httpResponse;
} }
@@ -718,11 +718,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<EhFileExtend>.fromJson( final _value = ApiResult<EhFileExtend>.fromJson(
_result.data!, _result.data!,
(json) => EhFileExtend.fromJson(json as Map<String, dynamic>), (json) => EhFileExtend.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -760,8 +760,8 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = _result.data!.cast<int>(); final _value = _result.data!.cast<int>();
final httpResponse = HttpResponse(value, _result); final httpResponse = HttpResponse(_value, _result);
return httpResponse; return httpResponse;
} }
@@ -793,11 +793,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<EhFiles>.fromJson( final _value = ApiResult<EhFiles>.fromJson(
_result.data!, _result.data!,
(json) => EhFiles.fromJson(json as Map<String, dynamic>), (json) => EhFiles.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -844,8 +844,8 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = _result.data!.cast<int>(); final _value = _result.data!.cast<int>();
final httpResponse = HttpResponse(value, _result); final httpResponse = HttpResponse(_value, _result);
return httpResponse; return httpResponse;
} }
@@ -877,11 +877,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<GalleryData>.fromJson( final _value = ApiResult<GalleryData>.fromJson(
_result.data!, _result.data!,
(json) => GalleryData.fromJson(json as Map<String, dynamic>), (json) => GalleryData.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -912,11 +912,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<GMetaInfos>.fromJson( final _value = ApiResult<GMetaInfos>.fromJson(
_result.data!, _result.data!,
(json) => GMetaInfos.fromJson(json as Map<String, dynamic>), (json) => GMetaInfos.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -927,6 +927,7 @@ class __EHApi implements _EHApi {
bool? sortByGid, bool? sortByGid,
String? uploader, String? uploader,
String? tag, String? tag,
String? category,
CancelToken? cancel, CancelToken? cancel,
}) async { }) async {
final _extra = <String, dynamic>{}; final _extra = <String, dynamic>{};
@@ -937,6 +938,7 @@ class __EHApi implements _EHApi {
r'sort_by_gid': sortByGid, r'sort_by_gid': sortByGid,
r'uploader': uploader, r'uploader': uploader,
r'tag': tag, r'tag': tag,
r'category': category,
}; };
queryParameters.removeWhere((k, v) => v == null); queryParameters.removeWhere((k, v) => v == null);
final _headers = <String, dynamic>{}; final _headers = <String, dynamic>{};
@@ -959,7 +961,7 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<List<GMeta>>.fromJson( final _value = ApiResult<List<GMeta>>.fromJson(
_result.data!, _result.data!,
(json) => json is List<dynamic> (json) => json is List<dynamic>
? json ? json
@@ -967,7 +969,7 @@ class __EHApi implements _EHApi {
.toList() .toList()
: List.empty(), : List.empty(),
); );
return value; return _value;
} }
@override @override
@@ -998,11 +1000,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<Tags>.fromJson( final _value = ApiResult<Tags>.fromJson(
_result.data!, _result.data!,
(json) => Tags.fromJson(json as Map<String, dynamic>), (json) => Tags.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -1030,7 +1032,7 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<List<Tag>>.fromJson( final _value = ApiResult<List<Tag>>.fromJson(
_result.data!, _result.data!,
(json) => json is List<dynamic> (json) => json is List<dynamic>
? json ? json
@@ -1038,7 +1040,7 @@ class __EHApi implements _EHApi {
.toList() .toList()
: List.empty(), : List.empty(),
); );
return value; return _value;
} }
@override @override
@@ -1077,8 +1079,8 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = _result.data; final _value = _result.data;
final httpResponse = HttpResponse(value, _result); final httpResponse = HttpResponse(_value, _result);
return httpResponse; return httpResponse;
} }
@@ -1136,11 +1138,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<dynamic>.fromJson( final _value = ApiResult<dynamic>.fromJson(
_result.data!, _result.data!,
(json) => json as dynamic, (json) => json as dynamic,
); );
return value; return _value;
} }
@override @override
@@ -1190,11 +1192,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<dynamic>.fromJson( final _value = ApiResult<dynamic>.fromJson(
_result.data!, _result.data!,
(json) => json as dynamic, (json) => json as dynamic,
); );
return value; return _value;
} }
@override @override
@@ -1244,11 +1246,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<dynamic>.fromJson( final _value = ApiResult<dynamic>.fromJson(
_result.data!, _result.data!,
(json) => json as dynamic, (json) => json as dynamic,
); );
return value; return _value;
} }
@override @override
@@ -1279,8 +1281,8 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = Config.fromJson(_result.data!); final _value = Config.fromJson(_result.data!);
return value; return _value;
} }
@override @override
@@ -1312,8 +1314,8 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = UpdateConfigResult.fromJson(_result.data!); final _value = UpdateConfigResult.fromJson(_result.data!);
return value; return _value;
} }
@override @override
@@ -1348,11 +1350,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<EHMetaInfo>.fromJson( final _value = ApiResult<EHMetaInfo>.fromJson(
_result.data!, _result.data!,
(json) => EHMetaInfo.fromJson(json as Map<String, dynamic>), (json) => EHMetaInfo.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -1403,11 +1405,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<Task>.fromJson( final _value = ApiResult<Task>.fromJson(
_result.data!, _result.data!,
(json) => Task.fromJson(json as Map<String, dynamic>), (json) => Task.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -1453,11 +1455,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<Task>.fromJson( final _value = ApiResult<Task>.fromJson(
_result.data!, _result.data!,
(json) => Task.fromJson(json as Map<String, dynamic>), (json) => Task.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -1508,11 +1510,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<Task>.fromJson( final _value = ApiResult<Task>.fromJson(
_result.data!, _result.data!,
(json) => Task.fromJson(json as Map<String, dynamic>), (json) => Task.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -1541,11 +1543,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<DownloadConfig>.fromJson( final _value = ApiResult<DownloadConfig>.fromJson(
_result.data!, _result.data!,
(json) => DownloadConfig.fromJson(json as Map<String, dynamic>), (json) => DownloadConfig.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -1574,11 +1576,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<ExportZipConfig>.fromJson( final _value = ApiResult<ExportZipConfig>.fromJson(
_result.data!, _result.data!,
(json) => ExportZipConfig.fromJson(json as Map<String, dynamic>), (json) => ExportZipConfig.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
@override @override
@@ -1607,11 +1609,11 @@ class __EHApi implements _EHApi {
_dio.options.baseUrl, _dio.options.baseUrl,
baseUrl, baseUrl,
)))); ))));
final value = ApiResult<DefaultImportConfig>.fromJson( final _value = ApiResult<DefaultImportConfig>.fromJson(
_result.data!, _result.data!,
(json) => DefaultImportConfig.fromJson(json as Map<String, dynamic>), (json) => DefaultImportConfig.fromJson(json as Map<String, dynamic>),
); );
return value; return _value;
} }
RequestOptions _setStreamType<T>(RequestOptions requestOptions) { RequestOptions _setStreamType<T>(RequestOptions requestOptions) {

View File

@@ -57,7 +57,14 @@ class GalleryBasicInfo extends StatelessWidget {
context.pushNamed("/galleries", context.pushNamed("/galleries",
queryParameters: {"uploader": gMeta.uploader}); queryParameters: {"uploader": gMeta.uploader});
})), })),
SelectableText(gMeta.category), SelectableText.rich(TextSpan(
text: gMeta.category,
mouseCursor: SystemMouseCursors.click,
recognizer: TapGestureRecognizer()
..onTap = () {
context.pushNamed("/galleries",
queryParameters: {"category": gMeta.category});
})),
], ],
)) ))
])), ])),

View File

@@ -94,8 +94,17 @@ class GalleryInfoDesktop extends StatelessWidget {
SizedBox( SizedBox(
width: 170, width: 170,
child: Column(children: [ child: Column(children: [
SelectableText(gData.meta.category, SelectableText.rich(TextSpan(
style: TextStyle(color: cs.secondary)), text: gData.meta.category,
style: TextStyle(color: cs.secondary),
mouseCursor: SystemMouseCursors.click,
recognizer: TapGestureRecognizer()
..onTap = () {
context.pushNamed("/galleries",
queryParameters: {
"category": gData.meta.category
});
})),
SelectableText.rich(TextSpan( SelectableText.rich(TextSpan(
text: gData.meta.uploader, text: gData.meta.uploader,
style: TextStyle(color: cs.secondary), style: TextStyle(color: cs.secondary),

View File

@@ -61,7 +61,7 @@
} }
} }
}, },
"tagUploaderGalleries": "Galleries tagged {tag} by {uploader}", "tagUploaderGalleries": "Galleries tagged {tag} uploaded by {uploader}",
"@tagUploaderGalleries": { "@tagUploaderGalleries": {
"placeholders": { "placeholders": {
"tag": { "tag": {
@@ -269,5 +269,49 @@
"thumbnailAlignHelp": "This only works if the scaling method is to touch container from outside/inside.", "thumbnailAlignHelp": "This only works if the scaling method is to touch container from outside/inside.",
"createImportTask": "Create import task", "createImportTask": "Create import task",
"importPath": "Path to the file/directory to import", "importPath": "Path to the file/directory to import",
"importSize": "Image size" "importSize": "Image size",
"tagUploaderCategoryGalleries": "Galleries tagged {tag} uploaded by {uploader} in category {category}",
"@tagUploaderCategoryGalleries": {
"placeholders": {
"tag": {
"type": "String"
},
"uploader": {
"type": "String"
},
"category": {
"type": "String"
}
}
},
"categoryGalleries": "Galleries with category {category}",
"@categoryGalleries": {
"placeholders": {
"category": {
"type": "String"
}
}
},
"uploaderCategoryGalleries": "Galleries with category {category} uploaded by {uploader}",
"@uploaderCategoryGalleries": {
"placeholders": {
"category": {
"type": "String"
},
"uploader": {
"type": "String"
}
}
},
"tagCategoryGalleries": "Galleries with category {category} tagged {tag}",
"@tagCategoryGalleries": {
"placeholders": {
"category": {
"type": "String"
},
"tag": {
"type": "String"
}
}
}
} }

View File

@@ -12,9 +12,9 @@
"networkError": "网络错误。", "networkError": "网络错误。",
"internalError": "出现了内部错误,请将日志发送给开发者。", "internalError": "出现了内部错误,请将日志发送给开发者。",
"setServerUrl": "服务器地址", "setServerUrl": "服务器地址",
"createRootUser": "建根用户", "createRootUser": "建根用户",
"skip": "跳过", "skip": "跳过",
"create": "建", "create": "建",
"settings": "设置", "settings": "设置",
"lang": "语言", "lang": "语言",
"systemLang": "系统语言", "systemLang": "系统语言",
@@ -267,7 +267,51 @@
"center": "居中", "center": "居中",
"rightOrBottom": "右/下", "rightOrBottom": "右/下",
"thumbnailAlignHelp": "仅当缩放方法是缩放以填满/适合容器时生效。", "thumbnailAlignHelp": "仅当缩放方法是缩放以填满/适合容器时生效。",
"createImportTask": "建导入任务", "createImportTask": "建导入任务",
"importPath": "需要导入的文件/文件夹路径", "importPath": "需要导入的文件/文件夹路径",
"importSize": "图像大小" "importSize": "图像大小",
"tagUploaderCategoryGalleries": "在分类 {category} 中 {uploader} 上传的带有 {tag} 标签的画廊",
"@tagUploaderCategoryGalleries": {
"placeholders": {
"tag": {
"type": "String"
},
"uploader": {
"type": "String"
},
"category": {
"type": "String"
}
}
},
"categoryGalleries": "分类为 {category} 的画廊",
"@categoryGalleries": {
"placeholders": {
"category": {
"type": "String"
}
}
},
"uploaderCategoryGalleries": "{uploader} 上传的分类为 {category} 的画廊",
"@uploaderCategoryGalleries": {
"placeholders": {
"category": {
"type": "String"
},
"uploader": {
"type": "String"
}
}
},
"tagCategoryGalleries": "分类为 {category} 的带有 {tag} 标签的画廊",
"@tagCategoryGalleries": {
"placeholders": {
"category": {
"type": "String"
},
"tag": {
"type": "String"
}
}
}
} }

View File

@@ -72,6 +72,7 @@ final _router = GoRouter(
} }
final tag = state.uri.queryParameters["tag"]; final tag = state.uri.queryParameters["tag"];
final uploader = state.uri.queryParameters["uploader"]; final uploader = state.uri.queryParameters["uploader"];
final category = state.uri.queryParameters["category"];
final extra = state.extra as GalleriesPageExtra?; final extra = state.extra as GalleriesPageExtra?;
return GalleriesPage( return GalleriesPage(
key: state.pageKey, key: state.pageKey,
@@ -79,6 +80,7 @@ final _router = GoRouter(
tag: tag, tag: tag,
uploader: uploader, uploader: uploader,
translatedTag: extra?.translatedTag, translatedTag: extra?.translatedTag,
category: category,
hasExtra: extra != null); hasExtra: extra != null);
}), }),
GoRoute( GoRoute(

View File

@@ -23,12 +23,14 @@ class GalleriesPage extends StatefulWidget {
this.uploader, this.uploader,
this.tag, this.tag,
this.translatedTag, this.translatedTag,
this.category,
this.hasExtra = false}); this.hasExtra = false});
final SortByGid? sortByGid; final SortByGid? sortByGid;
final String? uploader; final String? uploader;
final String? tag; final String? tag;
final String? translatedTag; final String? translatedTag;
final bool hasExtra; final bool hasExtra;
final String? category;
bool _stt(BuildContext context) => bool _stt(BuildContext context) =>
prefs.getBool("showTranslatedTag") ?? prefs.getBool("showTranslatedTag") ??
MainApp.of(context).lang.toLocale().languageCode == "zh"; MainApp.of(context).lang.toLocale().languageCode == "zh";
@@ -61,6 +63,7 @@ class _GalleriesPage extends State<GalleriesPage>
limit: _pageSize, limit: _pageSize,
sortByGid: _sortByGid, sortByGid: _sortByGid,
uploader: widget.uploader, uploader: widget.uploader,
category: widget.category,
tag: widget.tag)) tag: widget.tag))
.unwrap(); .unwrap();
final isLastPage = list.length < _pageSize; final isLastPage = list.length < _pageSize;
@@ -140,6 +143,7 @@ class _GalleriesPage extends State<GalleriesPage>
"sortByGid": [v!.index.toString()], "sortByGid": [v!.index.toString()],
"tag": [widget.tag ?? ""], "tag": [widget.tag ?? ""],
"uploader": [widget.uploader ?? ""], "uploader": [widget.uploader ?? ""],
"category": [widget.category ?? ""],
}; };
queryParameters.removeWhere((k, v) => v[0].isEmpty); queryParameters.removeWhere((k, v) => v[0].isEmpty);
context.pushReplacementNamed("/galleries", context.pushReplacementNamed("/galleries",
@@ -155,12 +159,24 @@ class _GalleriesPage extends State<GalleriesPage>
], ],
leadingIcon: const Icon(Icons.sort), leadingIcon: const Icon(Icons.sort),
); );
final title = widget.uploader != null && widget.tag != null final title = widget.tag != null
? i18n.tagUploaderGalleries(preferredTag(context)!, widget.uploader!) ? widget.uploader != null
? widget.category != null
? i18n.tagUploaderCategoryGalleries(
preferredTag(context)!, widget.uploader!, widget.category!)
: i18n.tagUploaderGalleries(
preferredTag(context)!, widget.uploader!)
: widget.category != null
? i18n.tagCategoryGalleries(
widget.category!, preferredTag(context)!)
: i18n.tagGalleries(preferredTag(context)!)
: widget.uploader != null : widget.uploader != null
? i18n.uploaderGalleries(widget.uploader!) ? widget.category != null
: widget.tag != null ? i18n.uploaderCategoryGalleries(
? i18n.tagGalleries(preferredTag(context)!) widget.category!, widget.uploader!)
: i18n.uploaderGalleries(widget.uploader!)
: widget.category != null
? i18n.categoryGalleries(widget.category!)
: i18n.galleries; : i18n.galleries;
if (isTop(context)) { if (isTop(context)) {
setCurrentTitle(title, Theme.of(context).primaryColor.value); setCurrentTitle(title, Theme.of(context).primaryColor.value);