mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-08-23 17:13:54 +08:00
Setup: Stop depending on the GitConfig class
Instead mark it as an interface that must be implemented.
This commit is contained in:
@ -28,8 +28,8 @@ import 'package:gitjournal/settings/app_config.dart';
|
|||||||
import 'package:gitjournal/settings/settings.dart';
|
import 'package:gitjournal/settings/settings.dart';
|
||||||
import 'package:gitjournal/settings/settings_screen.dart';
|
import 'package:gitjournal/settings/settings_screen.dart';
|
||||||
import 'package:gitjournal/settings/storage_config.dart';
|
import 'package:gitjournal/settings/storage_config.dart';
|
||||||
import 'package:gitjournal/ssh/keygen.dart';
|
|
||||||
import 'package:gitjournal/utils/utils.dart';
|
import 'package:gitjournal/utils/utils.dart';
|
||||||
|
import 'package:gitjournal/widgets/setup.dart';
|
||||||
|
|
||||||
class AppRoute {
|
class AppRoute {
|
||||||
static const NewNotePrefix = '/newNote/';
|
static const NewNotePrefix = '/newNote/';
|
||||||
@ -136,11 +136,9 @@ class AppRouter {
|
|||||||
case AccountScreen.routePath:
|
case AccountScreen.routePath:
|
||||||
return const AccountScreen();
|
return const AccountScreen();
|
||||||
case GitHostSetupScreen.routePath:
|
case GitHostSetupScreen.routePath:
|
||||||
return GitHostSetupScreen(
|
return GitJournalGitSetupScreen(
|
||||||
repoFolderName: storageConfig.folderName,
|
repoFolderName: storageConfig.folderName,
|
||||||
remoteName: "origin",
|
|
||||||
onCompletedFunction: repository.completeGitHostSetup,
|
onCompletedFunction: repository.completeGitHostSetup,
|
||||||
keygen: GitJournalKeygen(),
|
|
||||||
);
|
);
|
||||||
case OnBoardingScreen.routePath:
|
case OnBoardingScreen.routePath:
|
||||||
return const OnBoardingScreen();
|
return const OnBoardingScreen();
|
||||||
|
@ -14,8 +14,11 @@ import 'package:shared_preferences/shared_preferences.dart';
|
|||||||
|
|
||||||
import 'package:gitjournal/generated/locale_keys.g.dart';
|
import 'package:gitjournal/generated/locale_keys.g.dart';
|
||||||
import 'package:gitjournal/settings/settings_sharedpref.dart';
|
import 'package:gitjournal/settings/settings_sharedpref.dart';
|
||||||
|
import 'package:git_setup/git_config.dart' as setup;
|
||||||
|
|
||||||
class GitConfig extends ChangeNotifier with SettingsSharedPref {
|
class GitConfig extends ChangeNotifier
|
||||||
|
with SettingsSharedPref
|
||||||
|
implements setup.GitConfig {
|
||||||
GitConfig(this.id, this.pref);
|
GitConfig(this.id, this.pref);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -24,12 +27,18 @@ class GitConfig extends ChangeNotifier with SettingsSharedPref {
|
|||||||
@override
|
@override
|
||||||
final SharedPreferences pref;
|
final SharedPreferences pref;
|
||||||
|
|
||||||
|
@override
|
||||||
var gitAuthor = "GitJournal";
|
var gitAuthor = "GitJournal";
|
||||||
|
@override
|
||||||
var gitAuthorEmail = "app@gitjournal.io";
|
var gitAuthorEmail = "app@gitjournal.io";
|
||||||
|
@override
|
||||||
var sshPublicKey = "";
|
var sshPublicKey = "";
|
||||||
|
@override
|
||||||
var sshPrivateKey = "";
|
var sshPrivateKey = "";
|
||||||
|
@override
|
||||||
var sshPassword = "";
|
var sshPassword = "";
|
||||||
var sshKeyType = SettingsSSHKey.Default;
|
@override
|
||||||
|
var sshKeyType = SettingsSSHKey.Default.val;
|
||||||
|
|
||||||
void load() {
|
void load() {
|
||||||
gitAuthor = getString("gitAuthor") ?? gitAuthor;
|
gitAuthor = getString("gitAuthor") ?? gitAuthor;
|
||||||
@ -37,9 +46,10 @@ class GitConfig extends ChangeNotifier with SettingsSharedPref {
|
|||||||
sshPublicKey = getString("sshPublicKey") ?? sshPublicKey;
|
sshPublicKey = getString("sshPublicKey") ?? sshPublicKey;
|
||||||
sshPrivateKey = getString("sshPrivateKey") ?? sshPrivateKey;
|
sshPrivateKey = getString("sshPrivateKey") ?? sshPrivateKey;
|
||||||
sshPassword = getString("sshPassword") ?? sshPassword;
|
sshPassword = getString("sshPassword") ?? sshPassword;
|
||||||
sshKeyType = SettingsSSHKey.fromInternalString(getString("sshKeyType"));
|
sshKeyType = SettingsSSHKey.fromInternalString(getString("sshKeyType")).val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
Future<void> save() async {
|
Future<void> save() async {
|
||||||
var def = GitConfig(id, pref);
|
var def = GitConfig(id, pref);
|
||||||
// I could call _load and get all the values
|
// I could call _load and get all the values
|
||||||
@ -51,7 +61,11 @@ class GitConfig extends ChangeNotifier with SettingsSharedPref {
|
|||||||
await setString("sshPublicKey", sshPublicKey, def.sshPublicKey);
|
await setString("sshPublicKey", sshPublicKey, def.sshPublicKey);
|
||||||
await setString("sshPrivateKey", sshPrivateKey, def.sshPrivateKey);
|
await setString("sshPrivateKey", sshPrivateKey, def.sshPrivateKey);
|
||||||
await setString("sshPassword", sshPassword, def.sshPassword);
|
await setString("sshPassword", sshPassword, def.sshPassword);
|
||||||
await setOption("sshKeyType", sshKeyType, def.sshKeyType);
|
await setOption(
|
||||||
|
"sshKeyType",
|
||||||
|
SettingsSSHKey.fromEnum(sshKeyType),
|
||||||
|
SettingsSSHKey.fromEnum(def.sshKeyType),
|
||||||
|
);
|
||||||
|
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
@ -109,4 +123,11 @@ enum SettingsSSHKey implements SettingsOption {
|
|||||||
orElse: () => Default,
|
orElse: () => Default,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SettingsSSHKey fromEnum(SshKeyType k) {
|
||||||
|
return values.firstWhere(
|
||||||
|
(e) => e.val == k,
|
||||||
|
orElse: () => Default,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,11 +49,11 @@ class SettingsGit extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
ListOptionPreference<SettingsSSHKey>(
|
ListOptionPreference<SettingsSSHKey>(
|
||||||
title: tr(LocaleKeys.settings_sshKey_keyType),
|
title: tr(LocaleKeys.settings_sshKey_keyType),
|
||||||
currentOption: gitConfig.sshKeyType,
|
currentOption: SettingsSSHKey.fromEnum(gitConfig.sshKeyType),
|
||||||
values: SettingsSSHKey.values,
|
values: SettingsSSHKey.values,
|
||||||
defaultValue: SettingsSSHKey.Default,
|
defaultValue: SettingsSSHKey.Default,
|
||||||
onChange: (val) {
|
onChange: (keyType) {
|
||||||
gitConfig.sshKeyType = val;
|
gitConfig.sshKeyType = keyType.val;
|
||||||
gitConfig.save();
|
gitConfig.save();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -9,7 +9,6 @@ import 'package:flutter/services.dart';
|
|||||||
|
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:git_setup/keygen.dart';
|
import 'package:git_setup/keygen.dart';
|
||||||
import 'package:git_setup/screens.dart';
|
|
||||||
import 'package:git_setup/sshkey.dart';
|
import 'package:git_setup/sshkey.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
@ -25,6 +24,7 @@ import 'package:gitjournal/settings/widgets/settings_list_preference.dart';
|
|||||||
import 'package:gitjournal/ssh/keygen.dart';
|
import 'package:gitjournal/ssh/keygen.dart';
|
||||||
import 'package:gitjournal/utils/utils.dart';
|
import 'package:gitjournal/utils/utils.dart';
|
||||||
import 'package:gitjournal/widgets/future_builder_with_progress.dart';
|
import 'package:gitjournal/widgets/future_builder_with_progress.dart';
|
||||||
|
import 'package:gitjournal/widgets/setup.dart';
|
||||||
|
|
||||||
class GitRemoteSettingsScreen extends StatefulWidget {
|
class GitRemoteSettingsScreen extends StatefulWidget {
|
||||||
static const routePath = '/settings/gitRemote';
|
static const routePath = '/settings/gitRemote';
|
||||||
@ -215,7 +215,7 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
|
|||||||
DateTime.now().toIso8601String().substring(0, 10); // only the date
|
DateTime.now().toIso8601String().substring(0, 10); // only the date
|
||||||
|
|
||||||
GitJournalKeygen()
|
GitJournalKeygen()
|
||||||
.generate(type: keyType.val, comment: comment)
|
.generate(type: keyType, comment: comment)
|
||||||
.then((SshKey? sshKey) {
|
.then((SshKey? sshKey) {
|
||||||
var config = Provider.of<GitConfig>(context, listen: false);
|
var config = Provider.of<GitConfig>(context, listen: false);
|
||||||
config.sshPublicKey = sshKey!.publicKey;
|
config.sshPublicKey = sshKey!.publicKey;
|
||||||
@ -263,11 +263,9 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
|
|||||||
await storageConfig.save();
|
await storageConfig.save();
|
||||||
|
|
||||||
var route = MaterialPageRoute(
|
var route = MaterialPageRoute(
|
||||||
builder: (context) => GitHostSetupScreen(
|
builder: (context) => GitJournalGitSetupScreen(
|
||||||
repoFolderName: repoFolderName,
|
repoFolderName: repoFolderName,
|
||||||
remoteName: 'origin',
|
|
||||||
onCompletedFunction: repo.completeGitHostSetup,
|
onCompletedFunction: repo.completeGitHostSetup,
|
||||||
keygen: GitJournalKeygen(),
|
|
||||||
),
|
),
|
||||||
settings: const RouteSettings(name: '/setupRemoteGit'),
|
settings: const RouteSettings(name: '/setupRemoteGit'),
|
||||||
);
|
);
|
||||||
|
38
lib/widgets/setup.dart
Normal file
38
lib/widgets/setup.dart
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
|
import 'package:function_types/function_types.dart';
|
||||||
|
import 'package:git_setup/git_config.dart' as setup;
|
||||||
|
import 'package:git_setup/screens.dart';
|
||||||
|
import 'package:gitjournal/settings/git_config.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import 'package:gitjournal/ssh/keygen.dart';
|
||||||
|
|
||||||
|
class GitJournalGitSetupScreen extends StatelessWidget {
|
||||||
|
final String repoFolderName;
|
||||||
|
final Func2<String, String, Future<void>> onCompletedFunction;
|
||||||
|
|
||||||
|
const GitJournalGitSetupScreen({
|
||||||
|
Key? key,
|
||||||
|
required this.repoFolderName,
|
||||||
|
required this.onCompletedFunction,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return GitHostSetupScreen(
|
||||||
|
repoFolderName: repoFolderName,
|
||||||
|
remoteName: "origin",
|
||||||
|
onCompletedFunction: onCompletedFunction,
|
||||||
|
keygen: GitJournalKeygen(),
|
||||||
|
providers: _Providers(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _Providers implements setup.SetupProviders {
|
||||||
|
@override
|
||||||
|
setup.GitConfig readGitConfig(BuildContext context) {
|
||||||
|
return context.read<GitConfig>();
|
||||||
|
}
|
||||||
|
}
|
@ -9,12 +9,11 @@ import 'package:flutter/services.dart';
|
|||||||
|
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:function_types/function_types.dart';
|
import 'package:function_types/function_types.dart';
|
||||||
|
import 'package:git_setup/git_config.dart';
|
||||||
import 'package:gitjournal/analytics/analytics.dart';
|
import 'package:gitjournal/analytics/analytics.dart';
|
||||||
import 'package:gitjournal/error_reporting.dart';
|
import 'package:gitjournal/error_reporting.dart';
|
||||||
import 'package:gitjournal/generated/locale_keys.g.dart';
|
import 'package:gitjournal/generated/locale_keys.g.dart';
|
||||||
import 'package:gitjournal/logger/logger.dart';
|
import 'package:gitjournal/logger/logger.dart';
|
||||||
import 'package:gitjournal/settings/git_config.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
|
|
||||||
import 'apis/githost_factory.dart';
|
import 'apis/githost_factory.dart';
|
||||||
import 'button.dart';
|
import 'button.dart';
|
||||||
@ -24,10 +23,12 @@ import 'loading.dart';
|
|||||||
class GitHostSetupAutoConfigurePage extends StatefulWidget {
|
class GitHostSetupAutoConfigurePage extends StatefulWidget {
|
||||||
final GitHostType gitHostType;
|
final GitHostType gitHostType;
|
||||||
final Func2<GitHost?, UserInfo?, void> onDone;
|
final Func2<GitHost?, UserInfo?, void> onDone;
|
||||||
|
final SetupProviders providers;
|
||||||
|
|
||||||
const GitHostSetupAutoConfigurePage({
|
const GitHostSetupAutoConfigurePage({
|
||||||
required this.gitHostType,
|
required this.gitHostType,
|
||||||
required this.onDone,
|
required this.onDone,
|
||||||
|
required this.providers,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@ -81,7 +82,7 @@ class GitHostSetupAutoConfigurePageState
|
|||||||
userInfo = await gitHost!.getUserInfo().getOrThrow();
|
userInfo = await gitHost!.getUserInfo().getOrThrow();
|
||||||
Log.d("Got UserInfo - $userInfo");
|
Log.d("Got UserInfo - $userInfo");
|
||||||
|
|
||||||
var gitConfig = Provider.of<GitConfig>(context, listen: false);
|
var gitConfig = widget.providers.readGitConfig(context);
|
||||||
if (userInfo.name.isNotEmpty) {
|
if (userInfo.name.isNotEmpty) {
|
||||||
gitConfig.gitAuthor = userInfo.name;
|
gitConfig.gitAuthor = userInfo.name;
|
||||||
} else if (userInfo.username.isNotEmpty) {
|
} else if (userInfo.username.isNotEmpty) {
|
||||||
|
25
packages/git_setup/lib/git_config.dart
Normal file
25
packages/git_setup/lib/git_config.dart
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
|
import 'package:git_setup/keygen.dart';
|
||||||
|
|
||||||
|
abstract class GitConfig {
|
||||||
|
String get gitAuthor;
|
||||||
|
String get gitAuthorEmail;
|
||||||
|
String get sshPublicKey;
|
||||||
|
String get sshPrivateKey;
|
||||||
|
String get sshPassword;
|
||||||
|
SshKeyType get sshKeyType;
|
||||||
|
|
||||||
|
set gitAuthor(String x);
|
||||||
|
set gitAuthorEmail(String x);
|
||||||
|
set sshPublicKey(String x);
|
||||||
|
set sshPrivateKey(String x);
|
||||||
|
set sshPassword(String x);
|
||||||
|
set sshKeyType(SshKeyType x);
|
||||||
|
|
||||||
|
Future<void> save();
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class SetupProviders {
|
||||||
|
GitConfig readGitConfig(BuildContext context);
|
||||||
|
}
|
@ -15,7 +15,6 @@ import 'package:gitjournal/error_reporting.dart';
|
|||||||
import 'package:gitjournal/generated/locale_keys.g.dart';
|
import 'package:gitjournal/generated/locale_keys.g.dart';
|
||||||
import 'package:gitjournal/logger/logger.dart';
|
import 'package:gitjournal/logger/logger.dart';
|
||||||
import 'package:gitjournal/repository.dart';
|
import 'package:gitjournal/repository.dart';
|
||||||
import 'package:gitjournal/settings/git_config.dart';
|
|
||||||
import 'package:gitjournal/settings/storage_config.dart';
|
import 'package:gitjournal/settings/storage_config.dart';
|
||||||
import 'package:gitjournal/utils/utils.dart';
|
import 'package:gitjournal/utils/utils.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
@ -24,6 +23,7 @@ import 'package:time/time.dart';
|
|||||||
import 'package:universal_io/io.dart' show Platform, Directory;
|
import 'package:universal_io/io.dart' show Platform, Directory;
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
|
import 'package:git_setup/git_config.dart';
|
||||||
import 'apis/githost_factory.dart';
|
import 'apis/githost_factory.dart';
|
||||||
import 'autoconfigure.dart';
|
import 'autoconfigure.dart';
|
||||||
import 'button.dart';
|
import 'button.dart';
|
||||||
@ -44,12 +44,14 @@ class GitHostSetupScreen extends StatefulWidget {
|
|||||||
final String remoteName;
|
final String remoteName;
|
||||||
final Func2<String, String, Future<void>> onCompletedFunction;
|
final Func2<String, String, Future<void>> onCompletedFunction;
|
||||||
final Keygen keygen;
|
final Keygen keygen;
|
||||||
|
final SetupProviders providers;
|
||||||
|
|
||||||
const GitHostSetupScreen({
|
const GitHostSetupScreen({
|
||||||
required this.repoFolderName,
|
required this.repoFolderName,
|
||||||
required this.remoteName,
|
required this.remoteName,
|
||||||
required this.onCompletedFunction,
|
required this.onCompletedFunction,
|
||||||
required this.keygen,
|
required this.keygen,
|
||||||
|
required this.providers,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -208,6 +210,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
providers: widget.providers,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -239,7 +242,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
|||||||
return GitHostUserProvidedKeysPage(
|
return GitHostUserProvidedKeysPage(
|
||||||
doneFunction:
|
doneFunction:
|
||||||
(String publicKey, String privateKey, String password) async {
|
(String publicKey, String privateKey, String password) async {
|
||||||
var gitConfig = Provider.of<GitConfig>(context, listen: false);
|
var gitConfig = widget.providers.readGitConfig(context);
|
||||||
gitConfig.sshPublicKey = publicKey;
|
gitConfig.sshPublicKey = publicKey;
|
||||||
gitConfig.sshPrivateKey = privateKey;
|
gitConfig.sshPrivateKey = privateKey;
|
||||||
gitConfig.sshPassword = password;
|
gitConfig.sshPassword = password;
|
||||||
@ -336,7 +339,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
|||||||
} else if (_keyGenerationChoice == KeyGenerationChoice.UserProvided) {
|
} else if (_keyGenerationChoice == KeyGenerationChoice.UserProvided) {
|
||||||
return GitHostUserProvidedKeysPage(
|
return GitHostUserProvidedKeysPage(
|
||||||
doneFunction: (publicKey, privateKey, password) async {
|
doneFunction: (publicKey, privateKey, password) async {
|
||||||
var gitConfig = Provider.of<GitConfig>(context, listen: false);
|
var gitConfig = widget.providers.readGitConfig(context);
|
||||||
gitConfig.sshPublicKey = publicKey;
|
gitConfig.sshPublicKey = publicKey;
|
||||||
gitConfig.sshPrivateKey = privateKey;
|
gitConfig.sshPrivateKey = privateKey;
|
||||||
gitConfig.sshPassword = password;
|
gitConfig.sshPassword = password;
|
||||||
@ -462,16 +465,16 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var keyType = context.read<GitConfig>().sshKeyType;
|
var keyType = widget.providers.readGitConfig(context).sshKeyType;
|
||||||
var comment = "GitJournal-" +
|
var comment = "GitJournal-" +
|
||||||
Platform.operatingSystem +
|
Platform.operatingSystem +
|
||||||
"-" +
|
"-" +
|
||||||
DateTime.now().toIso8601String().substring(0, 10); // only the date
|
DateTime.now().toIso8601String().substring(0, 10); // only the date
|
||||||
|
|
||||||
widget.keygen
|
widget.keygen
|
||||||
.generate(type: keyType.val, comment: comment)
|
.generate(type: keyType, comment: comment)
|
||||||
.then((SshKey? sshKey) {
|
.then((SshKey? sshKey) {
|
||||||
var gitConfig = Provider.of<GitConfig>(context, listen: false);
|
var gitConfig = widget.providers.readGitConfig(context);
|
||||||
gitConfig.sshPublicKey = sshKey!.publicKey;
|
gitConfig.sshPublicKey = sshKey!.publicKey;
|
||||||
gitConfig.sshPrivateKey = sshKey.privateKey;
|
gitConfig.sshPrivateKey = sshKey.privateKey;
|
||||||
gitConfig.sshPassword = sshKey.password;
|
gitConfig.sshPassword = sshKey.password;
|
||||||
@ -560,7 +563,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
|||||||
var repo = context.read<GitJournalRepo>();
|
var repo = context.read<GitJournalRepo>();
|
||||||
var basePath = repo.gitBaseDirectory;
|
var basePath = repo.gitBaseDirectory;
|
||||||
|
|
||||||
var gitConfig = Provider.of<GitConfig>(context, listen: false);
|
var gitConfig = widget.providers.readGitConfig(context);
|
||||||
var repoPath = p.join(basePath, widget.repoFolderName);
|
var repoPath = p.join(basePath, widget.repoFolderName);
|
||||||
Log.i("RepoPath: $repoPath");
|
Log.i("RepoPath: $repoPath");
|
||||||
|
|
||||||
@ -628,16 +631,16 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
|||||||
setState(() {
|
setState(() {
|
||||||
_autoConfigureMessage = tr(LocaleKeys.setup_sshKey_generate);
|
_autoConfigureMessage = tr(LocaleKeys.setup_sshKey_generate);
|
||||||
});
|
});
|
||||||
var keyType = context.read<GitConfig>().sshKeyType;
|
var keyType = widget.providers.readGitConfig(context).sshKeyType;
|
||||||
var sshKey = await widget.keygen.generate(
|
var sshKey = await widget.keygen.generate(
|
||||||
type: keyType.val,
|
type: keyType,
|
||||||
comment: "GitJournal",
|
comment: "GitJournal",
|
||||||
);
|
);
|
||||||
if (sshKey == null) {
|
if (sshKey == null) {
|
||||||
// FIXME: Handle case when sshKey generation failed
|
// FIXME: Handle case when sshKey generation failed
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var gitConfig = Provider.of<GitConfig>(context, listen: false);
|
var gitConfig = widget.providers.readGitConfig(context);
|
||||||
gitConfig.sshPublicKey = sshKey.publicKey;
|
gitConfig.sshPublicKey = sshKey.publicKey;
|
||||||
gitConfig.sshPrivateKey = sshKey.privateKey;
|
gitConfig.sshPrivateKey = sshKey.privateKey;
|
||||||
gitConfig.sshPassword = sshKey.password;
|
gitConfig.sshPassword = sshKey.password;
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:git_setup/git_config.dart';
|
||||||
|
import 'package:git_setup/keygen.dart';
|
||||||
|
|
||||||
import 'apis/api_fakes.dart';
|
import 'apis/api_fakes.dart';
|
||||||
import 'apis/githost_factory.dart';
|
import 'apis/githost_factory.dart';
|
||||||
@ -17,6 +19,36 @@ import 'repo_selector.dart';
|
|||||||
import 'screens.dart';
|
import 'screens.dart';
|
||||||
import 'sshkey.dart';
|
import 'sshkey.dart';
|
||||||
|
|
||||||
|
class DummyGitConfig implements GitConfig {
|
||||||
|
@override
|
||||||
|
String gitAuthor = "GitAuthor";
|
||||||
|
|
||||||
|
@override
|
||||||
|
String gitAuthorEmail = "test@example.com";
|
||||||
|
|
||||||
|
@override
|
||||||
|
SshKeyType sshKeyType = SshKeyType.Ed25519;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String sshPassword = "";
|
||||||
|
|
||||||
|
@override
|
||||||
|
String sshPrivateKey = "";
|
||||||
|
|
||||||
|
@override
|
||||||
|
String sshPublicKey = "";
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> save() async {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _Providers implements SetupProviders {
|
||||||
|
@override
|
||||||
|
GitConfig readGitConfig(BuildContext context) {
|
||||||
|
return DummyGitConfig();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Widget autoConfigureChoice() {
|
Widget autoConfigureChoice() {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.all(16.0),
|
padding: const EdgeInsets.all(16.0),
|
||||||
@ -42,6 +74,7 @@ Widget autoConfigure() {
|
|||||||
child: GitHostSetupAutoConfigurePage(
|
child: GitHostSetupAutoConfigurePage(
|
||||||
gitHostType: GitHostType.GitHub,
|
gitHostType: GitHostType.GitHub,
|
||||||
onDone: (host, userInfo) {},
|
onDone: (host, userInfo) {},
|
||||||
|
providers: _Providers(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user