diff --git a/.github/workflows/pr_test_build.yml b/.github/workflows/pr_test_build.yml index bfa378342..dc231df42 100644 --- a/.github/workflows/pr_test_build.yml +++ b/.github/workflows/pr_test_build.yml @@ -42,7 +42,7 @@ jobs: - name: Flutter action uses: subosito/flutter-action@v1 with: - flutter-version: "3.13.9" + flutter-version: "3.10.x" channel: stable - name: Install package dependencies diff --git a/android/build.gradle b/android/build.gradle index e182e39af..8286d9cb9 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.8.10' + ext.kotlin_version = '1.7.10' repositories { google() jcenter() diff --git a/cw_bitcoin/pubspec.yaml b/cw_bitcoin/pubspec.yaml index 1ccdb70c9..632a3140a 100644 --- a/cw_bitcoin/pubspec.yaml +++ b/cw_bitcoin/pubspec.yaml @@ -39,14 +39,11 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.7 + build_runner: ^2.1.11 build_resolvers: ^2.0.9 mobx_codegen: ^2.0.7 hive_generator: ^1.1.3 -dependency_overrides: - watcher: ^1.1.0 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/cw_bitcoin_cash/pubspec.yaml b/cw_bitcoin_cash/pubspec.yaml index ceef539c3..37827f1ba 100644 --- a/cw_bitcoin_cash/pubspec.yaml +++ b/cw_bitcoin_cash/pubspec.yaml @@ -39,13 +39,10 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.7 + build_runner: ^2.1.11 mobx_codegen: ^2.0.7 hive_generator: ^1.1.3 -dependency_overrides: - watcher: ^1.1.0 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/cw_core/pubspec.yaml b/cw_core/pubspec.yaml index 51d671dc7..04a840d4e 100644 --- a/cw_core/pubspec.yaml +++ b/cw_core/pubspec.yaml @@ -28,14 +28,11 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.7 + build_runner: ^2.1.11 build_resolvers: ^2.0.9 mobx_codegen: ^2.0.7 hive_generator: ^2.0.1 -dependency_overrides: - watcher: ^1.1.0 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/cw_ethereum/pubspec.yaml b/cw_ethereum/pubspec.yaml index cbe6644a4..649ec574b 100644 --- a/cw_ethereum/pubspec.yaml +++ b/cw_ethereum/pubspec.yaml @@ -22,11 +22,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.7 - -dependency_overrides: - watcher: ^1.1.0 - + build_runner: ^2.1.11 flutter: # assets: # - images/a_dot_burr.jpeg diff --git a/cw_evm/pubspec.yaml b/cw_evm/pubspec.yaml index eaafb8415..c202cc72a 100644 --- a/cw_evm/pubspec.yaml +++ b/cw_evm/pubspec.yaml @@ -27,14 +27,11 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.7 + build_runner: ^2.1.11 mobx_codegen: ^2.0.7 hive_generator: ^1.1.3 flutter_lints: ^2.0.0 -dependency_overrides: - watcher: ^1.1.0 - flutter: # assets: # - images/a_dot_burr.jpeg diff --git a/cw_haven/pubspec.yaml b/cw_haven/pubspec.yaml index d868c986d..c215ab779 100644 --- a/cw_haven/pubspec.yaml +++ b/cw_haven/pubspec.yaml @@ -24,14 +24,11 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.7 + build_runner: ^2.1.11 mobx_codegen: ^2.0.7 build_resolvers: ^2.0.9 hive_generator: ^1.1.3 -dependency_overrides: - watcher: ^1.1.0 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/cw_monero/pubspec.yaml b/cw_monero/pubspec.yaml index c49a541ab..a6fe7f967 100644 --- a/cw_monero/pubspec.yaml +++ b/cw_monero/pubspec.yaml @@ -26,14 +26,11 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.7 + build_runner: ^2.1.11 build_resolvers: ^2.0.9 mobx_codegen: ^2.0.7 hive_generator: ^1.1.3 -dependency_overrides: - watcher: ^1.1.0 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/cw_nano/pubspec.yaml b/cw_nano/pubspec.yaml index 768c1bb4e..a4b8732fd 100644 --- a/cw_nano/pubspec.yaml +++ b/cw_nano/pubspec.yaml @@ -32,13 +32,10 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.7 + build_runner: ^2.1.11 mobx_codegen: ^2.0.7 hive_generator: ^1.1.3 -dependency_overrides: - watcher: ^1.1.0 - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/cw_polygon/pubspec.yaml b/cw_polygon/pubspec.yaml index 61a474002..505838d7c 100644 --- a/cw_polygon/pubspec.yaml +++ b/cw_polygon/pubspec.yaml @@ -28,10 +28,7 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 - build_runner: ^2.4.7 - -dependency_overrides: - watcher: ^1.1.0 + build_runner: ^2.1.11 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/cw_solana/pubspec.yaml b/cw_solana/pubspec.yaml index 6b59282b4..7e24983bf 100644 --- a/cw_solana/pubspec.yaml +++ b/cw_solana/pubspec.yaml @@ -26,13 +26,10 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 - build_runner: ^2.4.7 + build_runner: ^2.1.11 mobx_codegen: ^2.0.7 hive_generator: ^1.1.3 -dependency_overrides: - watcher: ^1.1.0 - flutter: # assets: # - images/a_dot_burr.jpeg diff --git a/lib/entities/biometric_auth.dart b/lib/entities/biometric_auth.dart index 463a22775..febbfa469 100644 --- a/lib/entities/biometric_auth.dart +++ b/lib/entities/biometric_auth.dart @@ -1,28 +1,32 @@ +import 'package:local_auth/local_auth.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_local_authentication/flutter_local_authentication.dart'; +import 'package:cake_wallet/generated/i18n.dart'; class BiometricAuth { - final _flutterLocalAuthenticationPlugin = FlutterLocalAuthentication(); + final _localAuth = LocalAuthentication(); Future isAuthenticated() async { try { - final authenticated = await _flutterLocalAuthenticationPlugin.authenticate(); - return authenticated; - } catch (e) { + return await _localAuth.authenticate( + localizedReason: S.current.biometric_auth_reason, + options: AuthenticationOptions( + biometricOnly: true, + useErrorDialogs: true, + stickyAuth: false)); + } on PlatformException catch (e) { print(e); } + return false; } Future canCheckBiometrics() async { - bool canAuthenticate; try { - canAuthenticate = await _flutterLocalAuthenticationPlugin.canAuthenticate(); - } catch (error) { - print("Exception checking support. $error"); - canAuthenticate = false; + return await _localAuth.canCheckBiometrics; + } on PlatformException catch (e) { + print(e); } - return canAuthenticate; + return false; } } diff --git a/lib/locales/hausa_intl.dart b/lib/locales/hausa_intl.dart index 6cf757b60..749d39a4d 100644 --- a/lib/locales/hausa_intl.dart +++ b/lib/locales/hausa_intl.dart @@ -751,50 +751,6 @@ class HaMaterialLocalizations extends GlobalMaterialLocalizations { @override String get scrimOnTapHintRaw => "Scrip on Tap"; - - @override - // TODO: implement collapsedHint - String get collapsedHint => "collapsedHint"; - - @override - // TODO: implement expandedHint - String get expandedHint => "expandedHint"; - - @override - // TODO: implement expansionTileCollapsedHint - String get expansionTileCollapsedHint => "expansionTileCollapsedHint"; - - @override - // TODO: implement expansionTileCollapsedTapHint - String get expansionTileCollapsedTapHint => "expansionTileCollapsedTapHint"; - - @override - // TODO: implement expansionTileExpandedHint - String get expansionTileExpandedHint => "expansionTileExpandedHint"; - - @override - // TODO: implement expansionTileExpandedTapHint - String get expansionTileExpandedTapHint => "expansionTileExpandedTapHint"; - - @override - // TODO: implement scanTextButtonLabel - String get scanTextButtonLabel => "scanTextButtonLabel"; - - @override - // TODO: implement lookUpButtonLabel - String get lookUpButtonLabel => "lookUpButtonLabel"; - - @override - // TODO: implement menuDismissLabel - String get menuDismissLabel => "menuDismissLabel"; - - @override - // TODO: implement searchWebButtonLabel - String get searchWebButtonLabel => "searchWebButtonLabel"; - - @override - // TODO: implement shareButtonLabel - String get shareButtonLabel => "shareButtonLabel"; } /// Cupertino Support @@ -999,24 +955,4 @@ class HaCupertinoLocalizations extends GlobalCupertinoLocalizations { @override String get noSpellCheckReplacementsLabel => ""; - - @override - // TODO: implement clearButtonLabel - String get clearButtonLabel => "clearButtonLabel"; - - @override - // TODO: implement lookUpButtonLabel - String get lookUpButtonLabel => "lookUpButtonLabel"; - - @override - // TODO: implement menuDismissLabel - String get menuDismissLabel => "menuDismissLabel"; - - @override - // TODO: implement searchWebButtonLabel - String get searchWebButtonLabel => "searchWebButtonLabel"; - - @override - // TODO: implement shareButtonLabel - String get shareButtonLabel => "shareButtonLabel"; } diff --git a/lib/locales/yoruba_intl.dart b/lib/locales/yoruba_intl.dart index 3c720b80e..889c21cb7 100644 --- a/lib/locales/yoruba_intl.dart +++ b/lib/locales/yoruba_intl.dart @@ -1,3 +1,4 @@ + import 'dart:async'; import 'package:flutter/cupertino.dart'; @@ -163,62 +164,62 @@ const yoDateSymbols = { 'ọjọ́ Àbámẹ́ta', ], 'STANDALONEWEEKDAYS': [ - 'Ọjọ́ Ajé', - 'Ọjọ́ Ìsẹ́gun', - 'Ọjọ́ Ìsẹ́gun-Ẹtì', - 'Ọjọ́ Ìsẹ́gun-Ọ̀rú', - 'Ọjọ́ Àìkú', - 'Ọjọ́ Jímọ̀', - 'Ọjọ́ Àbámẹ́ta', - ], - 'SHORTWEEKDAYS': [ - 'Ajé', - 'Ìsẹ́gun', - 'Ìsẹ́gun-Ẹtì', - 'Ìsẹ́gun-Ọ̀rú', - 'Àìkú', - 'Jímọ̀', - 'Àbámẹ́ta', - ], - 'STANDALONESHORTWEEKDAYS': [ - 'Ajé', - 'Ìsẹ́gun', - 'Ìsẹ́gun-Ẹtì', - 'Ìsẹ́gun-Ọ̀rú', - 'Àìkú', - 'Jímọ̀', - 'Àbámẹ́ta', - ], - 'NARROWWEEKDAYS': [ - 'A', - 'A', - 'Ì', - 'A', - 'À', - 'J', - 'À', - ], - 'STANDALONENARROWWEEKDAYS': [ - 'A', - 'A', - 'Ì', - 'A', - 'À', - 'J', - 'À', - ], - 'SHORTQUARTERS': [ - 'K1', - 'K2', - 'K3', - 'K4', - ], - 'QUARTERS': [ - '1. kwata', - '2. kwata', - '3. kwata', - '4. kwata', - ], +'Ọjọ́ Ajé', +'Ọjọ́ Ìsẹ́gun', +'Ọjọ́ Ìsẹ́gun-Ẹtì', +'Ọjọ́ Ìsẹ́gun-Ọ̀rú', +'Ọjọ́ Àìkú', +'Ọjọ́ Jímọ̀', +'Ọjọ́ Àbámẹ́ta', +], +'SHORTWEEKDAYS': [ +'Ajé', +'Ìsẹ́gun', +'Ìsẹ́gun-Ẹtì', +'Ìsẹ́gun-Ọ̀rú', +'Àìkú', +'Jímọ̀', +'Àbámẹ́ta', +], +'STANDALONESHORTWEEKDAYS': [ +'Ajé', +'Ìsẹ́gun', +'Ìsẹ́gun-Ẹtì', +'Ìsẹ́gun-Ọ̀rú', +'Àìkú', +'Jímọ̀', +'Àbámẹ́ta', +], +'NARROWWEEKDAYS': [ +'A', +'A', +'Ì', +'A', +'À', +'J', +'À', +], +'STANDALONENARROWWEEKDAYS': [ +'A', +'A', +'Ì', +'A', +'À', +'J', +'À', +], +'SHORTQUARTERS': [ +'K1', +'K2', +'K3', +'K4', +], +'QUARTERS': [ +'1. kwata', +'2. kwata', +'3. kwata', +'4. kwata', +], 'AMPMS': [ 'a.m.', 'p.m.', @@ -315,339 +316,339 @@ class YoMaterialLocalizations extends GlobalMaterialLocalizations { }); // #docregion Getters - @override - String get moreButtonTooltip => r'Kò sí ìròhùn tí ó múni'; +@override +String get moreButtonTooltip => r'Kò sí ìròhùn tí ó múni'; - @override - String get aboutListTileTitleRaw => r'Fun Àpótí àwọn $applicationname'; +@override +String get aboutListTileTitleRaw => r'Fun Àpótí àwọn $applicationname'; - @override - String get alertDialogLabel => r'Ìròhùn Àlàyé'; +@override +String get alertDialogLabel => r'Ìròhùn Àlàyé'; // #enddocregion Getters - @override - String get anteMeridiemAbbreviation => r'AM'; +@override +String get anteMeridiemAbbreviation => r'AM'; - @override - String get backButtonTooltip => r'Fíran'; +@override +String get backButtonTooltip => r'Fíran'; - @override - String get cancelButtonLabel => r'FAGILE'; +@override +String get cancelButtonLabel => r'FAGILE'; - @override - String get closeButtonLabel => r'KÚ'; +@override +String get closeButtonLabel => r'KÚ'; - @override - String get closeButtonTooltip => r'Kú'; +@override +String get closeButtonTooltip => r'Kú'; - @override - String get collapsedIconTapHint => r'Tá'; +@override +String get collapsedIconTapHint => r'Tá'; - @override - String get continueButtonLabel => r'TÓ WÁ'; +@override +String get continueButtonLabel => r'TÓ WÁ'; - @override - String get copyButtonLabel => r'DÚPLÍKÉTÍ'; +@override +String get copyButtonLabel => r'DÚPLÍKÉTÍ'; - @override - String get cutButtonLabel => r'TÒ'; +@override +String get cutButtonLabel => r'TÒ'; - @override - String get deleteButtonTooltip => r'Máa kú'; +@override +String get deleteButtonTooltip => r'Máa kú'; - @override - String get dialogLabel => r'Ìròhùn'; +@override +String get dialogLabel => r'Ìròhùn'; - @override - String get drawerLabel => r'Àgbèjọ àwọn àpọ̀tí'; +@override +String get drawerLabel => r'Àgbèjọ àwọn àpọ̀tí'; - @override - String get expandedIconTapHint => r'Tá'; +@override +String get expandedIconTapHint => r'Tá'; - @override - String get firstPageTooltip => r'Ojú ewe'; +@override +String get firstPageTooltip => r'Ojú ewe'; - @override - String get hideAccountsLabel => r'Fí èrò àpótí wáyé sílẹ̀'; +@override +String get hideAccountsLabel => r'Fí èrò àpótí wáyé sílẹ̀'; - @override - String get lastPageTooltip => r'Ojú ayé'; +@override +String get lastPageTooltip => r'Ojú ayé'; - @override - String get licensesPageTitle => r'Ìròhùn Ọdún'; +@override +String get licensesPageTitle => r'Ìròhùn Ọdún'; - @override - String get modalBarrierDismissLabel => r'Sọ'; +@override +String get modalBarrierDismissLabel => r'Sọ'; - @override - String get nextMonthTooltip => r'Oṣù kọja'; +@override +String get nextMonthTooltip => r'Oṣù kọja'; - @override - String get nextPageTooltip => r'Ojú ọjọ́ kẹta'; +@override +String get nextPageTooltip => r'Ojú ọjọ́ kẹta'; - @override - String get okButtonLabel => r'Ò daájú'; - @override +@override +String get okButtonLabel => r'Ò daájú'; +@override // A custom drawer tooltip message. - String get openAppDrawerTooltip => r'Aya ntọju Iwe Awọn Aka'; +String get openAppDrawerTooltip => r'Aya ntọju Iwe Awọn Aka'; // #docregion Raw - @override - String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow lati $rowCount'; +@override +String get pageRowsInfoTitleRaw => r'$firstRow–$lastRow lati $rowCount'; - @override - String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow lati kiakia $rowCount'; +@override +String get pageRowsInfoTitleApproximateRaw => r'$firstRow–$lastRow lati kiakia $rowCount'; // #enddocregion Raw - @override - String get pasteButtonLabel => r'TÌ'; +@override +String get pasteButtonLabel => r'TÌ'; - @override - String get popupMenuLabel => r'Meniu Pop-up'; +@override +String get popupMenuLabel => r'Meniu Pop-up'; - @override - String get menuBarMenuLabel => r'Meniu Akọkọ'; +@override +String get menuBarMenuLabel => r'Meniu Akọkọ'; - @override - String get postMeridiemAbbreviation => r'PM'; +@override +String get postMeridiemAbbreviation => r'PM'; - @override - String get previousMonthTooltip => r'Oṣu Kanakana'; +@override +String get previousMonthTooltip => r'Oṣu Kanakana'; - @override - String get previousPageTooltip => r'Ojú ewé akọkọ kan'; +@override +String get previousPageTooltip => r'Ojú ewé akọkọ kan'; - @override - String get refreshIndicatorSemanticLabel => r'Gbiyanju'; +@override +String get refreshIndicatorSemanticLabel => r'Gbiyanju'; - @override - String? get remainingTextFieldCharacterCountFew => null; +@override +String? get remainingTextFieldCharacterCountFew => null; - @override - String? get remainingTextFieldCharacterCountMany => null; +@override +String? get remainingTextFieldCharacterCountMany => null; - @override - String get remainingTextFieldCharacterCountOne => r'1 àmì báálẹ̀'; +@override +String get remainingTextFieldCharacterCountOne => r'1 àmì báálẹ̀'; - @override - String get remainingTextFieldCharacterCountOther => r'$remainingCount àmì báálẹ̀'; +@override +String get remainingTextFieldCharacterCountOther => r'$remainingCount àmì báálẹ̀'; - @override - String? get remainingTextFieldCharacterCountTwo => null; +@override +String? get remainingTextFieldCharacterCountTwo => null; - @override - String get remainingTextFieldCharacterCountZero => r'Kò sí ìwọlé létà láti ń ṣe'; +@override +String get remainingTextFieldCharacterCountZero => r'Kò sí ìwọlé létà láti ń ṣe'; - @override - String get reorderItemDown => r'Jù sí ilẹ'; +@override +String get reorderItemDown => r'Jù sí ilẹ'; - @override - String get reorderItemLeft => r'Jù sí àrà'; +@override +String get reorderItemLeft => r'Jù sí àrà'; - @override - String get reorderItemRight => r'Jù sí òtútù'; +@override +String get reorderItemRight => r'Jù sí òtútù'; - @override - String get reorderItemToEnd => r'Jù sí ìbẹ̀jì'; +@override +String get reorderItemToEnd => r'Jù sí ìbẹ̀jì'; - @override - String get reorderItemToStart => r'Jù sí àkọ́kọ́'; +@override +String get reorderItemToStart => r'Jù sí àkọ́kọ́'; - @override - String get reorderItemUp => r'Jù sí ọ̀rùn'; +@override +String get reorderItemUp => r'Jù sí ọ̀rùn'; - @override - String get rowsPerPageTitle => r'Ìlò Fún àwọn Ìtọ́kasíwájú:'; +@override +String get rowsPerPageTitle => r'Ìlò Fún àwọn Ìtọ́kasíwájú:'; - @override - ScriptCategory get scriptCategory => ScriptCategory.englishLike; +@override +ScriptCategory get scriptCategory => ScriptCategory.englishLike; - @override - String get searchFieldLabel => 'Ṣẹda'; +@override +String get searchFieldLabel => 'Ṣẹda'; - @override - String get selectAllButtonLabel => 'FADỌHỌN DỌFÚN GBÁJÚMỌ̀'; +@override +String get selectAllButtonLabel => 'FADỌHỌN DỌFÚN GBÁJÚMỌ̀'; - @override - String? get selectedRowCountTitleFew => null; +@override +String? get selectedRowCountTitleFew => null; - @override - String? get selectedRowCountTitleMany => null; +@override +String? get selectedRowCountTitleMany => null; - @override - String get selectedRowCountTitleOne => '1 káyé'; +@override +String get selectedRowCountTitleOne => '1 káyé'; - @override - String get selectedRowCountTitleOther => r'$selectedRowCount káyé'; +@override +String get selectedRowCountTitleOther => r'$selectedRowCount káyé'; - @override - String? get selectedRowCountTitleTwo => null; +@override +String? get selectedRowCountTitleTwo => null; - @override - String get selectedRowCountTitleZero => 'Kò sí káyé ti o wọlé'; +@override +String get selectedRowCountTitleZero => 'Kò sí káyé ti o wọlé'; - @override - String get showAccountsLabel => 'Fi iyipada mu kọ'; +@override +String get showAccountsLabel => 'Fi iyipada mu kọ'; - @override - String get showMenuTooltip => 'Fi Meniu mu kọ'; +@override +String get showMenuTooltip => 'Fi Meniu mu kọ'; - @override - String get signedInLabel => 'Ọ̀nà'; +@override +String get signedInLabel => 'Ọ̀nà'; +@override +String get tabLabelRaw => r'Àwọn tabin $tabIndex lati $tabCount'; + @override - String get tabLabelRaw => r'Àwọn tabin $tabIndex lati $tabCount'; +TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a; - @override - TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a; +@override +String get timePickerHourModeAnnouncement => 'Tuntun waqtu lọ'; - @override - String get timePickerHourModeAnnouncement => 'Tuntun waqtu lọ'; +@override +String get timePickerMinuteModeAnnouncement => 'Tuntun daɗi minti'; - @override - String get timePickerMinuteModeAnnouncement => 'Tuntun daɗi minti'; +@override +String get viewLicensesButtonLabel => 'WO NIKI'; - @override - String get viewLicensesButtonLabel => 'WO NIKI'; +@override +List get narrowWeekdays => const ['L', 'L', 'A', 'O', 'Ọ', 'Ẹ', 'Ẹ']; - @override - List get narrowWeekdays => const ['L', 'L', 'A', 'O', 'Ọ', 'Ẹ', 'Ẹ']; +@override +int get firstDayOfWeekIndex => 0; - @override - int get firstDayOfWeekIndex => 0; +static const LocalizationsDelegate delegate = +_YoMaterialLocalizationsDelegate(); - static const LocalizationsDelegate delegate = - _YoMaterialLocalizationsDelegate(); +@override +String get calendarModeButtonLabel => 'Tọ́rọ̀ kálẹ̀ndà'; - @override - String get calendarModeButtonLabel => 'Tọ́rọ̀ kálẹ̀ndà'; +@override +String get dateHelpText => 'mm/dd/yyyy'; - @override - String get dateHelpText => 'mm/dd/yyyy'; +@override +String get dateInputLabel => 'Firanṣẹ̀ Ọjọ́'; - @override - String get dateInputLabel => 'Firanṣẹ̀ Ọjọ́'; +@override +String get dateOutOfRangeLabel => 'Nínú iwọ̀ lọ́wọ́'; - @override - String get dateOutOfRangeLabel => 'Nínú iwọ̀ lọ́wọ́'; +@override +String get datePickerHelpText => 'WÁSÍ'; - @override - String get datePickerHelpText => 'WÁSÍ'; +@override +String get dateRangeEndDateSemanticLabelRaw => r'Ọjọ́ tuntun to ṣà'; - @override - String get dateRangeEndDateSemanticLabelRaw => r'Ọjọ́ tuntun to ṣà'; - - @override - String get dateRangeEndLabel => 'Ọjọ́ tuntun to ṣà'; +@override +String get dateRangeEndLabel => 'Ọjọ́ tuntun to ṣà'; - @override - String get dateRangePickerHelpText => 'WÁSÍ ÌGBÀ'; +@override +String get dateRangePickerHelpText => 'WÁSÍ ÌGBÀ'; - @override - String get dateRangeStartDateSemanticLabelRaw => 'Ọjọ́ tuntun ti dá'; +@override +String get dateRangeStartDateSemanticLabelRaw => 'Ọjọ́ tuntun ti dá'; - @override - String get dateRangeStartLabel => 'Ọjọ́ tuntun ti dá'; +@override +String get dateRangeStartLabel => 'Ọjọ́ tuntun ti dá'; - @override - String get dateSeparator => '/'; +@override +String get dateSeparator => '/'; - @override - String get dialModeButtonLabel => 'Tọ́rọ̀ wakati'; +@override +String get dialModeButtonLabel => 'Tọ́rọ̀ wakati'; - @override - String get inputDateModeButtonLabel => 'Tọ́rọ̀ firanṣẹ̀ ọjọ́'; +@override +String get inputDateModeButtonLabel => 'Tọ́rọ̀ firanṣẹ̀ ọjọ́'; - @override - String get inputTimeModeButtonLabel => 'Tọ́rọ̀ wakati bayi lọ́wọ́'; +@override +String get inputTimeModeButtonLabel => 'Tọ́rọ̀ wakati bayi lọ́wọ́'; - @override - String get invalidDateFormatLabel => 'Akọ́kọ́tọ́ tó jẹ́kúnrin'; +@override +String get invalidDateFormatLabel => 'Akọ́kọ́tọ́ tó jẹ́kúnrin'; - @override - String get invalidDateRangeLabel => 'Àmì jẹ́ káàkiri lẹ́yìn ilé'; +@override +String get invalidDateRangeLabel => 'Àmì jẹ́ káàkiri lẹ́yìn ilé'; - @override - String get invalidTimeLabel => 'Akọ́kọ́tọ́ àkójọ ìwádìí'; +@override +String get invalidTimeLabel => 'Akọ́kọ́tọ́ àkójọ ìwádìí'; - @override - String get licensesPackageDetailTextOther => r'$licenseCount àwọn níkí'; +@override +String get licensesPackageDetailTextOther => r'$licenseCount àwọn níkí'; - @override - String get saveButtonLabel => 'TÙN DÁRA'; +@override +String get saveButtonLabel => 'TÙN DÁRA'; - @override - String get selectYearSemanticsLabel => 'Fọ́ọ̀ shẹ́kàrà'; +@override +String get selectYearSemanticsLabel => 'Fọ́ọ̀ shẹ́kàrà'; - @override - String get timePickerDialHelpText => 'WÁSÍ WÁKÀTÌ'; +@override +String get timePickerDialHelpText => 'WÁSÍ WÁKÀTÌ'; - @override - String get timePickerHourLabel => 'Wákàtì àṣà'; +@override +String get timePickerHourLabel => 'Wákàtì àṣà'; - @override - String get timePickerInputHelpText => 'Shìgárà wákàtì'; +@override +String get timePickerInputHelpText => 'Shìgárà wákàtì'; - @override - String get timePickerMinuteLabel => 'Mìntì'; +@override +String get timePickerMinuteLabel => 'Mìntì'; - @override - String get unspecifiedDate => 'Ọjọ̀kúnrin'; +@override +String get unspecifiedDate => 'Ọjọ̀kúnrin'; - @override - String get unspecifiedDateRange => 'Ọjọ̀kúnrin àdáyọ̀'; +@override +String get unspecifiedDateRange => 'Ọjọ̀kúnrin àdáyọ̀'; - @override - String get keyboardKeyAlt => 'Alt'; +@override +String get keyboardKeyAlt => 'Alt'; - @override - String get keyboardKeyAltGraph => 'AltGraph'; +@override +String get keyboardKeyAltGraph => 'AltGraph'; - @override - String get keyboardKeyBackspace => 'Báckspàcè'; +@override +String get keyboardKeyBackspace => 'Báckspàcè'; - @override - String get keyboardKeyCapsLock => 'Caps Lock'; +@override +String get keyboardKeyCapsLock => 'Caps Lock'; - @override - String get keyboardKeyChannelDown => 'Báyàkàmmàlàsàké'; +@override +String get keyboardKeyChannelDown => 'Báyàkàmmàlàsàké'; - @override - String get keyboardKeyChannelUp => 'Yíkàmmàlàsàké'; +@override +String get keyboardKeyChannelUp => 'Yíkàmmàlàsàké'; - @override - String get keyboardKeyControl => 'Kọ́ntírọ̀l'; +@override +String get keyboardKeyControl => 'Kọ́ntírọ̀l'; - @override - String get keyboardKeyDelete => 'Shápè'; +@override +String get keyboardKeyDelete => 'Shápè'; - @override - String get keyboardKeyEject => 'Èjẹ̀tì'; +@override +String get keyboardKeyEject => 'Èjẹ̀tì'; - @override - String get keyboardKeyEnd => 'Tàbí'; +@override +String get keyboardKeyEnd => 'Tàbí'; - @override - String get keyboardKeyEscape => 'Tòkè'; +@override +String get keyboardKeyEscape => 'Tòkè'; @override - String get keyboardKeyFn => 'Fn'; +String get keyboardKeyFn => 'Fn'; - @override - String get keyboardKeyHome => 'Ile'; +@override +String get keyboardKeyHome => 'Ile'; - @override - String get keyboardKeyInsert => 'Fi sori'; +@override +String get keyboardKeyInsert => 'Fi sori'; - @override - String get keyboardKeyMeta => 'Meta'; +@override +String get keyboardKeyMeta => 'Meta'; - @override - String get keyboardKeyMetaMacOs => 'Amfani pẹlu Command'; +@override +String get keyboardKeyMetaMacOs => 'Amfani pẹlu Command'; - @override - String get keyboardKeyMetaWindows => 'Windows'; +@override +String get keyboardKeyMetaWindows => 'Windows'; @override String get keyboardKeyNumLock => 'Num Lock'; @@ -750,50 +751,6 @@ class YoMaterialLocalizations extends GlobalMaterialLocalizations { @override String get scrimOnTapHintRaw => "Scrip on Tap"; - - @override - // TODO: implement collapsedHint - String get collapsedHint => "collapsedHint"; - - @override - // TODO: implement expandedHint - String get expandedHint => "expandedHint"; - - @override - // TODO: implement expansionTileCollapsedHint - String get expansionTileCollapsedHint => "expansionTileCollapsedHint"; - - @override - // TODO: implement expansionTileCollapsedTapHint - String get expansionTileCollapsedTapHint => "expansionTileCollapsedTapHint"; - - @override - // TODO: implement expansionTileExpandedHint - String get expansionTileExpandedHint => "expansionTileExpandedHint"; - - @override - // TODO: implement expansionTileExpandedTapHint - String get expansionTileExpandedTapHint => "expansionTileExpandedTapHint"; - - @override - // TODO: implement scanTextButtonLabel - String get scanTextButtonLabel => "scanTextButtonLabel"; - - @override - // TODO: implement lookUpButtonLabel - String get lookUpButtonLabel => "lookUpButtonLabel"; - - @override - // TODO: implement menuDismissLabel - String get menuDismissLabel => "menuDismissLabel"; - - @override - // TODO: implement searchWebButtonLabel - String get searchWebButtonLabel => "searchWebButtonLabel"; - - @override - // TODO: implement shareButtonLabel - String get shareButtonLabel => "shareButtonLabel"; } /// Cupertino Support @@ -864,158 +821,138 @@ class YoCupertinoLocalizations extends GlobalCupertinoLocalizations { required super.singleDigitSecondFormat, }); - @override - String get alertDialogLabel => 'Àdàkárò'; +@override +String get alertDialogLabel => 'Àdàkárò'; - @override - String get anteMeridiemAbbreviation => 'AM'; +@override +String get anteMeridiemAbbreviation => 'AM'; - @override - String get copyButtonLabel => 'Kòpy'; +@override +String get copyButtonLabel => 'Kòpy'; - @override - String get cutButtonLabel => 'Kọ́t'; +@override +String get cutButtonLabel => 'Kọ́t'; - @override - String get datePickerDateOrderString => 'mdy'; +@override +String get datePickerDateOrderString => 'mdy'; - @override - String get datePickerDateTimeOrderString => 'date_time_dayPeriod'; +@override +String get datePickerDateTimeOrderString => 'date_time_dayPeriod'; - @override - String? get datePickerHourSemanticsLabelFew => null; +@override +String? get datePickerHourSemanticsLabelFew => null; - @override - String? get datePickerHourSemanticsLabelMany => null; +@override +String? get datePickerHourSemanticsLabelMany => null; - @override - String? get datePickerHourSemanticsLabelOne => r"$hour o'clock"; +@override +String? get datePickerHourSemanticsLabelOne => r"$hour o'clock"; - @override - String get datePickerHourSemanticsLabelOther => r"$hour o'clock"; +@override +String get datePickerHourSemanticsLabelOther => r"$hour o'clock"; - @override - String? get datePickerHourSemanticsLabelTwo => null; +@override +String? get datePickerHourSemanticsLabelTwo => null; - @override - String? get datePickerHourSemanticsLabelZero => null; +@override +String? get datePickerHourSemanticsLabelZero => null; - @override - String? get datePickerMinuteSemanticsLabelFew => null; +@override +String? get datePickerMinuteSemanticsLabelFew => null; - @override - String? get datePickerMinuteSemanticsLabelMany => null; +@override +String? get datePickerMinuteSemanticsLabelMany => null; - @override - String? get datePickerMinuteSemanticsLabelOne => '1 wakati'; +@override +String? get datePickerMinuteSemanticsLabelOne => '1 wakati'; - @override - String get datePickerMinuteSemanticsLabelOther => r'$minute wakati'; +@override +String get datePickerMinuteSemanticsLabelOther => r'$minute wakati'; - @override - String? get datePickerMinuteSemanticsLabelTwo => null; +@override +String? get datePickerMinuteSemanticsLabelTwo => null; - @override - String? get datePickerMinuteSemanticsLabelZero => null; +@override +String? get datePickerMinuteSemanticsLabelZero => null; - @override - String get modalBarrierDismissLabel => 'Búta'; +@override +String get modalBarrierDismissLabel => 'Búta'; - @override - String get pasteButtonLabel => 'Tẹ́ẹ́'; +@override +String get pasteButtonLabel => 'Tẹ́ẹ́'; - @override - String get postMeridiemAbbreviation => 'PM'; +@override +String get postMeridiemAbbreviation => 'PM'; - @override - String get searchTextFieldPlaceholderLabel => 'Wúró àtúntà'; +@override +String get searchTextFieldPlaceholderLabel => 'Wúró àtúntà'; - @override - String get selectAllButtonLabel => 'Fírànsé gbógbo'; +@override +String get selectAllButtonLabel => 'Fírànsé gbógbo'; - @override - String get tabSemanticsLabelRaw => r'Tab $tabIndex nínú $tabCount'; +@override +String get tabSemanticsLabelRaw => r'Tab $tabIndex nínú $tabCount'; - @override - String? get timerPickerHourLabelFew => null; +@override +String? get timerPickerHourLabelFew => null; - @override - String? get timerPickerHourLabelMany => null; +@override +String? get timerPickerHourLabelMany => null; - @override - String? get timerPickerHourLabelOne => 'òǹdì'; +@override +String? get timerPickerHourLabelOne => 'òǹdì'; - @override - String get timerPickerHourLabelOther => 'òǹdì'; +@override +String get timerPickerHourLabelOther => 'òǹdì'; - @override - String? get timerPickerHourLabelTwo => null; +@override +String? get timerPickerHourLabelTwo => null; - @override - String? get timerPickerHourLabelZero => null; +@override +String? get timerPickerHourLabelZero => null; - @override - String? get timerPickerMinuteLabelFew => null; +@override +String? get timerPickerMinuteLabelFew => null; - @override - String? get timerPickerMinuteLabelMany => null; +@override +String? get timerPickerMinuteLabelMany => null; - @override - String? get timerPickerMinuteLabelOne => 'wakati.'; +@override +String? get timerPickerMinuteLabelOne => 'wakati.'; - @override - String get timerPickerMinuteLabelOther => 'wakati.'; +@override +String get timerPickerMinuteLabelOther => 'wakati.'; - @override - String? get timerPickerMinuteLabelTwo => null; +@override +String? get timerPickerMinuteLabelTwo => null; - @override - String? get timerPickerMinuteLabelZero => null; +@override +String? get timerPickerMinuteLabelZero => null; - @override - String? get timerPickerSecondLabelFew => null; +@override +String? get timerPickerSecondLabelFew => null; - @override - String? get timerPickerSecondLabelMany => null; +@override +String? get timerPickerSecondLabelMany => null; - @override - String? get timerPickerSecondLabelOne => 'dákìkà.'; +@override +String? get timerPickerSecondLabelOne => 'dákìkà.'; - @override - String get timerPickerSecondLabelOther => 'dákìkà.'; +@override +String get timerPickerSecondLabelOther => 'dákìkà.'; - @override - String? get timerPickerSecondLabelTwo => null; +@override +String? get timerPickerSecondLabelTwo => null; - @override - String? get timerPickerSecondLabelZero => null; +@override +String? get timerPickerSecondLabelZero => null; - @override - String get todayLabel => 'Oyọ'; +@override +String get todayLabel => 'Oyọ'; static const LocalizationsDelegate delegate = _YoCupertinoLocalizationsDelegate(); @override String get noSpellCheckReplacementsLabel => ""; - - @override - // TODO: implement clearButtonLabel - String get clearButtonLabel => "clearButtonLabel"; - - @override - // TODO: implement lookUpButtonLabel - String get lookUpButtonLabel => "lookUpButtonLabel"; - - @override - // TODO: implement menuDismissLabel - String get menuDismissLabel => "menuDismissLabel"; - - @override - // TODO: implement searchWebButtonLabel - String get searchWebButtonLabel => "searchWebButtonLabel"; - - @override - // TODO: implement shareButtonLabel - String get shareButtonLabel => "shareButtonLabel"; } diff --git a/lib/src/screens/settings/security_backup_page.dart b/lib/src/screens/settings/security_backup_page.dart index 1f0f58ad4..e559e9b15 100644 --- a/lib/src/screens/settings/security_backup_page.dart +++ b/lib/src/screens/settings/security_backup_page.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:cake_wallet/core/auth_service.dart'; import 'package:cake_wallet/entities/pin_code_required_duration.dart'; import 'package:cake_wallet/routes.dart'; @@ -60,7 +58,7 @@ class SecurityBackupPage extends BasePage { .shouldRequireTOTP2FAForAllSecurityAndBackupSettings, ), ), - if (DeviceInfo.instance.isMobile || Platform.isMacOS || Platform.isLinux) + if (DeviceInfo.instance.isMobile) Observer(builder: (_) { return SettingsSwitcherCell( title: S.current.settings_allow_biometrical_authentication, diff --git a/lib/src/screens/settings/tor_page.dart b/lib/src/screens/settings/tor_page.dart index 2f544be35..ae1ef1677 100644 --- a/lib/src/screens/settings/tor_page.dart +++ b/lib/src/screens/settings/tor_page.dart @@ -146,7 +146,7 @@ class ConnectScreen extends StatelessWidget { ElevatedButton( onPressed: connect, style: ElevatedButton.styleFrom( - // primary: Colors.blue, + primary: Colors.blue, padding: EdgeInsets.symmetric(horizontal: 40, vertical: 15), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(30), @@ -211,7 +211,7 @@ class DisconnectScreen extends StatelessWidget { ElevatedButton( onPressed: disconnect, style: ElevatedButton.styleFrom( - // primary: Colors.red, + primary: Colors.red, padding: EdgeInsets.symmetric(horizontal: 40, vertical: 15), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(30), diff --git a/lib/src/widgets/validable_annotated_editable_text.dart b/lib/src/widgets/validable_annotated_editable_text.dart index 7ea928d8a..6c3fc4f16 100644 --- a/lib/src/widgets/validable_annotated_editable_text.dart +++ b/lib/src/widgets/validable_annotated_editable_text.dart @@ -1,14 +1,8 @@ +import 'package:cake_wallet/core/seed_validator.dart'; +import 'package:cw_core/wallet_type.dart'; import 'package:flutter/material.dart'; - -extension Compare on Comparable { - bool operator <=(T other) => compareTo(other) <= 0; - bool operator >=(T other) => compareTo(other) >= 0; - bool operator <(T other) => compareTo(other) < 0; - bool operator >(T other) => compareTo(other) > 0; -} - -class Annotation implements Comparable { +class Annotation extends Comparable { Annotation({required this.range, required this.style}); final TextRange range; @@ -18,7 +12,7 @@ class Annotation implements Comparable { int compareTo(Annotation other) => range.start.compareTo(other.range.start); } -class TextAnnotation implements Comparable { +class TextAnnotation extends Comparable { TextAnnotation({required this.text, required this.style}); final TextStyle style; diff --git a/lib/view_model/auth_view_model.dart b/lib/view_model/auth_view_model.dart index 0e6590845..e50f4db0c 100644 --- a/lib/view_model/auth_view_model.dart +++ b/lib/view_model/auth_view_model.dart @@ -1,6 +1,5 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:flutter_local_authentication/flutter_local_authentication.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/view_model/auth_state.dart'; @@ -106,14 +105,16 @@ abstract class AuthViewModelBase with Store { @action Future biometricAuth() async { - final _flutterLocalAuthenticationPlugin = FlutterLocalAuthentication(); - try { - final authenticated = await _flutterLocalAuthenticationPlugin.authenticate(); - if (!authenticated) { - throw Exception('Biometric authentication failed'); + final canBiometricAuth = await _biometricAuth.canCheckBiometrics(); + + if (canBiometricAuth) { + final isAuthenticated = await _biometricAuth.isAuthenticated(); + + if (isAuthenticated) { + state = ExecutedSuccessfullyState(); + } } - state = ExecutedSuccessfullyState(); } catch (e) { state = FailureState(e.toString()); } diff --git a/pubspec_base.yaml b/pubspec_base.yaml index e1022864c..3ec3e7978 100644 --- a/pubspec_base.yaml +++ b/pubspec_base.yaml @@ -33,8 +33,8 @@ dependencies: dio: ^4.0.6 hive: ^2.2.3 hive_flutter: ^1.1.0 + local_auth: ^2.1.0 local_auth_android: 1.0.21 - flutter_local_authentication: ^1.2.0 package_info: ^2.0.0 #package_info_plus: ^1.4.2 devicelocale: diff --git a/pubspec_description.yaml b/pubspec_description.yaml index b51fe96d6..ebb6bf001 100644 --- a/pubspec_description.yaml +++ b/pubspec_description.yaml @@ -4,4 +4,4 @@ version: 0.0.0 publish_to: none environment: - sdk: ">=3.1.0 <4.0.0" \ No newline at end of file + sdk: ">=2.17.5 <3.0.0" \ No newline at end of file