mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2025-02-02 14:16:58 +00:00
Add recovery token pages
This commit is contained in:
parent
bf79fb1adf
commit
20f6e8156c
|
@ -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<void> onSubmit() async {
|
||||
// initializingCubit.setDomain(ServerDomain(
|
||||
// domainName: serverDomainField.state.value,
|
||||
// provider: DnsProvider.Unknown,
|
||||
// zoneId: ""));
|
||||
}
|
||||
|
||||
final ServerInstallationCubit initializingCubit;
|
||||
late final FieldCubit<String> tokenField;
|
||||
}
|
|
@ -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()));
|
||||
},
|
||||
),
|
||||
)
|
||||
|
|
|
@ -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())),
|
||||
)
|
||||
],
|
||||
);
|
||||
|
|
|
@ -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<ServerInstallationCubit>();
|
||||
|
||||
return BlocProvider(
|
||||
create: (context) =>
|
||||
RecoveryDeviceFormCubit(appConfig, FieldCubitFactory(context)),
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
var formCubitState = context.watch<RecoveryDeviceFormCubit>().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<RecoveryDeviceFormCubit>().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<RecoveryDeviceFormCubit>().trySubmit(),
|
||||
)
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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),
|
||||
|
|
49
lib/ui/pages/setup/recovering/recovery_method_token.dart
Normal file
49
lib/ui/pages/setup/recovering/recovery_method_token.dart
Normal file
|
@ -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<ServerInstallationCubit>();
|
||||
|
||||
return BlocProvider(
|
||||
create: (context) =>
|
||||
RecoveryDeviceFormCubit(appConfig, FieldCubitFactory(context)),
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
var formCubitState = context.watch<RecoveryDeviceFormCubit>().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<RecoveryDeviceFormCubit>().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<RecoveryDeviceFormCubit>().trySubmit(),
|
||||
)
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue