diff --git a/assets/langs/en.yaml b/assets/langs/en.yaml index a5b6aab9..e3fbfc00 100644 --- a/assets/langs/en.yaml +++ b/assets/langs/en.yaml @@ -340,6 +340,7 @@ setup: sshKeyUserProvided: public: Public Key - private: Private Key - + password: Password cloning: Cloning ... host: title: Select a Git Hosting Provider - diff --git a/lib/screens/settings_git_remote.dart b/lib/screens/settings_git_remote.dart index ed4f7a05..001b8595 100644 --- a/lib/screens/settings_git_remote.dart +++ b/lib/screens/settings_git_remote.dart @@ -118,7 +118,7 @@ class _GitRemoteSettingsScreenState extends State { Navigator.of(context).push(route); } - void _updateKeys(String publicKey, String privateKey) { + void _updateKeys(String publicKey, String privateKey, String password) { var settings = Provider.of(context, listen: false); if (publicKey.isEmpty || privateKey.isEmpty) { @@ -126,6 +126,7 @@ class _GitRemoteSettingsScreenState extends State { } settings.sshPublicKey = publicKey; settings.sshPrivateKey = privateKey; + settings.sshPassword = password; settings.save(); Navigator.of(context).pop(); diff --git a/lib/setup/screens.dart b/lib/setup/screens.dart index 74497749..ee755898 100644 --- a/lib/setup/screens.dart +++ b/lib/setup/screens.dart @@ -209,11 +209,12 @@ class GitHostSetupScreenState extends State { ); } else if (_keyGenerationChoice == KeyGenerationChoice.UserProvided) { return GitHostUserProvidedKeys( - doneFunction: (String publicKey, String privateKey) async { + doneFunction: + (String publicKey, String privateKey, String password) async { var settings = Provider.of(context, listen: false); settings.sshPublicKey = publicKey; settings.sshPrivateKey = privateKey; - settings.sshPassword = ""; + settings.sshPassword = password; settings.save(); setState(() { @@ -295,11 +296,11 @@ class GitHostSetupScreenState extends State { ); } else if (_keyGenerationChoice == KeyGenerationChoice.UserProvided) { return GitHostUserProvidedKeys( - doneFunction: (String publicKey, String privateKey) async { + doneFunction: (publicKey, privateKey, password) async { var settings = Provider.of(context, listen: false); settings.sshPublicKey = publicKey; settings.sshPrivateKey = privateKey; - settings.sshPassword = ""; + settings.sshPassword = password; settings.save(); setState(() { diff --git a/lib/setup/sshkey.dart b/lib/setup/sshkey.dart index d7152883..801855d6 100644 --- a/lib/setup/sshkey.dart +++ b/lib/setup/sshkey.dart @@ -204,7 +204,8 @@ class GitHostSetupKeyChoice extends StatelessWidget { } class GitHostUserProvidedKeys extends StatefulWidget { - final Func2 doneFunction; // public, private + final Func3 + doneFunction; // public, private, password final String saveText; GitHostUserProvidedKeys({ @@ -222,6 +223,7 @@ class _GitHostUserProvidedKeysState extends State { GlobalKey _privateFormKey; TextEditingController _publicKeyController; TextEditingController _privateKeyController; + TextEditingController _passwordController; String saveText; @@ -233,6 +235,7 @@ class _GitHostUserProvidedKeysState extends State { _privateFormKey = GlobalKey(); _publicKeyController = TextEditingController(); _privateKeyController = TextEditingController(); + _passwordController = TextEditingController(); saveText = widget.saveText.isEmpty ? tr("setup.next") : widget.saveText; } @@ -263,6 +266,16 @@ class _GitHostUserProvidedKeysState extends State { ), const SizedBox(height: 8.0), PrivateKeyEditor(_privateFormKey, _privateKeyController), + const SizedBox(height: 8.0), + TextField( + controller: _passwordController, + maxLines: 1, + decoration: InputDecoration( + helperText: tr('setup.sshKeyUserProvided.password'), + border: const OutlineInputBorder(), + isDense: true, + ), + ), const SizedBox(height: 16.0), GitHostSetupButton( text: saveText, @@ -284,7 +297,11 @@ class _GitHostUserProvidedKeysState extends State { privateKey += '\n'; } - widget.doneFunction(publicKey, privateKey); + widget.doneFunction( + publicKey, + privateKey, + _passwordController.text, + ); }, ), ],