Monarch: Add most of the host setup screens

I've also renamed all the host setup screens with "Page" in the end.
This way it's more obvious.
This commit is contained in:
Vishesh Handa
2021-06-09 12:06:39 +02:00
parent 2bd8f18205
commit 281ea31277
5 changed files with 120 additions and 42 deletions

View File

@ -149,7 +149,7 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
void _customSshKeys() {
var route = MaterialPageRoute(
builder: (context) => Scaffold(
body: GitHostUserProvidedKeys(
body: GitHostUserProvidedKeysPage(
doneFunction: _updateKeys,
saveText: tr("setup.sshKey.save"),
),

View File

@ -14,22 +14,23 @@ import 'button.dart';
import 'error.dart';
import 'loading.dart';
class GitHostSetupAutoConfigure extends StatefulWidget {
class GitHostSetupAutoConfigurePage extends StatefulWidget {
final GitHostType gitHostType;
final Func2<GitHost?, UserInfo?, void> onDone;
GitHostSetupAutoConfigure({
GitHostSetupAutoConfigurePage({
required this.gitHostType,
required this.onDone,
});
@override
GitHostSetupAutoConfigureState createState() {
return GitHostSetupAutoConfigureState();
GitHostSetupAutoConfigurePageState createState() {
return GitHostSetupAutoConfigurePageState();
}
}
class GitHostSetupAutoConfigureState extends State<GitHostSetupAutoConfigure> {
class GitHostSetupAutoConfigurePageState
extends State<GitHostSetupAutoConfigurePage> {
GitHost? gitHost;
String errorMessage = "";

View File

@ -138,7 +138,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
if (pos == 2) {
if (_pageChoice[0] == PageChoice0.CustomProvider) {
return GitHostSetupKeyChoice(
return GitHostSetupKeyChoicePage(
onGenerateKeys: () {
setState(() {
_keyGenerationChoice = KeyGenerationChoice.AutoGenerated;
@ -175,7 +175,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
initialValue: _gitCloneUrl,
);
} else if (_pageChoice[1] == PageChoice1.Auto) {
return GitHostSetupAutoConfigure(
return GitHostSetupAutoConfigurePage(
gitHostType: _gitHostType,
onDone: (GitHost? gitHost, UserInfo? userInfo) {
if (gitHost == null) {
@ -200,7 +200,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
if (_pageChoice[0] == PageChoice0.CustomProvider) {
assert(_keyGenerationChoice != KeyGenerationChoice.Unknown);
if (_keyGenerationChoice == KeyGenerationChoice.AutoGenerated) {
return GitHostSetupSshKeyUnknownProvider(
return GitHostSetupSshKeyUnknownProviderPage(
doneFunction: () {
setState(() {
_pageCount = pos + 2;
@ -220,7 +220,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
copyKeyFunction: _copyKeyToClipboard,
);
} else if (_keyGenerationChoice == KeyGenerationChoice.UserProvided) {
return GitHostUserProvidedKeys(
return GitHostUserProvidedKeysPage(
doneFunction:
(String publicKey, String privateKey, String password) async {
var settings = Provider.of<Settings>(context, listen: false);
@ -243,7 +243,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
}
if (_pageChoice[1] == PageChoice1.Manual) {
return GitHostSetupKeyChoice(
return GitHostSetupKeyChoicePage(
onGenerateKeys: () {
setState(() {
_keyGenerationChoice = KeyGenerationChoice.AutoGenerated;
@ -293,7 +293,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
if (_pageChoice[1] == PageChoice1.Manual) {
assert(_keyGenerationChoice != KeyGenerationChoice.Unknown);
if (_keyGenerationChoice == KeyGenerationChoice.AutoGenerated) {
return GitHostSetupSshKeyKnownProvider(
return GitHostSetupSshKeyKnownProviderPage(
doneFunction: () {
setState(() {
_pageCount = 6;
@ -315,7 +315,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
openDeployKeyPage: _launchDeployKeyPage,
);
} else if (_keyGenerationChoice == KeyGenerationChoice.UserProvided) {
return GitHostUserProvidedKeys(
return GitHostUserProvidedKeysPage(
doneFunction: (publicKey, privateKey, password) async {
var settings = Provider.of<Settings>(context, listen: false);
settings.sshPublicKey = publicKey;

View File

@ -4,36 +4,112 @@ import 'package:gitjournal/apis/githost_factory.dart';
import 'package:gitjournal/setup/autoconfigure.dart';
import 'package:gitjournal/setup/clone_url.dart';
import 'package:gitjournal/setup/error.dart';
import 'package:gitjournal/setup/key_editors.dart';
import 'package:gitjournal/setup/loading.dart';
import 'package:gitjournal/setup/screens.dart';
import 'package:gitjournal/setup/sshkey.dart';
Widget autoConfigure() {
Widget autoConfigureChoice() {
return Padding(
child: GitHostSetupAutoConfigure(
gitHostType: GitHostType.GitHub,
onDone: (host, userInfo) => null,
),
padding: const EdgeInsets.all(16.0),
child: GitHostAutoConfigureChoicePage(
onDone: (_) {},
),
);
}
Widget cloneUrl() => GitCloneUrlPage(
Widget gitHostChoice() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitHostChoicePage(
onCustomGitHost: () {},
onKnownGitHost: (_) {},
),
);
}
Widget autoConfigure() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitHostSetupAutoConfigurePage(
gitHostType: GitHostType.GitHub,
onDone: (host, userInfo) => null,
),
);
}
Widget cloneUrl() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitCloneUrlPage(
initialValue: "foo?",
doneFunction: (val) => null,
);
Widget keyEditors() => KeyEditor(
GlobalKey(),
TextEditingController(),
(val) => null,
);
),
);
}
// FIXME: Create widgets for all the errors!
Widget loadingError() => GitHostSetupErrorPage(
Widget loadingError() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitHostSetupErrorPage(
"This is an error message",
);
),
);
}
// FIXME: Create widgets for all the loading screen messages!
Widget loading() => GitHostSetupLoadingPage(
Widget loading() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitHostSetupLoadingPage(
"Loading Message",
);
),
);
}
var _publicKey =
"ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBJ9OSG+YIxqsZiXWisqJIqRStX5wjy9oMrT9gnB85jgR03RjMBWpxXAtrlreo7ljDqhs9g3zdXq/oxcPgzyS+mm33A4WTGGY0u4RbxY14q8V1p/CVu5sd39UYpwYsj0HLw== vishesh@Visheshs-MacBook-Pro.local";
Widget sshKeyKnownProviderPage() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitHostSetupSshKeyKnownProviderPage(
openDeployKeyPage: () {},
copyKeyFunction: (_) {},
publicKey: _publicKey,
regenerateFunction: () {},
doneFunction: () {},
),
);
}
Widget sshKeyUnknownProviderPage() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitHostSetupSshKeyUnknownProviderPage(
publicKey: _publicKey,
regenerateFunction: () {},
doneFunction: () {},
copyKeyFunction: (_) {},
),
);
}
Widget keyChoicePage() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitHostSetupKeyChoicePage(
onGenerateKeys: () {},
onUserProvidedKeys: () {},
),
);
}
Widget keyUserProvidedKeysPage() {
return Padding(
padding: const EdgeInsets.all(16.0),
child: GitHostUserProvidedKeysPage(
doneFunction: (_, __, ___) {},
),
);
}

View File

@ -7,7 +7,7 @@ import 'button.dart';
import 'key_editors.dart';
import 'loading.dart';
class GitHostSetupSshKeyKnownProvider extends StatelessWidget {
class GitHostSetupSshKeyKnownProviderPage extends StatelessWidget {
final Func0<void> doneFunction;
final Func0<void> regenerateFunction;
final Func1<BuildContext, void> copyKeyFunction;
@ -15,7 +15,7 @@ class GitHostSetupSshKeyKnownProvider extends StatelessWidget {
final Func0<void> openDeployKeyPage;
GitHostSetupSshKeyKnownProvider({
GitHostSetupSshKeyKnownProviderPage({
required this.doneFunction,
required this.regenerateFunction,
required this.copyKeyFunction,
@ -91,13 +91,13 @@ class GitHostSetupSshKeyKnownProvider extends StatelessWidget {
}
}
class GitHostSetupSshKeyUnknownProvider extends StatelessWidget {
class GitHostSetupSshKeyUnknownProviderPage extends StatelessWidget {
final Func0<void> doneFunction;
final Func0<void> regenerateFunction;
final Func1<BuildContext, void> copyKeyFunction;
final String? publicKey;
GitHostSetupSshKeyUnknownProvider({
GitHostSetupSshKeyUnknownProviderPage({
required this.doneFunction,
required this.regenerateFunction,
required this.copyKeyFunction,
@ -167,11 +167,11 @@ class GitHostSetupSshKeyUnknownProvider extends StatelessWidget {
}
}
class GitHostSetupKeyChoice extends StatelessWidget {
class GitHostSetupKeyChoicePage extends StatelessWidget {
final Func0<void> onGenerateKeys;
final Func0<void> onUserProvidedKeys;
GitHostSetupKeyChoice({
GitHostSetupKeyChoicePage({
required this.onGenerateKeys,
required this.onUserProvidedKeys,
});
@ -203,22 +203,23 @@ class GitHostSetupKeyChoice extends StatelessWidget {
}
}
class GitHostUserProvidedKeys extends StatefulWidget {
class GitHostUserProvidedKeysPage extends StatefulWidget {
final Func3<String, String, String, void>
doneFunction; // public, private, password
final String saveText;
GitHostUserProvidedKeys({
GitHostUserProvidedKeysPage({
required this.doneFunction,
this.saveText = "",
});
@override
_GitHostUserProvidedKeysState createState() =>
_GitHostUserProvidedKeysState();
_GitHostUserProvidedKeysPageState createState() =>
_GitHostUserProvidedKeysPageState();
}
class _GitHostUserProvidedKeysState extends State<GitHostUserProvidedKeys> {
class _GitHostUserProvidedKeysPageState
extends State<GitHostUserProvidedKeysPage> {
late GlobalKey<FormState> _publicFormKey;
late GlobalKey<FormState> _privateFormKey;
late TextEditingController _publicKeyController;