2023-04-20 03:54:25 +03:00
|
|
|
import 'package:cake_wallet/core/auth_service.dart';
|
2022-11-22 22:52:28 +02:00
|
|
|
import 'package:cake_wallet/entities/pin_code_required_duration.dart';
|
2022-11-16 09:29:14 +02:00
|
|
|
import 'package:cake_wallet/routes.dart';
|
|
|
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
|
|
|
import 'package:cake_wallet/generated/i18n.dart';
|
|
|
|
import 'package:cake_wallet/src/screens/pin_code/pin_code_widget.dart';
|
|
|
|
import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arrow.dart';
|
2022-11-22 22:52:28 +02:00
|
|
|
import 'package:cake_wallet/src/screens/settings/widgets/settings_picker_cell.dart';
|
2022-11-16 09:29:14 +02:00
|
|
|
import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
|
|
|
|
import 'package:cake_wallet/src/widgets/standard_list.dart';
|
2022-11-23 19:06:41 +02:00
|
|
|
import 'package:cake_wallet/view_model/settings/security_settings_view_model.dart';
|
2022-11-16 09:29:14 +02:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_mobx/flutter_mobx.dart';
|
|
|
|
|
|
|
|
class SecurityBackupPage extends BasePage {
|
2023-04-20 03:54:25 +03:00
|
|
|
SecurityBackupPage(this._securitySettingsViewModel, this._authService);
|
|
|
|
|
|
|
|
final AuthService _authService;
|
2022-11-16 09:29:14 +02:00
|
|
|
|
|
|
|
@override
|
|
|
|
String get title => S.current.security_and_backup;
|
|
|
|
|
2022-11-25 22:51:07 +02:00
|
|
|
final SecuritySettingsViewModel _securitySettingsViewModel;
|
2022-11-16 09:29:14 +02:00
|
|
|
|
|
|
|
@override
|
|
|
|
Widget body(BuildContext context) {
|
|
|
|
return Container(
|
|
|
|
padding: EdgeInsets.only(top: 10),
|
|
|
|
child: Column(mainAxisSize: MainAxisSize.min, children: [
|
|
|
|
SettingsCellWithArrow(
|
|
|
|
title: S.current.show_keys,
|
2023-04-20 03:54:25 +03:00
|
|
|
handler: (_) => _authService.authenticateAction(context, route: Routes.showKeys),
|
2022-11-16 09:29:14 +02:00
|
|
|
),
|
|
|
|
StandardListSeparator(padding: EdgeInsets.symmetric(horizontal: 24)),
|
|
|
|
SettingsCellWithArrow(
|
|
|
|
title: S.current.create_backup,
|
2023-04-20 03:54:25 +03:00
|
|
|
handler: (_) => _authService.authenticateAction(context, route: Routes.backup),
|
2022-11-16 09:29:14 +02:00
|
|
|
),
|
|
|
|
StandardListSeparator(padding: EdgeInsets.symmetric(horizontal: 24)),
|
|
|
|
SettingsCellWithArrow(
|
2023-04-20 03:54:25 +03:00
|
|
|
title: S.current.settings_change_pin,
|
|
|
|
handler: (_) => _authService.authenticateAction(
|
|
|
|
context,
|
|
|
|
route: Routes.setupPin,
|
|
|
|
arguments: (PinCodeState<PinCodeWidget> setupPinContext, String _) {
|
|
|
|
setupPinContext.close();
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
2022-11-16 09:29:14 +02:00
|
|
|
StandardListSeparator(padding: EdgeInsets.symmetric(horizontal: 24)),
|
|
|
|
Observer(builder: (_) {
|
2022-12-13 16:19:31 +01:00
|
|
|
return SettingsSwitcherCell(
|
|
|
|
title: S.current.settings_allow_biometrical_authentication,
|
|
|
|
value: _securitySettingsViewModel.allowBiometricalAuthentication,
|
|
|
|
onValueChange: (BuildContext context, bool value) {
|
|
|
|
if (value) {
|
2023-04-20 03:54:25 +03:00
|
|
|
_authService.authenticateAction(context,
|
|
|
|
onAuthSuccess: (isAuthenticatedSuccessfully) async {
|
2022-12-13 16:19:31 +01:00
|
|
|
if (isAuthenticatedSuccessfully) {
|
|
|
|
if (await _securitySettingsViewModel.biometricAuthenticated()) {
|
|
|
|
_securitySettingsViewModel
|
|
|
|
.setAllowBiometricalAuthentication(isAuthenticatedSuccessfully);
|
|
|
|
}
|
2022-11-16 09:29:14 +02:00
|
|
|
} else {
|
2022-12-13 16:19:31 +01:00
|
|
|
_securitySettingsViewModel
|
|
|
|
.setAllowBiometricalAuthentication(isAuthenticatedSuccessfully);
|
2022-11-16 09:29:14 +02:00
|
|
|
}
|
2022-12-13 16:19:31 +01:00
|
|
|
});
|
|
|
|
} else {
|
|
|
|
_securitySettingsViewModel.setAllowBiometricalAuthentication(value);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}),
|
|
|
|
Observer(builder: (_) {
|
|
|
|
return SettingsPickerCell<PinCodeRequiredDuration>(
|
|
|
|
title: S.current.require_pin_after,
|
|
|
|
items: PinCodeRequiredDuration.values,
|
|
|
|
selectedItem: _securitySettingsViewModel.pinCodeRequiredDuration,
|
|
|
|
onItemSelected: (PinCodeRequiredDuration code) {
|
|
|
|
_securitySettingsViewModel.setPinCodeRequiredDuration(code);
|
|
|
|
},
|
2022-11-22 22:52:28 +02:00
|
|
|
);
|
2022-11-16 09:29:14 +02:00
|
|
|
}),
|
|
|
|
]),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|