From 442da406223100e7763da6b481da8f1551021f47 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Tue, 19 Aug 2025 14:24:14 +0300 Subject: [PATCH] fix: token storage --- .gitea/workflows/test.yml | 2 +- .gitignore | 4 +- android/app/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 6 +-- lib/core/const.dart | 2 +- lib/core/credentials_storage.dart | 21 ++++----- lib/core/locator_service.dart | 4 +- lib/core/token_storage.dart | 23 +++++----- pubspec.yaml | 45 +++++++++---------- 10 files changed, 53 insertions(+), 58 deletions(-) diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index e6a74c64..d209778b 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -3,7 +3,7 @@ name: Eatvio App Android Test on: [ pull_request ] env: - flutter_version: "3.32.8" + flutter_version: "3.35.1" java_version: "21.x" flutter_channel: "stable" my_local_cache_dir: "/opt/hostedtoolcache/" diff --git a/.gitignore b/.gitignore index 6960fad1..4f05e3a1 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,4 @@ *.mocks.dart android/build/ ios/XCBuildData/ -.env -env.example -env/.env +env/.env \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index c9fe6d27..9ffa87c4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -29,7 +29,7 @@ android { defaultConfig { applicationId = "com.eatvioapp.app" - minSdk = 23 + minSdkVersion flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index ac3b4792..e603bd33 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 29eab0d3..e173b2c9 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -18,11 +18,11 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "8.7.3" apply false + id "com.android.application" version "8.12.0" apply false // START: FlutterFire Configuration - id "com.google.gms.google-services" version "4.4.2" apply false + id "com.google.gms.google-services" version "4.4.3" apply false // END: FlutterFire Configuration - id "org.jetbrains.kotlin.android" version "2.1.0" apply false + id "org.jetbrains.kotlin.android" version "2.2.10" apply false } include ":app" diff --git a/lib/core/const.dart b/lib/core/const.dart index 98f7bc4a..a5f06149 100644 --- a/lib/core/const.dart +++ b/lib/core/const.dart @@ -1,6 +1,6 @@ import 'package:eatvio_app/core/env_config.dart'; -String baseUrl = EnvConfig.baseUrl; +String baseUrl = EnvConfig.devBaseUrl; bool hidePlans = const bool.fromEnvironment('HIDE_PLANS', defaultValue: false); const buildDate = String.fromEnvironment('BUILD_DATE', defaultValue: ''); diff --git a/lib/core/credentials_storage.dart b/lib/core/credentials_storage.dart index 6e9870e5..05001744 100644 --- a/lib/core/credentials_storage.dart +++ b/lib/core/credentials_storage.dart @@ -1,9 +1,10 @@ -import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:eatvio_app/core/locator_service.dart'; +import 'package:shared_preferences/shared_preferences.dart'; abstract class CredentialsStorage { - static Future haveCredentialsInStorage() async { + static bool haveCredentialsInStorage() { try { - if (await const FlutterSecureStorage().read(key: 'email') == null || await const FlutterSecureStorage().read(key: 'password') == null) { + if (sl().getString('email') == null || sl().getString('password') == null) { return false; } else { return true; @@ -13,20 +14,20 @@ abstract class CredentialsStorage { } } - static Future> getCredentialsFromStorage() async { + static Map getCredentialsFromStorage() { return { - 'email': (await const FlutterSecureStorage().read(key: 'email'))!, - 'password': (await const FlutterSecureStorage().read(key: 'password'))!, + 'email': (sl().getString('email'))!, + 'password': (sl().getString('password'))!, }; } static Future saveCredentials(String email, String password) async { - await const FlutterSecureStorage().write(key: 'email', value: email); - await const FlutterSecureStorage().write(key: 'password', value: password); + await sl().setString('email', email); + await sl().setString('password', password); } static Future removeCredentials() async { - await const FlutterSecureStorage().delete(key: 'email'); - await const FlutterSecureStorage().delete(key: 'password'); + sl().remove('email'); + sl().remove('password'); } } diff --git a/lib/core/locator_service.dart b/lib/core/locator_service.dart index 68208bc5..54ed3a9d 100644 --- a/lib/core/locator_service.dart +++ b/lib/core/locator_service.dart @@ -107,9 +107,9 @@ import 'package:eatvio_app/features/settings/presentation/bloc/settings_cubit/se import 'package:eatvio_app/features/settings/repositories/service_repository.dart'; import 'package:eatvio_app/features/settings/services/settings_service.dart'; import 'package:eatvio_app/features/user_details/presentation/cubit/user_details_cubit.dart'; -import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:get_it/get_it.dart'; import 'package:eatvio_app/features/profile/presentation/bloc/plans_cubit/plans_cubit.dart' as profile_plans; +import 'package:shared_preferences/shared_preferences.dart'; final sl = GetIt.instance; @@ -252,5 +252,5 @@ Future init() async { ], ), ); - sl.registerLazySingleton(() async => const FlutterSecureStorage()); + sl.registerLazySingleton(() async => SharedPreferences.getInstance()); } diff --git a/lib/core/token_storage.dart b/lib/core/token_storage.dart index 30906264..fec596c5 100644 --- a/lib/core/token_storage.dart +++ b/lib/core/token_storage.dart @@ -1,9 +1,10 @@ -import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'locator_service.dart'; abstract class TokenStorage { - static Future haveTokenInStorage() async { + static bool haveTokenInStorage() { try { - if (await const FlutterSecureStorage().read(key: 'token') == null) { + if (sl().getString('token') == null) { return false; } else { return true; @@ -13,19 +14,19 @@ abstract class TokenStorage { } } - static Future getTokenFromStorage() async => await const FlutterSecureStorage().read(key: 'token'); + static String? getTokenFromStorage() => sl().getString('token'); static Future saveTokenInStorage(String token) async { - await const FlutterSecureStorage().write(key: 'token', value: token); + await sl().setString('token', token); } - static Future removeTokenInStorage() async => (await const FlutterSecureStorage().delete(key: 'token')); + static Future removeTokenInStorage() async => (await sl().remove('token')); } abstract class SocketIdStorage { - static Future haveSocketIdInStorage() async { + static bool haveSocketIdInStorage() { try { - if (await const FlutterSecureStorage().read(key: 'socketId') == null) { + if (sl().getString('socketId') == null) { return false; } else { return true; @@ -35,11 +36,11 @@ abstract class SocketIdStorage { } } - static Future getSocketIdFromStorage() async => await const FlutterSecureStorage().read(key: 'socketId'); + static String? getSocketIdFromStorage() => sl().getString('socketId'); static Future saveSocketIdInStorage(String socketId) async { - await const FlutterSecureStorage().write(key: 'socketId', value: socketId); + await sl().setString('socketId', socketId); } - static Future removeSocketIdInStorage() async => (await const FlutterSecureStorage().delete(key: 'socketId')); + static Future removeSocketIdInStorage() async => (await sl().remove('socketId')); } diff --git a/pubspec.yaml b/pubspec.yaml index d9dda30d..c8638b7e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -13,11 +13,6 @@ dependencies: flutter_localizations: sdk: flutter - flutter_secure_storage: - git: - url: https://github.com/sherlockvn/flutter_secure_storage.git - ref: remove-old-encrypt-algorithm - path: flutter_secure_storage flutter_bloc: ^9.1.1 cached_network_image: ^3.4.1 flutter_svg: ^2.2.0 @@ -27,28 +22,28 @@ dependencies: validators: ^3.0.0 path_provider: ^2.1.5 carousel_slider_plus: ^7.1.1 - flutter_form_builder: ^10.1.0 - image_picker: ^1.1.2 + flutter_form_builder: ^10.2.0 + image_picker: ^1.2.0 flutter_typeahead: ^5.2.0 - go_router: ^16.0.0 + go_router: ^16.1.0 keyboard_dismisser: ^3.0.0 - retrofit: ^4.7.0 - get_it: ^8.1.0 - dio: ^5.8.0+1 + retrofit: ^4.7.1 + get_it: ^8.2.0 + dio: ^5.9.0 dart_pusher_channels: ^1.2.3 photo_view: ^0.15.0 dismissible_page: ^1.0.2 url_launcher: ^6.3.2 easy_debounce: ^2.0.3 badges: ^3.1.2 - google_fonts: ^6.2.1 - syncfusion_flutter_charts: ^30.1.42 - syncfusion_flutter_gauges: ^30.1.42 + google_fonts: ^6.3.0 + syncfusion_flutter_charts: ^30.2.5 + syncfusion_flutter_gauges: ^30.2.5 table_calendar: ^3.2.0 flutter_keyboard_visibility: ^6.0.0 - share_plus: ^11.0.0 + share_plus: ^11.1.0 flutter_html: ^3.0.0 - file_picker: ^10.2.0 + file_picker: ^10.3.1 audioplayers: ^6.5.0 intl: ^0.20.2 mask_text_input_formatter: ^2.9.0 @@ -59,31 +54,31 @@ dependencies: flutter_image_compress: ^2.4.0 image: ^4.5.4 dotted_border: ^3.1.0 - http: ^1.4.0 + http: ^1.5.0 flutter_native_splash: ^2.4.6 webview_flutter: ^4.13.0 - sentry_flutter: ^9.5.0 - connectivity_plus: ^6.1.4 + sentry_flutter: ^9.6.0 + connectivity_plus: ^6.1.5 visibility_detector: ^0.4.0+2 - firebase_core: ^3.15.2 - firebase_messaging: ^15.2.10 + firebase_core: ^4.0.0 + firebase_messaging: ^16.0.0 http_parser: ^4.1.2 path: ^1.9.1 collection: ^1.19.1 shared_preferences: ^2.5.3 version: ^3.0.2 - package_info_plus: ^8.3.0 + package_info_plus: ^8.3.1 device_info_plus: ^11.5.0 permission_handler: ^12.0.1 qr_code_scanner_plus: ^2.0.10+1 - flutter_dotenv: ^5.1.0 + flutter_dotenv: ^5.2.1 uuid: ^4.5.1 dev_dependencies: - build_runner: ^2.6.0 + build_runner: ^2.7.0 freezed: ^3.2.0 json_serializable: ^6.10.0 - retrofit_generator: ^10.0.1 + retrofit_generator: ^10.0.2 mockito: ^5.5.0 flutter_test: