From c796cf400913124874d2d369d9b20a27b776e606 Mon Sep 17 00:00:00 2001 From: PaperCube Date: Tue, 13 Feb 2024 00:49:08 +0000 Subject: [PATCH 1/2] Fix "PEM header must end with -----" by standardizing CRLF --- lib/view/page/private_key/edit.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/view/page/private_key/edit.dart b/lib/view/page/private_key/edit.dart index 4818d5a5..8ba6ada5 100644 --- a/lib/view/page/private_key/edit.dart +++ b/lib/view/page/private_key/edit.dart @@ -118,12 +118,16 @@ class _PrivateKeyEditPageState extends State { ); } + String _standardizeLineSeparators(String value) { + return value.replaceAll("\r\n", "\n").replaceAll("\r", "\n"); + } + Widget _buildFAB() { return FloatingActionButton( tooltip: l10n.save, onPressed: () async { final name = _nameController.text; - final key = _keyController.text.trim(); + final key = _standardizeLineSeparators(_keyController.text.trim()); final pwd = _pwdController.text; if (name.isEmpty || key.isEmpty) { context.showSnackBar(l10n.fieldMustNotEmpty); @@ -201,11 +205,8 @@ class _PrivateKeyEditPageState extends State { } final content = await file.readAsString(); - - /// Issue #7 - /// Replace all CRLF to LF - content.replaceAll('\r\n', '\n'); - _keyController.text = content; + // dartssh2 accepts only LF (but not CRLF or CR) + _keyController.text = _standardizeLineSeparators(content.trim()); }, child: Text(l10n.pickFile), ), From b2b5c21cf076d4edd2dcd443acc450438e613872 Mon Sep 17 00:00:00 2001 From: PaperCube Date: Tue, 13 Feb 2024 01:55:15 +0000 Subject: [PATCH 2/2] fix: redundant punctuation in some languages --- .dart_tool/flutter_gen/gen_l10n/l10n.dart | 4 ++-- .dart_tool/flutter_gen/gen_l10n/l10n_de.dart | 4 ++-- .dart_tool/flutter_gen/gen_l10n/l10n_en.dart | 4 ++-- .dart_tool/flutter_gen/gen_l10n/l10n_fr.dart | 4 ++-- .dart_tool/flutter_gen/gen_l10n/l10n_id.dart | 2 +- .dart_tool/flutter_gen/gen_l10n/l10n_zh.dart | 4 ++-- lib/l10n/app_de.arb | 4 ++-- lib/l10n/app_en.arb | 4 ++-- lib/l10n/app_fr.arb | 4 ++-- lib/l10n/app_id.arb | 2 +- lib/l10n/app_zh.arb | 2 +- lib/l10n/app_zh_tw.arb | 2 +- 12 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n.dart b/.dart_tool/flutter_gen/gen_l10n/l10n.dart index b0da07da..677861a8 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n.dart @@ -163,7 +163,7 @@ abstract class S { /// No description provided for @askContinue. /// /// In en, this message translates to: - /// **'{msg}, continue?'** + /// **'{msg}. Continue?'** String askContinue(Object msg); /// No description provided for @attention. @@ -1621,7 +1621,7 @@ abstract class S { /// No description provided for @useNoPwd. /// /// In en, this message translates to: - /// **'No password will be used.'** + /// **'No password will be used'** String get useNoPwd; /// No description provided for @used. diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart index 12e7dc87..26ff855d 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart @@ -36,7 +36,7 @@ class SDe extends S { @override String askContinue(Object msg) { - return '$msg, weiter?'; + return '$msg. Weiter?'; } @override @@ -800,7 +800,7 @@ class SDe extends S { String get urlOrJson => 'URL oder JSON'; @override - String get useNoPwd => 'Es wird kein Passwort verwendet.'; + String get useNoPwd => 'Es wird kein Passwort verwendet'; @override String get used => 'Gebraucht'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart index 82335108..af8889f8 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart @@ -36,7 +36,7 @@ class SEn extends S { @override String askContinue(Object msg) { - return '$msg, continue?'; + return '$msg. Continue?'; } @override @@ -800,7 +800,7 @@ class SEn extends S { String get urlOrJson => 'URL or JSON'; @override - String get useNoPwd => 'No password will be used.'; + String get useNoPwd => 'No password will be used'; @override String get used => 'Used'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_fr.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_fr.dart index a8eb812a..4a6d77c5 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_fr.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_fr.dart @@ -36,7 +36,7 @@ class SFr extends S { @override String askContinue(Object msg) { - return '$msg, continuer?'; + return '$msg. Continuer?'; } @override @@ -800,7 +800,7 @@ class SFr extends S { String get urlOrJson => 'URL ou JSON'; @override - String get useNoPwd => 'Aucun mot de passe ne sera utilisé.'; + String get useNoPwd => 'Aucun mot de passe ne sera utilisé'; @override String get used => 'Utilisé'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart index 9a7c13e8..939e7dd1 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart @@ -800,7 +800,7 @@ class SId extends S { String get urlOrJson => 'URL atau JSON'; @override - String get useNoPwd => 'Tidak ada kata sandi yang akan digunakan.'; + String get useNoPwd => 'Tidak ada kata sandi yang akan digunakan'; @override String get used => 'Digunakan'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart index ab5c650c..5b3bfd6c 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart @@ -800,7 +800,7 @@ class SZh extends S { String get urlOrJson => '链接或JSON'; @override - String get useNoPwd => '将会使用无密码。'; + String get useNoPwd => '将会使用无密码'; @override String get used => '已用'; @@ -1651,7 +1651,7 @@ class SZhTw extends SZh { String get urlOrJson => '鏈接或JSON'; @override - String get useNoPwd => '将使用無密碼。'; + String get useNoPwd => '将使用無密碼'; @override String get used => '已用'; diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 9802931f..beeb6819 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -10,7 +10,7 @@ "all": "Alle", "alreadyLastDir": "Bereits im letzten Verzeichnis.", "alterUrl": "Url ändern", - "askContinue": "{msg}, weiter?", + "askContinue": "{msg}. Weiter?", "attention": "Achtung", "authRequired": "Autorisierung erforderlich", "auto": "System folgen", @@ -253,7 +253,7 @@ "upsideDown": "Upside Down", "uptime": "Betriebszeit", "urlOrJson": "URL oder JSON", - "useNoPwd": "Es wird kein Passwort verwendet.", + "useNoPwd": "Es wird kein Passwort verwendet", "used": "Gebraucht", "user": "Benutzer", "versionHaveUpdate": "Gefunden: v1.0.{build}, klicke zum Aktualisieren", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 832511a3..19f9778d 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -10,7 +10,7 @@ "all": "All", "alreadyLastDir": "Already in last directory.", "alterUrl": "Alter url", - "askContinue": "{msg}, continue?", + "askContinue": "{msg}. Continue?", "attention": "Attention", "authRequired": "Auth required", "auto": "Auto", @@ -253,7 +253,7 @@ "upsideDown": "Upside Down", "uptime": "Uptime", "urlOrJson": "URL or JSON", - "useNoPwd": "No password will be used.", + "useNoPwd": "No password will be used", "used": "Used", "user": "User", "versionHaveUpdate": "Found: v1.0.{build}, click to update", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 3458210c..5cefc344 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -10,7 +10,7 @@ "all": "Tous", "alreadyLastDir": "Déjà dans le dernier répertoire.", "alterUrl": "Modifier l'URL", - "askContinue": "{msg}, continuer?", + "askContinue": "{msg}. Continuer?", "attention": "Attention", "authRequired": "Authentification requise", "auto": "Auto", @@ -253,7 +253,7 @@ "upsideDown": "À l'envers", "uptime": "Temps de disponibilité", "urlOrJson": "URL ou JSON", - "useNoPwd": "Aucun mot de passe ne sera utilisé.", + "useNoPwd": "Aucun mot de passe ne sera utilisé", "used": "Utilisé", "user": "Utilisateur", "versionHaveUpdate": "Trouvé : v1.0.{build}, cliquez pour mettre à jour", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index fdc74901..0debae27 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -253,7 +253,7 @@ "upsideDown": "Terbalik", "uptime": "Uptime", "urlOrJson": "URL atau JSON", - "useNoPwd": "Tidak ada kata sandi yang akan digunakan.", + "useNoPwd": "Tidak ada kata sandi yang akan digunakan", "used": "Digunakan", "user": "Username", "versionHaveUpdate": "Ditemukan: v1.0.{build}, klik untuk memperbarui", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 2c2f300c..89fb357d 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -253,7 +253,7 @@ "upsideDown": "上下交换", "uptime": "启动时长", "urlOrJson": "链接或JSON", - "useNoPwd": "将会使用无密码。", + "useNoPwd": "将会使用无密码", "used": "已用", "user": "用户", "versionHaveUpdate": "找到新版本:v1.0.{build}, 点击更新", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 688a9124..1e2e1d34 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -253,7 +253,7 @@ "upsideDown": "上下交換", "uptime": "啟動時長", "urlOrJson": "鏈接或JSON", - "useNoPwd": "将使用無密碼。", + "useNoPwd": "将使用無密碼", "used": "已用", "user": "用戶", "versionHaveUpdate": "找到新版本:v1.0.{build}, 點擊更新",