Add updateTagTranslation display

This commit is contained in:
2024-10-03 12:34:08 +00:00
committed by GitHub
parent ec4d3859f2
commit f7a000b806
8 changed files with 1080 additions and 772 deletions

View File

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,9 @@ enum TaskType {
@JsonValue(3)
fixGalleryPage,
@JsonValue(4)
import;
import,
@JsonValue(5)
updateTagTranslation;
String text(BuildContext context) {
final i18n = AppLocalizations.of(context)!;
@@ -30,6 +32,8 @@ enum TaskType {
return i18n.fixGalleryPageTask;
case TaskType.import:
return i18n.importTask;
case TaskType.updateTagTranslation:
return i18n.updateTagTranslation;
}
}
}
@@ -183,6 +187,23 @@ class TaskImportProgress implements TaskProgressBasicType {
Map<String, dynamic> toJson() => _$TaskImportProgressToJson(this);
}
@JsonSerializable()
class TaskUpdateTagTranslationProgress implements TaskProgressBasicType {
const TaskUpdateTagTranslationProgress({
required this.addedTag,
required this.totalTag,
});
@JsonKey(name: 'added_tag')
final int addedTag;
@JsonKey(name: 'total_tag')
final int totalTag;
factory TaskUpdateTagTranslationProgress.fromJson(
Map<String, dynamic> json) =>
_$TaskUpdateTagTranslationProgressFromJson(json);
Map<String, dynamic> toJson() =>
_$TaskUpdateTagTranslationProgressToJson(this);
}
class TaskProgress {
const TaskProgress({
required this.type,
@@ -231,6 +252,13 @@ class TaskProgress {
detail: TaskImportProgress.fromJson(
json['detail'] as Map<String, dynamic>),
);
case 5:
return TaskProgress(
type: TaskType.updateTagTranslation,
taskId: taskId,
detail: TaskUpdateTagTranslationProgress.fromJson(
json['detail'] as Map<String, dynamic>),
);
default:
throw ArgumentError.value(type, 'type', 'Invalid task type');
}

View File

@@ -30,6 +30,7 @@ const _$TaskTypeEnumMap = {
TaskType.updateMeiliSearchData: 2,
TaskType.fixGalleryPage: 3,
TaskType.import: 4,
TaskType.updateTagTranslation: 5,
};
TaskDownloadSingleProgress _$TaskDownloadSingleProgressFromJson(
@@ -146,6 +147,20 @@ Map<String, dynamic> _$TaskImportProgressToJson(TaskImportProgress instance) =>
'total_page': instance.totalPage,
};
TaskUpdateTagTranslationProgress _$TaskUpdateTagTranslationProgressFromJson(
Map<String, dynamic> json) =>
TaskUpdateTagTranslationProgress(
addedTag: (json['added_tag'] as num).toInt(),
totalTag: (json['total_tag'] as num).toInt(),
);
Map<String, dynamic> _$TaskUpdateTagTranslationProgressToJson(
TaskUpdateTagTranslationProgress instance) =>
<String, dynamic>{
'added_tag': instance.addedTag,
'total_tag': instance.totalTag,
};
TaskList _$TaskListFromJson(Map<String, dynamic> json) => TaskList(
tasks: (json['tasks'] as List<dynamic>)
.map((e) => Task.fromJson(e as Map<String, dynamic>))

View File

@@ -57,6 +57,10 @@ class _TaskView extends State<TaskView> {
case TaskType.import:
final progress = widget.task.progress as TaskImportProgress;
return progress.importedPage / progress.totalPage;
case TaskType.updateTagTranslation:
final progress =
widget.task.progress as TaskUpdateTagTranslationProgress;
return progress.addedTag / progress.totalTag;
}
}
@@ -98,6 +102,10 @@ class _TaskView extends State<TaskView> {
return Text("${i18n.importTask} $title",
maxLines: 1, overflow: TextOverflow.ellipsis);
}
if (typ == TaskType.updateTagTranslation) {
return Text(i18n.updateTagTranslation,
maxLines: 1, overflow: TextOverflow.ellipsis);
}
return Container();
}

View File

@@ -104,28 +104,34 @@ class _TaskPage extends State<TaskPage> {
_KeyValue(i18n.taskId, widget.id.toString(), fontSize: 16),
Divider(indent: indent, endIndent: endIndent),
_KeyValue(i18n.taskType, typ.text(context), fontSize: 16),
Divider(indent: indent, endIndent: endIndent),
Row(children: [
SizedBox(
width: 80,
child: Center(
child: Text(i18n.gid,
textAlign: TextAlign.center,
style: TextStyle(color: cs.primary, fontSize: 16)))),
Expanded(
child: allowLink
? SelectableText.rich(TextSpan(
text: gid,
style: TextStyle(color: cs.secondary, fontSize: 16),
mouseCursor: SystemMouseCursors.click,
recognizer: TapGestureRecognizer()
..onTap = () {
context.push("/gallery/${task.base.gid}",
extra: GalleryPageExtra(title: title));
}))
: SelectableText(gid,
style: TextStyle(color: cs.secondary, fontSize: 16))),
]),
gid.isEmpty
? Container()
: Divider(indent: indent, endIndent: endIndent),
gid.isEmpty
? Container()
: Row(children: [
SizedBox(
width: 80,
child: Center(
child: Text(i18n.gid,
textAlign: TextAlign.center,
style:
TextStyle(color: cs.primary, fontSize: 16)))),
Expanded(
child: allowLink
? SelectableText.rich(TextSpan(
text: gid,
style: TextStyle(color: cs.secondary, fontSize: 16),
mouseCursor: SystemMouseCursors.click,
recognizer: TapGestureRecognizer()
..onTap = () {
context.push("/gallery/${task.base.gid}",
extra: GalleryPageExtra(title: title));
}))
: SelectableText(gid,
style:
TextStyle(color: cs.secondary, fontSize: 16))),
]),
task.base.token.isEmpty
? Container()
: Divider(indent: indent, endIndent: endIndent),
@@ -244,6 +250,10 @@ class _TaskPage extends State<TaskPage> {
final p = task.progress as TaskImportProgress;
now = p.importedPage;
total = p.totalPage;
case TaskType.updateTagTranslation:
final p = task.progress as TaskUpdateTagTranslationProgress;
now = p.addedTag;
total = p.totalTag;
default:
}
if (total == 0) return Container();

View File

@@ -327,5 +327,6 @@
"editExpireTime": "Edit expire time",
"share": "Share",
"failedChangeExpireTime": "Failed to change expired time: ",
"failedShareGallery": "Failed to share gallery: "
"failedShareGallery": "Failed to share gallery: ",
"updateTagTranslation": "Update tag's translation"
}

View File

@@ -327,5 +327,6 @@
"editExpireTime": "修改过期时间",
"share": "分享",
"failedChangeExpireTime": "修改过期时间失败:",
"failedShareGallery": "分享画廊失败:"
"failedShareGallery": "分享画廊失败:",
"updateTagTranslation": "更新标签的翻译"
}

View File

@@ -5,18 +5,23 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
url: "https://pub.dev"
source: hosted
version: "67.0.0"
version: "72.0.0"
_macros:
dependency: transitive
description: dart
source: sdk
version: "0.3.2"
analyzer:
dependency: transitive
description:
name: analyzer
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
url: "https://pub.dev"
source: hosted
version: "6.4.1"
version: "6.7.0"
archive:
dependency: transitive
description:
@@ -85,18 +90,18 @@ packages:
dependency: "direct dev"
description:
name: build_runner
sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7"
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
url: "https://pub.dev"
source: hosted
version: "2.4.11"
version: "2.4.13"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe
sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
url: "https://pub.dev"
source: hosted
version: "7.3.1"
version: "7.3.2"
built_collection:
dependency: transitive
description:
@@ -174,10 +179,10 @@ packages:
dependency: transitive
description:
name: crypto
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "3.0.5"
cryptography:
dependency: "direct main"
description:
@@ -198,10 +203,10 @@ packages:
dependency: transitive
description:
name: dart_style
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
url: "https://pub.dev"
source: hosted
version: "2.3.6"
version: "2.3.7"
device_info_plus:
dependency: transitive
description:
@@ -222,10 +227,10 @@ packages:
dependency: "direct main"
description:
name: dio
sha256: e17f6b3097b8c51b72c74c9f071a605c47bcc8893839bd66732457a5ebe73714
sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260"
url: "https://pub.dev"
source: hosted
version: "5.5.0+1"
version: "5.7.0"
dio_cookie_manager:
dependency: "direct main"
description:
@@ -238,10 +243,10 @@ packages:
dependency: transitive
description:
name: dio_web_adapter
sha256: "36c5b2d79eb17cdae41e974b7a8284fec631651d2a6f39a8a2ff22327e90aeac"
sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
version: "2.0.0"
enum_flag:
dependency: "direct main"
description:
@@ -270,10 +275,10 @@ packages:
dependency: transitive
description:
name: ffi
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.3"
file:
dependency: "direct main"
description:
@@ -370,10 +375,10 @@ packages:
dependency: "direct main"
description:
name: go_router
sha256: ddc16d34b0d74cb313986918c0f0885a7ba2fc24d8fb8419de75f0015144ccfe
sha256: "5cf5fdcf853b0629deb35891c7af643be900c3dcaed7489009f9e7dbcfe55ab6"
url: "https://pub.dev"
source: hosted
version: "14.2.3"
version: "14.2.8"
graphs:
dependency: transitive
description:
@@ -490,18 +495,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev"
source: hosted
version: "10.0.4"
version: "10.0.5"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "3.0.5"
leak_tracker_testing:
dependency: transitive
description:
@@ -526,6 +531,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.0"
macros:
dependency: transitive
description:
name: macros
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
url: "https://pub.dev"
source: hosted
version: "0.1.2-main.4"
markdown:
dependency: transitive
description:
@@ -546,26 +559,26 @@ packages:
dependency: transitive
description:
name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
source: hosted
version: "0.8.0"
version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.15.0"
mime:
dependency: transitive
description:
name: mime
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
url: "https://pub.dev"
source: hosted
version: "1.0.5"
version: "2.0.0"
mutex:
dependency: "direct main"
description:
@@ -626,10 +639,10 @@ packages:
dependency: transitive
description:
name: path_provider_android
sha256: "490539678396d4c3c0b06efdaab75ae60675c3e0c66f72bc04c2e2c1e0e2abeb"
sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7"
url: "https://pub.dev"
source: hosted
version: "2.2.9"
version: "2.2.10"
path_provider_foundation:
dependency: transitive
description:
@@ -746,18 +759,18 @@ packages:
dependency: "direct main"
description:
name: retrofit
sha256: "13a2865c0d97da580ea4e3c64d412d81f365fd5b26be2a18fca9582e021da37a"
sha256: "3c9885ef3dbc5dc4b3fb0a40c972ab52e4dad04d52dac9bba24dfa76cf100451"
url: "https://pub.dev"
source: hosted
version: "4.1.0"
version: "4.4.1"
retrofit_generator:
dependency: "direct dev"
description:
name: retrofit_generator
sha256: "6bb40ca26b3746ac213e7908755299c7d067b79ab7550a647f5894f6957d240b"
sha256: "8dfc406cdfa171f33cbd21bf5bd8b6763548cc217de19cdeaa07a76727fac4ca"
url: "https://pub.dev"
source: hosted
version: "8.1.2"
version: "8.2.1"
screen_retriever:
dependency: transitive
description:
@@ -770,26 +783,26 @@ packages:
dependency: "direct main"
description:
name: shared_preferences
sha256: c272f9cabca5a81adc9b0894381e9c1def363e980f960fa903c604c471b22f68
sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
version: "2.3.2"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: a7e8467e9181cef109f601e3f65765685786c1a738a83d7fbbde377589c0d974
sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
version: "2.3.2"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "776786cff96324851b656777648f36ac772d88bc4c669acff97b7fce5de3c849"
sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f
url: "https://pub.dev"
source: hosted
version: "2.5.1"
version: "2.5.2"
shared_preferences_linux:
dependency: transitive
description:
@@ -887,18 +900,18 @@ packages:
dependency: transitive
description:
name: sqflite_common
sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4"
sha256: "2d8e607db72e9cb7748c9c6e739e2c9618320a5517de693d5a24609c4671b1a4"
url: "https://pub.dev"
source: hosted
version: "2.5.4"
version: "2.5.4+4"
sqflite_common_ffi:
dependency: "direct main"
description:
name: sqflite_common_ffi
sha256: "4d6137c29e930d6e4a8ff373989dd9de7bac12e3bc87bce950f6e844e8ad3bb5"
sha256: a6057d4c87e9260ba1ec436ebac24760a110589b9c0a859e128842eb69a7ef04
url: "https://pub.dev"
source: hosted
version: "2.3.3"
version: "2.3.3+1"
sqlite3:
dependency: transitive
description:
@@ -975,10 +988,10 @@ packages:
dependency: transitive
description:
name: synchronized
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225"
url: "https://pub.dev"
source: hosted
version: "3.1.0+1"
version: "3.3.0+3"
term_glyph:
dependency: transitive
description:
@@ -991,10 +1004,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
version: "0.7.2"
timing:
dependency: transitive
description:
@@ -1047,10 +1060,10 @@ packages:
dependency: transitive
description:
name: uuid
sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90"
sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
url: "https://pub.dev"
source: hosted
version: "4.4.2"
version: "4.5.1"
vector_math:
dependency: transitive
description:
@@ -1063,10 +1076,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev"
source: hosted
version: "14.2.1"
version: "14.2.5"
watcher:
dependency: transitive
description:
@@ -1103,18 +1116,18 @@ packages:
dependency: transitive
description:
name: win32
sha256: "015002c060f1ae9f41a818f2d5640389cc05283e368be19dc8d77cecb43c40c9"
sha256: "4d45dc9069dba4619dc0ebd93c7cec5e66d8482cb625a370ac806dcc8165f2ec"
url: "https://pub.dev"
source: hosted
version: "5.5.3"
version: "5.5.5"
win32_registry:
dependency: transitive
description:
name: win32_registry
sha256: "723b7f851e5724c55409bb3d5a32b203b3afe8587eaf5dafb93a5fed8ecda0d6"
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
url: "https://pub.dev"
source: hosted
version: "1.1.4"
version: "1.1.5"
window_manager:
dependency: "direct main"
description:
@@ -1148,5 +1161,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.4.0 <4.0.0"
dart: ">=3.5.0 <4.0.0"
flutter: ">=3.22.0"