From 4eb43cfbca797c21aa7a4e4259d7e8e73f4344bc Mon Sep 17 00:00:00 2001 From: lifegpc Date: Tue, 6 Feb 2024 17:38:49 +0800 Subject: [PATCH] add new server settings --- lib/api/config.dart | 6 ++++++ lib/api/config.g.dart | 6 ++++++ lib/l10n/app_en.arb | 4 +++- lib/l10n/app_zh.arb | 4 +++- lib/server_settings.dart | 18 ++++++++++++++++++ 5 files changed, 36 insertions(+), 2 deletions(-) diff --git a/lib/api/config.dart b/lib/api/config.dart index 4f2c8eb..4630ca0 100644 --- a/lib/api/config.dart +++ b/lib/api/config.dart @@ -40,6 +40,7 @@ class Config { required this.downloadTimeout, required this.ffprobePath, required this.redirectToFlutter, + required this.downloadTimeoutCheckInterval, }); bool cookies; @JsonKey(name: 'db_path') @@ -90,6 +91,8 @@ class Config { String ffprobePath; @JsonKey(name: 'redirect_to_flutter') bool redirectToFlutter; + @JsonKey(name: 'download_timeout_check_interval') + int downloadTimeoutCheckInterval; factory Config.fromJson(Map json) => _$ConfigFromJson(json); Map toJson() => _$ConfigToJson(this); } @@ -137,6 +140,7 @@ class ConfigOptional { this.downloadTimeout, this.ffprobePath, this.redirectToFlutter, + this.downloadTimeoutCheckInterval, }); String? cookies; @JsonKey(name: 'db_path') @@ -187,6 +191,8 @@ class ConfigOptional { String? ffprobePath; @JsonKey(name: 'redirect_to_flutter') bool? redirectToFlutter; + @JsonKey(name: 'download_timeout_check_interval') + int? downloadTimeoutCheckInterval; factory ConfigOptional.fromJson(Map json) => _$ConfigOptionalFromJson(json); Map toJson() => _$ConfigOptionalToJson(this); diff --git a/lib/api/config.g.dart b/lib/api/config.g.dart index 83dd738..e3e5424 100644 --- a/lib/api/config.g.dart +++ b/lib/api/config.g.dart @@ -40,6 +40,8 @@ Config _$ConfigFromJson(Map json) => Config( downloadTimeout: json['download_timeout'] as int, ffprobePath: json['ffprobe_path'] as String, redirectToFlutter: json['redirect_to_flutter'] as bool, + downloadTimeoutCheckInterval: + json['download_timeout_check_interval'] as int, ); Map _$ConfigToJson(Config instance) => { @@ -71,6 +73,7 @@ Map _$ConfigToJson(Config instance) => { 'download_timeout': instance.downloadTimeout, 'ffprobe_path': instance.ffprobePath, 'redirect_to_flutter': instance.redirectToFlutter, + 'download_timeout_check_interval': instance.downloadTimeoutCheckInterval, }; const _$ThumbnailMethodEnumMap = { @@ -123,6 +126,8 @@ ConfigOptional _$ConfigOptionalFromJson(Map json) => downloadTimeout: json['download_timeout'] as int?, ffprobePath: json['ffprobe_path'] as String?, redirectToFlutter: json['redirect_to_flutter'] as bool?, + downloadTimeoutCheckInterval: + json['download_timeout_check_interval'] as int?, ); Map _$ConfigOptionalToJson(ConfigOptional instance) => @@ -155,4 +160,5 @@ Map _$ConfigOptionalToJson(ConfigOptional instance) => 'download_timeout': instance.downloadTimeout, 'ffprobe_path': instance.ffprobePath, 'redirect_to_flutter': instance.redirectToFlutter, + 'download_timeout_check_interval': instance.downloadTimeoutCheckInterval, }; diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index a4dda08..627050f 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -140,5 +140,7 @@ "meiliHostsHelp": "Requests from these domains will receive the corresponding Meilisearch server hostname.", "keyIsEmpty": "Key is empty.", "keyIsExists": "Key is exists.", - "redirectToFlutter": "Redirect to Flutter frontend when accessing the root URL." + "redirectToFlutter": "Redirect to Flutter frontend when accessing the root URL.", + "downloadTimeoutCheckInterval": "The interval of checking download timeout", + "downloadTimeoutCheckIntervalHelp": "The smaller the value, the more accurate the timeout detection, but the higher CPU usage." } diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 23f2739..62b471c 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -140,5 +140,7 @@ "meiliHostsHelp": "来自这些域的请求将收到相应的 Meilisearch 服务器主机名。", "keyIsEmpty": "键不能为空。", "keyIsExists": "键已存在。", - "redirectToFlutter": "访问根 URL 时重定向到 flutter 前端。" + "redirectToFlutter": "访问根 URL 时重定向到 flutter 前端。", + "downloadTimeoutCheckInterval": "下载超时检测间隔", + "downloadTimeoutCheckIntervalHelp": "值越小,检测准确性越高,但是消耗更多的 CPU。" } diff --git a/lib/server_settings.dart b/lib/server_settings.dart index ed89f75..a20cb5a 100644 --- a/lib/server_settings.dart +++ b/lib/server_settings.dart @@ -669,6 +669,24 @@ class _ServerSettingsPage extends State }); }, )), + _buildWithVecticalPadding(NumberFormField( + min: 1, + initialValue: _now.downloadTimeoutCheckInterval ?? + _config!.downloadTimeoutCheckInterval, + decoration: InputDecoration( + border: const OutlineInputBorder(), + labelText: i18n.downloadTimeoutCheckInterval, + suffixText: i18n.millisecond, + helperText: i18n.downloadTimeoutCheckIntervalHelp, + helperMaxLines: 3, + ), + onChanged: (s) { + setState(() { + _now.downloadTimeoutCheckInterval = s; + _changed = true; + }); + }, + )), ])); }