new: keepStatusWhenErr

This commit is contained in:
lollipopkit
2024-02-20 10:44:05 +08:00
parent 8fa3a2d0e4
commit 7557bacb60
15 changed files with 78 additions and 0 deletions

View File

@@ -808,6 +808,18 @@ abstract class S {
/// **'Keep app foreground!'**
String get keepForeground;
/// No description provided for @keepStatusWhenErr.
///
/// In en, this message translates to:
/// **'Preserve the last server state'**
String get keepStatusWhenErr;
/// No description provided for @keepStatusWhenErrTip.
///
/// In en, this message translates to:
/// **'Only in the event of an error during script execution'**
String get keepStatusWhenErrTip;
/// No description provided for @keyAuth.
///
/// In en, this message translates to:

View File

@@ -378,6 +378,12 @@ class SDe extends S {
@override
String get keepForeground => 'Stelle sicher, dass die App geöffnet bleibt.';
@override
String get keepStatusWhenErr => 'Den letzten Serverstatus beibehalten';
@override
String get keepStatusWhenErrTip => 'Nur im Fehlerfall während der Ausführung des Skripts';
@override
String get keyAuth => 'Schlüsselauthentifzierung';

View File

@@ -378,6 +378,12 @@ class SEn extends S {
@override
String get keepForeground => 'Keep app foreground!';
@override
String get keepStatusWhenErr => 'Preserve the last server state';
@override
String get keepStatusWhenErrTip => 'Only in the event of an error during script execution';
@override
String get keyAuth => 'Key Auth';

View File

@@ -378,6 +378,12 @@ class SFr extends S {
@override
String get keepForeground => 'Laisser l\'application au premier plan !';
@override
String get keepStatusWhenErr => 'Conserver le dernier état du serveur';
@override
String get keepStatusWhenErrTip => 'Uniquement en cas d\'erreur lors de l\'exécution du script';
@override
String get keyAuth => 'Authentification par clé';

View File

@@ -378,6 +378,12 @@ class SId extends S {
@override
String get keepForeground => 'Simpan Aplikasi Foreground!';
@override
String get keepStatusWhenErr => 'Menyimpan status server terakhir';
@override
String get keepStatusWhenErrTip => 'Hanya ketika terjadi kesalahan saat menjalankan skrip';
@override
String get keyAuth => 'Auth kunci';

View File

@@ -378,6 +378,12 @@ class SZh extends S {
@override
String get keepForeground => '请保持应用处于前台!';
@override
String get keepStatusWhenErr => '保留上次的服务器状态';
@override
String get keepStatusWhenErrTip => '仅限于执行脚本出错';
@override
String get keyAuth => '密钥认证';
@@ -1244,6 +1250,12 @@ class SZhTw extends SZh {
@override
String get keepForeground => '請保持應用處於前台!';
@override
String get keepStatusWhenErr => '保留上次的伺服器狀態';
@override
String get keepStatusWhenErrTip => '仅在执行脚本时出错时';
@override
String get keyAuth => '密鑰認證';

View File

@@ -388,6 +388,12 @@ class ServerProvider extends ChangeNotifier {
raw = await s.client?.run(ShellFunc.status.exec).string;
segments = raw?.split(seperator).map((e) => e.trim()).toList();
if (raw == null || raw.isEmpty || segments == null || segments.isEmpty) {
if (Stores.setting.keepStatusWhenErr.fetch()) {
// Keep previous server status when err occurs
if (s.state != ServerState.failed && s.status.more.isNotEmpty) {
return;
}
}
TryLimiter.inc(sid);
s.status.err = 'Seperate segments failed, raw:\n$raw';
_setServerState(s, ServerState.failed);

View File

@@ -230,6 +230,9 @@ class SettingStore extends PersistentStore {
/// Try to use `sudo` to run docker command
late final containerTrySudo = property('containerTrySudo', true);
/// Keep previous server status when err occurs
late final keepStatusWhenErr = property('keepStatusWhenErr', false);
// Never show these settings for users
//
// ------BEGIN------

View File

@@ -118,6 +118,8 @@
"isBusy": "Is busy now",
"jumpServer": "Server springen",
"keepForeground": "Stelle sicher, dass die App geöffnet bleibt.",
"keepStatusWhenErr": "Den letzten Serverstatus beibehalten",
"keepStatusWhenErrTip": "Nur im Fehlerfall während der Ausführung des Skripts",
"keyAuth": "Schlüsselauthentifzierung",
"keyboardCompatibility": "Mögliche Verbesserungen bei der Kompatibilität der Eingabemethoden",
"keyboardType": "Tastatur Typ",

View File

@@ -118,6 +118,8 @@
"isBusy": "Is busy now",
"jumpServer": "Jump server",
"keepForeground": "Keep app foreground!",
"keepStatusWhenErr": "Preserve the last server state",
"keepStatusWhenErrTip": "Only in the event of an error during script execution",
"keyAuth": "Key Auth",
"keyboardCompatibility": "Possible to improve input method compatibility",
"keyboardType": "Keyborad type",

View File

@@ -118,6 +118,8 @@
"isBusy": "Est occupé maintenant",
"jumpServer": "Serveur de saut",
"keepForeground": "Laisser l'application au premier plan !",
"keepStatusWhenErr": "Conserver le dernier état du serveur",
"keepStatusWhenErrTip": "Uniquement en cas d'erreur lors de l'exécution du script",
"keyAuth": "Authentification par clé",
"keyboardCompatibility": "Possibilité d'améliorer la compatibilité avec les méthodes de saisie",
"keyboardType": "Type de clavier",

View File

@@ -118,6 +118,8 @@
"isBusy": "Sibuk sekarang",
"jumpServer": "Lompat server",
"keepForeground": "Simpan Aplikasi Foreground!",
"keepStatusWhenErr": "Menyimpan status server terakhir",
"keepStatusWhenErrTip": "Hanya ketika terjadi kesalahan saat menjalankan skrip",
"keyAuth": "Auth kunci",
"keyboardCompatibility": "Mungkin untuk meningkatkan kompatibilitas metode input",
"keyboardType": "Tipe Keyborad",

View File

@@ -118,6 +118,8 @@
"isBusy": "当前正忙",
"jumpServer": "跳板服务器",
"keepForeground": "请保持应用处于前台!",
"keepStatusWhenErr": "保留上次的服务器状态",
"keepStatusWhenErrTip": "仅限于执行脚本出错",
"keyAuth": "密钥认证",
"keyboardCompatibility": "可能会改善输入法兼容性",
"keyboardType": "键盘类型",

View File

@@ -118,6 +118,8 @@
"isBusy": "當前正忙",
"jumpServer": "跳板服務器",
"keepForeground": "請保持應用處於前台!",
"keepStatusWhenErr": "保留上次的伺服器狀態",
"keepStatusWhenErrTip": "仅在执行脚本时出错时",
"keyAuth": "密鑰認證",
"keyboardCompatibility": "可能會改善輸入法兼容性",
"keyboardType": "鍵盤類型",

View File

@@ -202,6 +202,7 @@ class _SettingPageState extends State<SettingPage> {
Widget _buildServer() {
return Column(
children: [
_buildKeepStatusWhenErr(),
_buildServerFuncBtns(),
_buildServerSeq(),
_buildServerDetailCardSeq(),
@@ -1157,4 +1158,12 @@ class _SettingPageState extends State<SettingPage> {
trailing: StoreSwitch(prop: _setting.containerTrySudo),
);
}
Widget _buildKeepStatusWhenErr() {
return ListTile(
title: Text(l10n.keepStatusWhenErr),
subtitle: Text(l10n.keepStatusWhenErrTip, style: UIs.textGrey),
trailing: StoreSwitch(prop: _setting.keepStatusWhenErr),
);
}
}