From e6b4b08c24c1c2fb6987dcca233a3fee67c50d25 Mon Sep 17 00:00:00 2001 From: Matthew Fosse <matt@fosse.co> Date: Thu, 18 Apr 2024 10:00:24 -0700 Subject: [PATCH 1/3] version bump to 3.13.9, auth working on mac (#1367) * version bump to 3.13.9, auth working on mac * bump flutter version in workflow file * workflow fix * test fix * downgrade flutter version * test fix * test fix * update gradle version * fixes for updated dart version, localization file updates * remove accidental inclusion * missed some unimplemented throws --- .github/workflows/pr_test_build.yml | 2 +- android/build.gradle | 2 +- cw_bitcoin/pubspec.yaml | 5 +- cw_bitcoin_cash/pubspec.yaml | 5 +- cw_core/pubspec.yaml | 5 +- cw_ethereum/pubspec.yaml | 6 +- cw_evm/pubspec.yaml | 5 +- cw_haven/pubspec.yaml | 5 +- cw_monero/pubspec.yaml | 5 +- cw_nano/pubspec.yaml | 5 +- cw_polygon/pubspec.yaml | 5 +- cw_solana/pubspec.yaml | 5 +- lib/entities/biometric_auth.dart | 26 +- lib/locales/hausa_intl.dart | 64 ++ lib/locales/yoruba_intl.dart | 937 ++++++++++-------- .../settings/security_backup_page.dart | 4 +- lib/src/screens/settings/tor_page.dart | 4 +- .../validable_annotated_editable_text.dart | 14 +- lib/view_model/auth_view_model.dart | 15 +- pubspec_base.yaml | 2 +- pubspec_description.yaml | 2 +- 21 files changed, 642 insertions(+), 481 deletions(-) diff --git a/.github/workflows/pr_test_build.yml b/.github/workflows/pr_test_build.yml index dc231df42..bfa378342 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.10.x" + flutter-version: "3.13.9" channel: stable - name: Install package dependencies diff --git a/android/build.gradle b/android/build.gradle index 8286d9cb9..e182e39af 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '1.8.10' repositories { google() jcenter() diff --git a/cw_bitcoin/pubspec.yaml b/cw_bitcoin/pubspec.yaml index 632a3140a..1ccdb70c9 100644 --- a/cw_bitcoin/pubspec.yaml +++ b/cw_bitcoin/pubspec.yaml @@ -39,11 +39,14 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.11 + build_runner: ^2.4.7 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 37827f1ba..ceef539c3 100644 --- a/cw_bitcoin_cash/pubspec.yaml +++ b/cw_bitcoin_cash/pubspec.yaml @@ -39,10 +39,13 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.11 + build_runner: ^2.4.7 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 04a840d4e..51d671dc7 100644 --- a/cw_core/pubspec.yaml +++ b/cw_core/pubspec.yaml @@ -28,11 +28,14 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.11 + build_runner: ^2.4.7 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 649ec574b..cbe6644a4 100644 --- a/cw_ethereum/pubspec.yaml +++ b/cw_ethereum/pubspec.yaml @@ -22,7 +22,11 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.11 + build_runner: ^2.4.7 + +dependency_overrides: + watcher: ^1.1.0 + flutter: # assets: # - images/a_dot_burr.jpeg diff --git a/cw_evm/pubspec.yaml b/cw_evm/pubspec.yaml index c202cc72a..eaafb8415 100644 --- a/cw_evm/pubspec.yaml +++ b/cw_evm/pubspec.yaml @@ -27,11 +27,14 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.11 + build_runner: ^2.4.7 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 c215ab779..d868c986d 100644 --- a/cw_haven/pubspec.yaml +++ b/cw_haven/pubspec.yaml @@ -24,11 +24,14 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.11 + build_runner: ^2.4.7 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 a6fe7f967..c49a541ab 100644 --- a/cw_monero/pubspec.yaml +++ b/cw_monero/pubspec.yaml @@ -26,11 +26,14 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.11 + build_runner: ^2.4.7 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 a4b8732fd..768c1bb4e 100644 --- a/cw_nano/pubspec.yaml +++ b/cw_nano/pubspec.yaml @@ -32,10 +32,13 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.11 + build_runner: ^2.4.7 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 505838d7c..61a474002 100644 --- a/cw_polygon/pubspec.yaml +++ b/cw_polygon/pubspec.yaml @@ -28,7 +28,10 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 - build_runner: ^2.1.11 + build_runner: ^2.4.7 + +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_solana/pubspec.yaml b/cw_solana/pubspec.yaml index 7e24983bf..6b59282b4 100644 --- a/cw_solana/pubspec.yaml +++ b/cw_solana/pubspec.yaml @@ -26,10 +26,13 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 - build_runner: ^2.1.11 + build_runner: ^2.4.7 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 febbfa469..463a22775 100644 --- a/lib/entities/biometric_auth.dart +++ b/lib/entities/biometric_auth.dart @@ -1,32 +1,28 @@ -import 'package:local_auth/local_auth.dart'; import 'package:flutter/services.dart'; -import 'package:cake_wallet/generated/i18n.dart'; +import 'package:flutter_local_authentication/flutter_local_authentication.dart'; class BiometricAuth { - final _localAuth = LocalAuthentication(); + final _flutterLocalAuthenticationPlugin = FlutterLocalAuthentication(); Future<bool> isAuthenticated() async { try { - return await _localAuth.authenticate( - localizedReason: S.current.biometric_auth_reason, - options: AuthenticationOptions( - biometricOnly: true, - useErrorDialogs: true, - stickyAuth: false)); - } on PlatformException catch (e) { + final authenticated = await _flutterLocalAuthenticationPlugin.authenticate(); + return authenticated; + } catch (e) { print(e); } - return false; } Future<bool> canCheckBiometrics() async { + bool canAuthenticate; try { - return await _localAuth.canCheckBiometrics; - } on PlatformException catch (e) { - print(e); + canAuthenticate = await _flutterLocalAuthenticationPlugin.canAuthenticate(); + } catch (error) { + print("Exception checking support. $error"); + canAuthenticate = false; } - return false; + return canAuthenticate; } } diff --git a/lib/locales/hausa_intl.dart b/lib/locales/hausa_intl.dart index 749d39a4d..6cf757b60 100644 --- a/lib/locales/hausa_intl.dart +++ b/lib/locales/hausa_intl.dart @@ -751,6 +751,50 @@ 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 @@ -955,4 +999,24 @@ 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 889c21cb7..3c720b80e 100644 --- a/lib/locales/yoruba_intl.dart +++ b/lib/locales/yoruba_intl.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:flutter/cupertino.dart'; @@ -164,62 +163,62 @@ const yoDateSymbols = { 'ọjọ́ Àbámẹ́ta', ], 'STANDALONEWEEKDAYS': <dynamic>[ -'Ọjọ́ Ajé', -'Ọjọ́ Ìsẹ́gun', -'Ọjọ́ Ìsẹ́gun-Ẹtì', -'Ọjọ́ Ìsẹ́gun-Ọ̀rú', -'Ọjọ́ Àìkú', -'Ọjọ́ Jímọ̀', -'Ọjọ́ Àbámẹ́ta', -], -'SHORTWEEKDAYS': <dynamic>[ -'Ajé', -'Ìsẹ́gun', -'Ìsẹ́gun-Ẹtì', -'Ìsẹ́gun-Ọ̀rú', -'Àìkú', -'Jímọ̀', -'Àbámẹ́ta', -], -'STANDALONESHORTWEEKDAYS': <dynamic>[ -'Ajé', -'Ìsẹ́gun', -'Ìsẹ́gun-Ẹtì', -'Ìsẹ́gun-Ọ̀rú', -'Àìkú', -'Jímọ̀', -'Àbámẹ́ta', -], -'NARROWWEEKDAYS': <dynamic>[ -'A', -'A', -'Ì', -'A', -'À', -'J', -'À', -], -'STANDALONENARROWWEEKDAYS': <dynamic>[ -'A', -'A', -'Ì', -'A', -'À', -'J', -'À', -], -'SHORTQUARTERS': <dynamic>[ -'K1', -'K2', -'K3', -'K4', -], -'QUARTERS': <dynamic>[ -'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': <dynamic>[ + 'Ajé', + 'Ìsẹ́gun', + 'Ìsẹ́gun-Ẹtì', + 'Ìsẹ́gun-Ọ̀rú', + 'Àìkú', + 'Jímọ̀', + 'Àbámẹ́ta', + ], + 'STANDALONESHORTWEEKDAYS': <dynamic>[ + 'Ajé', + 'Ìsẹ́gun', + 'Ìsẹ́gun-Ẹtì', + 'Ìsẹ́gun-Ọ̀rú', + 'Àìkú', + 'Jímọ̀', + 'Àbámẹ́ta', + ], + 'NARROWWEEKDAYS': <dynamic>[ + 'A', + 'A', + 'Ì', + 'A', + 'À', + 'J', + 'À', + ], + 'STANDALONENARROWWEEKDAYS': <dynamic>[ + 'A', + 'A', + 'Ì', + 'A', + 'À', + 'J', + 'À', + ], + 'SHORTQUARTERS': <dynamic>[ + 'K1', + 'K2', + 'K3', + 'K4', + ], + 'QUARTERS': <dynamic>[ + '1. kwata', + '2. kwata', + '3. kwata', + '4. kwata', + ], 'AMPMS': <dynamic>[ 'a.m.', 'p.m.', @@ -316,339 +315,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 popupMenuLabel => r'Meniu Pop-up'; - -@override -String get menuBarMenuLabel => r'Meniu Akọkọ'; - -@override -String get postMeridiemAbbreviation => r'PM'; - -@override -String get previousMonthTooltip => r'Oṣu Kanakana'; - -@override -String get previousPageTooltip => r'Ojú ewé akọkọ kan'; - -@override -String get refreshIndicatorSemanticLabel => r'Gbiyanju'; - -@override -String? get remainingTextFieldCharacterCountFew => null; - -@override -String? get remainingTextFieldCharacterCountMany => null; - -@override -String get remainingTextFieldCharacterCountOne => r'1 àmì báálẹ̀'; - -@override -String get remainingTextFieldCharacterCountOther => r'$remainingCount àmì báálẹ̀'; - -@override -String? get remainingTextFieldCharacterCountTwo => null; - -@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 reorderItemLeft => r'Jù sí àrà'; - -@override -String get reorderItemRight => r'Jù sí òtútù'; - -@override -String get reorderItemToEnd => r'Jù sí ìbẹ̀jì'; - -@override -String get reorderItemToStart => r'Jù sí àkọ́kọ́'; - -@override -String get reorderItemUp => r'Jù sí ọ̀rùn'; - -@override -String get rowsPerPageTitle => r'Ìlò Fún àwọn Ìtọ́kasíwájú:'; - -@override -ScriptCategory get scriptCategory => ScriptCategory.englishLike; - -@override -String get searchFieldLabel => 'Ṣẹda'; - -@override -String get selectAllButtonLabel => 'FADỌHỌN DỌFÚN GBÁJÚMỌ̀'; - -@override -String? get selectedRowCountTitleFew => null; - -@override -String? get selectedRowCountTitleMany => null; - -@override -String get selectedRowCountTitleOne => '1 káyé'; - -@override -String get selectedRowCountTitleOther => r'$selectedRowCount káyé'; - -@override -String? get selectedRowCountTitleTwo => null; - -@override -String get selectedRowCountTitleZero => 'Kò sí káyé ti o wọlé'; - -@override -String get showAccountsLabel => 'Fi iyipada mu kọ'; - -@override -String get showMenuTooltip => 'Fi Meniu mu kọ'; - -@override -String get signedInLabel => 'Ọ̀nà'; - -@override -String get tabLabelRaw => r'Àwọn tabin $tabIndex lati $tabCount'; - @override -TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a; - -@override -String get timePickerHourModeAnnouncement => 'Tuntun waqtu lọ'; - -@override -String get timePickerMinuteModeAnnouncement => 'Tuntun daɗi minti'; - -@override -String get viewLicensesButtonLabel => 'WO NIKI'; - -@override -List<String> get narrowWeekdays => const <String>['L', 'L', 'A', 'O', 'Ọ', 'Ẹ', 'Ẹ']; - -@override -int get firstDayOfWeekIndex => 0; - -static const LocalizationsDelegate<MaterialLocalizations> delegate = -_YoMaterialLocalizationsDelegate(); - -@override -String get calendarModeButtonLabel => 'Tọ́rọ̀ kálẹ̀ndà'; - -@override -String get dateHelpText => 'mm/dd/yyyy'; - -@override -String get dateInputLabel => 'Firanṣẹ̀ Ọjọ́'; - -@override -String get dateOutOfRangeLabel => 'Nínú iwọ̀ lọ́wọ́'; - -@override -String get datePickerHelpText => 'WÁSÍ'; - -@override -String get dateRangeEndDateSemanticLabelRaw => r'Ọjọ́ tuntun to ṣà'; - -@override -String get dateRangeEndLabel => 'Ọjọ́ tuntun to ṣà'; - -@override -String get dateRangePickerHelpText => 'WÁSÍ ÌGBÀ'; - -@override -String get dateRangeStartDateSemanticLabelRaw => 'Ọjọ́ tuntun ti dá'; - -@override -String get dateRangeStartLabel => 'Ọjọ́ tuntun ti dá'; - -@override -String get dateSeparator => '/'; - -@override -String get dialModeButtonLabel => 'Tọ́rọ̀ wakati'; - -@override -String get inputDateModeButtonLabel => 'Tọ́rọ̀ firanṣẹ̀ ọjọ́'; - -@override -String get inputTimeModeButtonLabel => 'Tọ́rọ̀ wakati bayi lọ́wọ́'; - -@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 invalidTimeLabel => 'Akọ́kọ́tọ́ àkójọ ìwádìí'; - -@override -String get licensesPackageDetailTextOther => r'$licenseCount àwọn níkí'; - -@override -String get saveButtonLabel => 'TÙN DÁRA'; - -@override -String get selectYearSemanticsLabel => 'Fọ́ọ̀ shẹ́kàrà'; - -@override -String get timePickerDialHelpText => 'WÁSÍ WÁKÀTÌ'; - -@override -String get timePickerHourLabel => 'Wákàtì àṣà'; - -@override -String get timePickerInputHelpText => 'Shìgárà wákàtì'; - -@override -String get timePickerMinuteLabel => 'Mìntì'; - -@override -String get unspecifiedDate => 'Ọjọ̀kúnrin'; - -@override -String get unspecifiedDateRange => 'Ọjọ̀kúnrin àdáyọ̀'; - -@override -String get keyboardKeyAlt => 'Alt'; - -@override -String get keyboardKeyAltGraph => 'AltGraph'; - -@override -String get keyboardKeyBackspace => 'Báckspàcè'; - -@override -String get keyboardKeyCapsLock => 'Caps Lock'; - -@override -String get keyboardKeyChannelDown => 'Bá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 keyboardKeyDelete => 'Shápè'; - -@override -String get keyboardKeyEject => 'Èjẹ̀tì'; - -@override -String get keyboardKeyEnd => 'Tàbí'; - -@override -String get keyboardKeyEscape => 'Tòkè'; + String get pasteButtonLabel => r'TÌ'; @override -String get keyboardKeyFn => 'Fn'; + String get popupMenuLabel => r'Meniu Pop-up'; -@override -String get keyboardKeyHome => 'Ile'; + @override + String get menuBarMenuLabel => r'Meniu Akọkọ'; -@override -String get keyboardKeyInsert => 'Fi sori'; + @override + String get postMeridiemAbbreviation => r'PM'; -@override -String get keyboardKeyMeta => 'Meta'; + @override + String get previousMonthTooltip => r'Oṣu Kanakana'; -@override -String get keyboardKeyMetaMacOs => 'Amfani pẹlu Command'; + @override + String get previousPageTooltip => r'Ojú ewé akọkọ kan'; -@override -String get keyboardKeyMetaWindows => 'Windows'; + @override + String get refreshIndicatorSemanticLabel => r'Gbiyanju'; + + @override + String? get remainingTextFieldCharacterCountFew => null; + + @override + String? get remainingTextFieldCharacterCountMany => null; + + @override + String get remainingTextFieldCharacterCountOne => r'1 àmì báálẹ̀'; + + @override + String get remainingTextFieldCharacterCountOther => r'$remainingCount àmì báálẹ̀'; + + @override + String? get remainingTextFieldCharacterCountTwo => null; + + @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 reorderItemLeft => r'Jù sí àrà'; + + @override + String get reorderItemRight => r'Jù sí òtútù'; + + @override + String get reorderItemToEnd => r'Jù sí ìbẹ̀jì'; + + @override + String get reorderItemToStart => r'Jù sí àkọ́kọ́'; + + @override + String get reorderItemUp => r'Jù sí ọ̀rùn'; + + @override + String get rowsPerPageTitle => r'Ìlò Fún àwọn Ìtọ́kasíwájú:'; + + @override + ScriptCategory get scriptCategory => ScriptCategory.englishLike; + + @override + String get searchFieldLabel => 'Ṣẹda'; + + @override + String get selectAllButtonLabel => 'FADỌHỌN DỌFÚN GBÁJÚMỌ̀'; + + @override + String? get selectedRowCountTitleFew => null; + + @override + String? get selectedRowCountTitleMany => null; + + @override + String get selectedRowCountTitleOne => '1 káyé'; + + @override + String get selectedRowCountTitleOther => r'$selectedRowCount káyé'; + + @override + String? get selectedRowCountTitleTwo => null; + + @override + String get selectedRowCountTitleZero => 'Kò sí káyé ti o wọlé'; + + @override + String get showAccountsLabel => 'Fi iyipada mu kọ'; + + @override + String get showMenuTooltip => 'Fi Meniu mu kọ'; + + @override + String get signedInLabel => 'Ọ̀nà'; + + @override + String get tabLabelRaw => r'Àwọn tabin $tabIndex lati $tabCount'; + + @override + TimeOfDayFormat get timeOfDayFormatRaw => TimeOfDayFormat.h_colon_mm_space_a; + + @override + String get timePickerHourModeAnnouncement => 'Tuntun waqtu lọ'; + + @override + String get timePickerMinuteModeAnnouncement => 'Tuntun daɗi minti'; + + @override + String get viewLicensesButtonLabel => 'WO NIKI'; + + @override + List<String> get narrowWeekdays => const <String>['L', 'L', 'A', 'O', 'Ọ', 'Ẹ', 'Ẹ']; + + @override + int get firstDayOfWeekIndex => 0; + + static const LocalizationsDelegate<MaterialLocalizations> delegate = + _YoMaterialLocalizationsDelegate(); + + @override + String get calendarModeButtonLabel => 'Tọ́rọ̀ kálẹ̀ndà'; + + @override + String get dateHelpText => 'mm/dd/yyyy'; + + @override + String get dateInputLabel => 'Firanṣẹ̀ Ọjọ́'; + + @override + String get dateOutOfRangeLabel => 'Nínú iwọ̀ lọ́wọ́'; + + @override + String get datePickerHelpText => 'WÁSÍ'; + + @override + String get dateRangeEndDateSemanticLabelRaw => r'Ọjọ́ tuntun to ṣà'; + + @override + String get dateRangeEndLabel => 'Ọjọ́ tuntun to ṣà'; + + @override + String get dateRangePickerHelpText => 'WÁSÍ ÌGBÀ'; + + @override + String get dateRangeStartDateSemanticLabelRaw => 'Ọjọ́ tuntun ti dá'; + + @override + String get dateRangeStartLabel => 'Ọjọ́ tuntun ti dá'; + + @override + String get dateSeparator => '/'; + + @override + String get dialModeButtonLabel => 'Tọ́rọ̀ wakati'; + + @override + String get inputDateModeButtonLabel => 'Tọ́rọ̀ firanṣẹ̀ ọjọ́'; + + @override + String get inputTimeModeButtonLabel => 'Tọ́rọ̀ wakati bayi lọ́wọ́'; + + @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 invalidTimeLabel => 'Akọ́kọ́tọ́ àkójọ ìwádìí'; + + @override + String get licensesPackageDetailTextOther => r'$licenseCount àwọn níkí'; + + @override + String get saveButtonLabel => 'TÙN DÁRA'; + + @override + String get selectYearSemanticsLabel => 'Fọ́ọ̀ shẹ́kàrà'; + + @override + String get timePickerDialHelpText => 'WÁSÍ WÁKÀTÌ'; + + @override + String get timePickerHourLabel => 'Wákàtì àṣà'; + + @override + String get timePickerInputHelpText => 'Shìgárà wákàtì'; + + @override + String get timePickerMinuteLabel => 'Mìntì'; + + @override + String get unspecifiedDate => 'Ọjọ̀kúnrin'; + + @override + String get unspecifiedDateRange => 'Ọjọ̀kúnrin àdáyọ̀'; + + @override + String get keyboardKeyAlt => 'Alt'; + + @override + String get keyboardKeyAltGraph => 'AltGraph'; + + @override + String get keyboardKeyBackspace => 'Báckspàcè'; + + @override + String get keyboardKeyCapsLock => 'Caps Lock'; + + @override + String get keyboardKeyChannelDown => 'Bá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 keyboardKeyDelete => 'Shápè'; + + @override + String get keyboardKeyEject => 'Èjẹ̀tì'; + + @override + String get keyboardKeyEnd => 'Tàbí'; + + @override + String get keyboardKeyEscape => 'Tòkè'; + + @override + String get keyboardKeyFn => 'Fn'; + + @override + String get keyboardKeyHome => 'Ile'; + + @override + String get keyboardKeyInsert => 'Fi sori'; + + @override + String get keyboardKeyMeta => 'Meta'; + + @override + String get keyboardKeyMetaMacOs => 'Amfani pẹlu Command'; + + @override + String get keyboardKeyMetaWindows => 'Windows'; @override String get keyboardKeyNumLock => 'Num Lock'; @@ -751,6 +750,50 @@ String get keyboardKeyMetaWindows => 'Windows'; @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 @@ -821,138 +864,158 @@ 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<CupertinoLocalizations> 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 e559e9b15..1f0f58ad4 100644 --- a/lib/src/screens/settings/security_backup_page.dart +++ b/lib/src/screens/settings/security_backup_page.dart @@ -1,3 +1,5 @@ +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'; @@ -58,7 +60,7 @@ class SecurityBackupPage extends BasePage { .shouldRequireTOTP2FAForAllSecurityAndBackupSettings, ), ), - if (DeviceInfo.instance.isMobile) + if (DeviceInfo.instance.isMobile || Platform.isMacOS || Platform.isLinux) 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 ae1ef1677..2f544be35 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 6c3fc4f16..7ea928d8a 100644 --- a/lib/src/widgets/validable_annotated_editable_text.dart +++ b/lib/src/widgets/validable_annotated_editable_text.dart @@ -1,8 +1,14 @@ -import 'package:cake_wallet/core/seed_validator.dart'; -import 'package:cw_core/wallet_type.dart'; import 'package:flutter/material.dart'; -class Annotation extends Comparable<Annotation> { + +extension Compare<T> on Comparable<T> { + 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<Annotation> { Annotation({required this.range, required this.style}); final TextRange range; @@ -12,7 +18,7 @@ class Annotation extends Comparable<Annotation> { int compareTo(Annotation other) => range.start.compareTo(other.range.start); } -class TextAnnotation extends Comparable<TextAnnotation> { +class TextAnnotation implements Comparable<TextAnnotation> { 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 e50f4db0c..0e6590845 100644 --- a/lib/view_model/auth_view_model.dart +++ b/lib/view_model/auth_view_model.dart @@ -1,5 +1,6 @@ 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'; @@ -105,16 +106,14 @@ abstract class AuthViewModelBase with Store { @action Future<void> biometricAuth() async { + final _flutterLocalAuthenticationPlugin = FlutterLocalAuthentication(); + try { - final canBiometricAuth = await _biometricAuth.canCheckBiometrics(); - - if (canBiometricAuth) { - final isAuthenticated = await _biometricAuth.isAuthenticated(); - - if (isAuthenticated) { - state = ExecutedSuccessfullyState(); - } + final authenticated = await _flutterLocalAuthenticationPlugin.authenticate(); + if (!authenticated) { + throw Exception('Biometric authentication failed'); } + state = ExecutedSuccessfullyState(); } catch (e) { state = FailureState(e.toString()); } diff --git a/pubspec_base.yaml b/pubspec_base.yaml index 3ec3e7978..e1022864c 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 ebb6bf001..b51fe96d6 100644 --- a/pubspec_description.yaml +++ b/pubspec_description.yaml @@ -4,4 +4,4 @@ version: 0.0.0 publish_to: none environment: - sdk: ">=2.17.5 <3.0.0" \ No newline at end of file + sdk: ">=3.1.0 <4.0.0" \ No newline at end of file From e48962361a71888cb1c25d75204359ab2a660686 Mon Sep 17 00:00:00 2001 From: Matthew Fosse <matt@fosse.co> Date: Thu, 18 Apr 2024 11:10:32 -0700 Subject: [PATCH 2/3] script updates and new run-android script (#1396) --- configure_cake_wallet.sh | 12 +----------- run-android.sh | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) create mode 100755 run-android.sh diff --git a/configure_cake_wallet.sh b/configure_cake_wallet.sh index cc55e8fcc..837a002e9 100755 --- a/configure_cake_wallet.sh +++ b/configure_cake_wallet.sh @@ -23,14 +23,4 @@ source ./app_env.sh cakewallet ./app_config.sh cd ../.. && flutter pub get flutter packages pub run tool/generate_localization.dart -cd cw_core && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd .. -cd cw_evm && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd .. -cd cw_monero && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd .. -cd cw_bitcoin && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd .. -cd cw_haven && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd .. -cd cw_nano && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd .. -cd cw_bitcoin_cash && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd .. -cd cw_solana && flutter pub get && flutter packages pub run build_runner build --delete-conflicting-outputs && cd .. -cd cw_ethereum && flutter pub get && cd .. -cd cw_polygon && flutter pub get && cd .. -flutter packages pub run build_runner build --delete-conflicting-outputs +./model_generator.sh diff --git a/run-android.sh b/run-android.sh new file mode 100755 index 000000000..dd694267a --- /dev/null +++ b/run-android.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Get the current git branch +get_current_branch() { + if git rev-parse --git-dir > /dev/null 2>&1; then + branch=$(git rev-parse --abbrev-ref HEAD) + echo "$branch" + else + echo "Error: Not a git repository." + return 1 + fi +} + +# Update the app.properties file +update_app_properties() { + local branch=$1 + local file_path="./android/app.properties" + + sed -i "s/^id=.*/id=com.cakewallet.$branch/" "$file_path" + sed -i "s/^name=.*/name=$branch-Cake Wallet/" "$file_path" +} + +# only update app.properties if getting the current branch was successful +current_branch=$(get_current_branch) +if [[ $? -eq 0 ]]; then + update_app_properties "$current_branch" +fi + +# run the app +flutter run \ No newline at end of file From 4ed4659f9edfe60cbf063b6c10d0a1dc304d81e8 Mon Sep 17 00:00:00 2001 From: Omar Hatem <omarh.ismail1@gmail.com> Date: Thu, 18 Apr 2024 20:10:58 +0200 Subject: [PATCH 3/3] Revert "version bump to 3.13.9, auth working on mac (#1367)" (#1397) This reverts commit e6b4b08c24c1c2fb6987dcca233a3fee67c50d25. --- .github/workflows/pr_test_build.yml | 2 +- android/build.gradle | 2 +- cw_bitcoin/pubspec.yaml | 5 +- cw_bitcoin_cash/pubspec.yaml | 5 +- cw_core/pubspec.yaml | 5 +- cw_ethereum/pubspec.yaml | 6 +- cw_evm/pubspec.yaml | 5 +- cw_haven/pubspec.yaml | 5 +- cw_monero/pubspec.yaml | 5 +- cw_nano/pubspec.yaml | 5 +- cw_polygon/pubspec.yaml | 5 +- cw_solana/pubspec.yaml | 5 +- lib/entities/biometric_auth.dart | 26 +- lib/locales/hausa_intl.dart | 64 -- lib/locales/yoruba_intl.dart | 787 ++++++++---------- .../settings/security_backup_page.dart | 4 +- lib/src/screens/settings/tor_page.dart | 4 +- .../validable_annotated_editable_text.dart | 14 +- lib/view_model/auth_view_model.dart | 15 +- pubspec_base.yaml | 2 +- pubspec_description.yaml | 2 +- 21 files changed, 406 insertions(+), 567 deletions(-) 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<bool> 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<bool> 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': <dynamic>[ - 'Ọjọ́ Ajé', - 'Ọjọ́ Ìsẹ́gun', - 'Ọjọ́ Ìsẹ́gun-Ẹtì', - 'Ọjọ́ Ìsẹ́gun-Ọ̀rú', - 'Ọjọ́ Àìkú', - 'Ọjọ́ Jímọ̀', - 'Ọjọ́ Àbámẹ́ta', - ], - 'SHORTWEEKDAYS': <dynamic>[ - 'Ajé', - 'Ìsẹ́gun', - 'Ìsẹ́gun-Ẹtì', - 'Ìsẹ́gun-Ọ̀rú', - 'Àìkú', - 'Jímọ̀', - 'Àbámẹ́ta', - ], - 'STANDALONESHORTWEEKDAYS': <dynamic>[ - 'Ajé', - 'Ìsẹ́gun', - 'Ìsẹ́gun-Ẹtì', - 'Ìsẹ́gun-Ọ̀rú', - 'Àìkú', - 'Jímọ̀', - 'Àbámẹ́ta', - ], - 'NARROWWEEKDAYS': <dynamic>[ - 'A', - 'A', - 'Ì', - 'A', - 'À', - 'J', - 'À', - ], - 'STANDALONENARROWWEEKDAYS': <dynamic>[ - 'A', - 'A', - 'Ì', - 'A', - 'À', - 'J', - 'À', - ], - 'SHORTQUARTERS': <dynamic>[ - 'K1', - 'K2', - 'K3', - 'K4', - ], - 'QUARTERS': <dynamic>[ - '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': <dynamic>[ +'Ajé', +'Ìsẹ́gun', +'Ìsẹ́gun-Ẹtì', +'Ìsẹ́gun-Ọ̀rú', +'Àìkú', +'Jímọ̀', +'Àbámẹ́ta', +], +'STANDALONESHORTWEEKDAYS': <dynamic>[ +'Ajé', +'Ìsẹ́gun', +'Ìsẹ́gun-Ẹtì', +'Ìsẹ́gun-Ọ̀rú', +'Àìkú', +'Jímọ̀', +'Àbámẹ́ta', +], +'NARROWWEEKDAYS': <dynamic>[ +'A', +'A', +'Ì', +'A', +'À', +'J', +'À', +], +'STANDALONENARROWWEEKDAYS': <dynamic>[ +'A', +'A', +'Ì', +'A', +'À', +'J', +'À', +], +'SHORTQUARTERS': <dynamic>[ +'K1', +'K2', +'K3', +'K4', +], +'QUARTERS': <dynamic>[ +'1. kwata', +'2. kwata', +'3. kwata', +'4. kwata', +], 'AMPMS': <dynamic>[ '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<String> get narrowWeekdays => const <String>['L', 'L', 'A', 'O', 'Ọ', 'Ẹ', 'Ẹ']; - @override - List<String> get narrowWeekdays => const <String>['L', 'L', 'A', 'O', 'Ọ', 'Ẹ', 'Ẹ']; +@override +int get firstDayOfWeekIndex => 0; - @override - int get firstDayOfWeekIndex => 0; +static const LocalizationsDelegate<MaterialLocalizations> delegate = +_YoMaterialLocalizationsDelegate(); - static const LocalizationsDelegate<MaterialLocalizations> 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<CupertinoLocalizations> 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<T> on Comparable<T> { - 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<Annotation> { +class Annotation extends Comparable<Annotation> { Annotation({required this.range, required this.style}); final TextRange range; @@ -18,7 +12,7 @@ class Annotation implements Comparable<Annotation> { int compareTo(Annotation other) => range.start.compareTo(other.range.start); } -class TextAnnotation implements Comparable<TextAnnotation> { +class TextAnnotation extends Comparable<TextAnnotation> { 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<void> 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