diff --git a/lib/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart b/lib/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart new file mode 100644 index 00000000..4486bf14 --- /dev/null +++ b/lib/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart @@ -0,0 +1,25 @@ +import 'dart:async'; + +import 'package:cubit_form/cubit_form.dart'; +import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; +import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart'; + +class RecoveryDeviceFormCubit extends FormCubit { + RecoveryDeviceFormCubit( + this.initializingCubit, final FieldCubitFactory fieldFactory) { + tokenField = fieldFactory.createServerDomainField(); + + super.addFields([tokenField]); + } + + @override + FutureOr onSubmit() async { + // initializingCubit.setDomain(ServerDomain( + // domainName: serverDomainField.state.value, + // provider: DnsProvider.Unknown, + // zoneId: "")); + } + + final ServerInstallationCubit initializingCubit; + late final FieldCubit tokenField; +} diff --git a/lib/ui/pages/setup/initializing.dart b/lib/ui/pages/setup/initializing.dart index 8e6fd1ec..e1f6203e 100644 --- a/lib/ui/pages/setup/initializing.dart +++ b/lib/ui/pages/setup/initializing.dart @@ -18,6 +18,7 @@ import 'package:selfprivacy/ui/components/brand_timer/brand_timer.dart'; import 'package:selfprivacy/ui/components/progress_bar/progress_bar.dart'; import 'package:selfprivacy/ui/pages/rootRoute.dart'; import 'package:selfprivacy/ui/pages/setup/recovering/recovery_domain.dart'; +import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_select.dart'; import 'package:selfprivacy/utils/route_transitions/basic.dart'; class InitializingPage extends StatelessWidget { @@ -104,8 +105,8 @@ class InitializingPage extends StatelessWidget { child: BrandButton.text( title: 'basis.connect_to_existing'.tr(), onPressed: () { - Navigator.of(context) - .push(materialRoute(RecoveryDomain())); + Navigator.of(context).push( + materialRoute(RecoveryMethodSelect())); }, ), ) diff --git a/lib/ui/pages/setup/recovering/recovery_method_device_1.dart b/lib/ui/pages/setup/recovering/recovery_method_device_1.dart index 73b32354..43b071b8 100644 --- a/lib/ui/pages/setup/recovering/recovery_method_device_1.dart +++ b/lib/ui/pages/setup/recovering/recovery_method_device_1.dart @@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:selfprivacy/ui/components/brand_button/FilledButton.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; -import 'package:selfprivacy/ui/pages/rootRoute.dart'; +import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_device_2.dart'; import 'package:selfprivacy/utils/route_transitions/basic.dart'; class RecoveryMethodDevice1 extends StatelessWidget { @@ -16,8 +16,8 @@ class RecoveryMethodDevice1 extends StatelessWidget { children: [ FilledButton( title: "recovering.method_device_button".tr(), - onPressed: () => - Navigator.of(context).push(materialRoute(RootPage())), + onPressed: () => Navigator.of(context) + .push(materialRoute(RecoveryMethodDevice2())), ) ], ); diff --git a/lib/ui/pages/setup/recovering/recovery_method_device_2.dart b/lib/ui/pages/setup/recovering/recovery_method_device_2.dart index c5eac006..e9323803 100644 --- a/lib/ui/pages/setup/recovering/recovery_method_device_2.dart +++ b/lib/ui/pages/setup/recovering/recovery_method_device_2.dart @@ -1,25 +1,49 @@ +import 'package:cubit_form/cubit_form.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart'; +import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart'; +import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; import 'package:selfprivacy/ui/components/brand_button/FilledButton.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; -import 'package:selfprivacy/utils/route_transitions/basic.dart'; -import 'package:selfprivacy/ui/pages/rootRoute.dart'; class RecoveryMethodDevice2 extends StatelessWidget { @override Widget build(BuildContext context) { - return BrandHeroScreen( - heroTitle: "recovering.recovery_main_header".tr(), - heroSubtitle: "recovering.method_device_input_description".tr(), - hasBackButton: true, - hasFlashButton: false, - children: [ - FilledButton( - title: "recovering.method_device_button".tr(), - onPressed: () => - Navigator.of(context).push(materialRoute(RootPage())), - ) - ], + var appConfig = context.watch(); + + return BlocProvider( + create: (context) => + RecoveryDeviceFormCubit(appConfig, FieldCubitFactory(context)), + child: Builder( + builder: (context) { + var formCubitState = context.watch().state; + + return BrandHeroScreen( + heroTitle: "recovering.recovery_main_header".tr(), + heroSubtitle: "recovering.method_device_input_description".tr(), + hasBackButton: true, + hasFlashButton: false, + children: [ + CubitFormTextField( + formFieldCubit: + context.read().tokenField, + decoration: InputDecoration( + border: OutlineInputBorder(), + labelText: "recovering.method_device_input_placeholder".tr(), + ), + ), + SizedBox(height: 16), + FilledButton( + title: "more.continue".tr(), + onPressed: formCubitState.isSubmitting + ? null + : () => context.read().trySubmit(), + ) + ], + ); + }, + ), ); } } diff --git a/lib/ui/pages/setup/recovering/recovery_method_select.dart b/lib/ui/pages/setup/recovering/recovery_method_select.dart index 136ec36c..f92545eb 100644 --- a/lib/ui/pages/setup/recovering/recovery_method_select.dart +++ b/lib/ui/pages/setup/recovering/recovery_method_select.dart @@ -5,6 +5,7 @@ import 'package:selfprivacy/ui/components/brand_cards/brand_cards.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/pages/setup/recovering/recovery_fallback_select.dart'; import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_device_1.dart'; +import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_token.dart'; import 'package:selfprivacy/utils/route_transitions/basic.dart'; import 'package:selfprivacy/ui/pages/rootRoute.dart'; @@ -36,7 +37,8 @@ class RecoveryMethodSelect extends StatelessWidget { style: Theme.of(context).textTheme.titleMedium, ), leading: Icon(Icons.password_outlined), - onTap: () => Navigator.of(context).push(materialRoute(RootPage())), + onTap: () => Navigator.of(context) + .push(materialRoute(RecoveryMethodToken())), ), ), SizedBox(height: 16), diff --git a/lib/ui/pages/setup/recovering/recovery_method_token.dart b/lib/ui/pages/setup/recovering/recovery_method_token.dart new file mode 100644 index 00000000..7b0c2564 --- /dev/null +++ b/lib/ui/pages/setup/recovering/recovery_method_token.dart @@ -0,0 +1,49 @@ +import 'package:cubit_form/cubit_form.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart'; +import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart'; +import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; +import 'package:selfprivacy/ui/components/brand_button/FilledButton.dart'; +import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; + +class RecoveryMethodToken extends StatelessWidget { + @override + Widget build(BuildContext context) { + var appConfig = context.watch(); + + return BlocProvider( + create: (context) => + RecoveryDeviceFormCubit(appConfig, FieldCubitFactory(context)), + child: Builder( + builder: (context) { + var formCubitState = context.watch().state; + + return BrandHeroScreen( + heroTitle: "recovering.recovery_main_header".tr(), + heroSubtitle: "recovering.method_recovery_input_description".tr(), + hasBackButton: true, + hasFlashButton: false, + children: [ + CubitFormTextField( + formFieldCubit: + context.read().tokenField, + decoration: InputDecoration( + border: OutlineInputBorder(), + labelText: "recovering.method_device_input_placeholder".tr(), + ), + ), + SizedBox(height: 16), + FilledButton( + title: "more.continue".tr(), + onPressed: formCubitState.isSubmitting + ? null + : () => context.read().trySubmit(), + ) + ], + ); + }, + ), + ); + } +}