From bad8d9bf2a3e61a5ddcfe1464e36580e6f51fd57 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Fri, 4 Apr 2025 16:59:14 +0530 Subject: [PATCH 1/5] Downgrade flutter_secure_storage to fix lockscreen data persisting even after reinstall on iOS --- mobile/pubspec.lock | 12 ++---------- mobile/pubspec.yaml | 8 +++++++- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index 5c0b18ab16..fd25ac51ce 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -780,14 +780,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.1" - flutter_datetime_picker_bdaya: - dependency: "direct main" - description: - name: flutter_datetime_picker_bdaya - sha256: "6cb42a7d659cb9a10afa0a390b81677e15fd2f7e340e7eaffabf770e6b6709c0" - url: "https://pub.dev" - source: hosted - version: "3.0.2" flutter_displaymode: dependency: "direct main" description: @@ -1026,10 +1018,10 @@ packages: dependency: "direct main" description: name: flutter_secure_storage - sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + sha256: ffdbb60130e4665d2af814a0267c481bcf522c41ae2e43caf69fa0146876d685 url: "https://pub.dev" source: hosted - version: "9.2.4" + version: "9.0.0" flutter_secure_storage_linux: dependency: transitive description: diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index f13e088f89..32621bd289 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -93,7 +93,13 @@ dependencies: flutter_map_marker_cluster: ^1.3.6 flutter_native_splash: ^2.4.4 flutter_password_strength: ^0.1.6 - flutter_secure_storage: ^9.2.4 + # Do not upgrade this package unless this issue is resolved: + # https://github.com/juliansteenbakker/flutter_secure_storage/issues/870 + # On v9.4.2, keys related to lockscreen persist even after reintsall. For context see: + # https://github.com/juliansteenbakker/flutter_secure_storage/issues/870#issuecomment-2777447937 + # Let's wait till the issue is resolved by the package maintainer. + # If not resolved and we need to upgrade, write a migration script. + flutter_secure_storage: 9.0.0 flutter_sodium: flutter_staggered_grid_view: ^0.6.2 flutter_svg: ^2.0.10+1 From 7a31cc982a54fa1cd2a759c30560f30f182009ca Mon Sep 17 00:00:00 2001 From: ashilkn Date: Fri, 4 Apr 2025 16:59:40 +0530 Subject: [PATCH 2/5] Auto generated changes --- mobile/ios/Podfile.lock | 114 ++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/mobile/ios/Podfile.lock b/mobile/ios/Podfile.lock index 69f0686047..8d4cb35bec 100644 --- a/mobile/ios/Podfile.lock +++ b/mobile/ios/Podfile.lock @@ -447,83 +447,83 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/wakelock_plus/ios" SPEC CHECKSUMS: - background_fetch: 39f11371c0dce04b001c4bfd5e782bcccb0a85e2 - battery_info: b6c551049266af31556b93c9d9b9452cfec0219f - connectivity_plus: 2a701ffec2c0ae28a48cf7540e279787e77c447d - cupertino_http: 947a233f40cfea55167a49f2facc18434ea117ba - dart_ui_isolate: d5bcda83ca4b04f129d70eb90110b7a567aece14 - device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6 + background_fetch: 94b36ee293e82972852dba8ede1fbcd3bd3d9d57 + battery_info: 83f3aae7be2fccefab1d2bf06b8aa96f11c8bcdd + connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd + cupertino_http: 94ac07f5ff090b8effa6c5e2c47871d48ab7c86c + dart_ui_isolate: 46f6714abe6891313267153ef6f9748d8ecfcab1 + device_info_plus: 335f3ce08d2e174b9fdc3db3db0f4e3b1f66bd89 ffmpeg-kit-ios-full-gpl: 80adc341962e55ef709e36baa8ed9a70cf4ea62b - ffmpeg_kit_flutter_full_gpl: 8d15c14c0c3aba616fac04fe44b3d27d02e3c330 - file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808 + ffmpeg_kit_flutter_full_gpl: ce18b888487c05c46ed252cd2e7956812f2e3bd1 + file_saver: 6cdbcddd690cb02b0c1a0c225b37cd805c2bf8b6 Firebase: d80354ed7f6df5f9aca55e9eb47cc4b634735eaf - firebase_core: 6e223dfa350b2edceb729cea505eaaef59330682 - firebase_messaging: 07fde77ae28c08616a1d4d870450efc2b38cf40d + firebase_core: 6cbed78b4f298ed103a9fd034e6dbc846320480f + firebase_messaging: 5e0adf2eb18b0ee59aa0c109314c091a0497ecac FirebaseCore: 99fe0c4b44a39f37d99e6404e02009d2db5d718d FirebaseCoreInternal: df24ce5af28864660ecbd13596fc8dd3a8c34629 FirebaseInstallations: 6c963bd2a86aca0481eef4f48f5a4df783ae5917 FirebaseMessaging: 487b634ccdf6f7b7ff180fdcb2a9935490f764e8 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_app_icon_changer: e633ce623d36db4dd63c01e4b63fc8a5d44ed48d - flutter_email_sender: e03bdda7637bcd3539bfe718fddd980e9508efaa - flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e - flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 - flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 - flutter_native_splash: f71420956eb811e6d310720fee915f1d42852e7a - flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 - flutter_sodium: a00383520fc689c688b66fd3092984174712493e - fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f + flutter_app_icon_changer: 7b04b45ddc58854f06df562f1e013c54ec40da6e + flutter_email_sender: aa1e9772696691d02cd91fea829856c11efb8e58 + flutter_image_compress_common: 1697a328fd72bfb335507c6bca1a65fa5ad87df1 + flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 + flutter_local_notifications: ad39620c743ea4c15127860f4b5641649a988100 + flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145 + flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418 + flutter_sodium: 7e4621538491834eba53bd524547854bcbbd6987 + fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d - home_widget: 0434835a4c9a75704264feff6be17ea40e0f0d57 - image_editor_common: d6f6644ae4a6de80481e89fe6d0a8c49e30b4b43 - image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 - in_app_purchase_storekit: a1ce04056e23eecc666b086040239da7619cd783 - integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573 - launcher_icon_switcher: 8e0ad2131a20c51c1dd939896ee32e70cd845b37 + home_widget: f169fc41fd807b4d46ab6615dc44d62adbf9f64f + image_editor_common: 3de87e7c4804f4ae24c8f8a998362b98c105cac1 + image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a + in_app_purchase_storekit: d1a48cb0f8b29dbf5f85f782f5dd79b21b90a5e6 + integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e + launcher_icon_switcher: 84c218d233505aa7d8655d8fa61a3ba802c022da libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 - local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3 - local_auth_ios: 5046a18c018dd973247a0564496c8898dbb5adf9 + local_auth_darwin: 553ce4f9b16d3fdfeafce9cf042e7c9f77c1c391 + local_auth_ios: f7a1841beef3151d140a967c2e46f30637cdf451 Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d - maps_launcher: 2e5b6a2d664ec6c27f82ffa81b74228d770ab203 - media_extension: 6618f07abd762cdbfaadf1b0c56a287e820f0c84 - media_kit_libs_ios_video: a5fe24bc7875ccd6378a0978c13185e1344651c1 - media_kit_video: 5da63f157170e5bf303bf85453b7ef6971218a2e - motion_sensors: 03f55b7c637a7e365a0b5f9697a449f9059d5d91 - motionphoto: 8b65ce50c7d7ff3c767534fc3768b2eed9ac24e4 - move_to_background: cd3091014529ec7829e342ad2d75c0a11f4378a5 + maps_launcher: edf829809ba9e894d70e569bab11c16352dedb45 + media_extension: 671e2567880d96c95c65c9a82ccceed8f2e309fd + media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854 + media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474 + motion_sensors: 741e702c17467b9569a92165dda8d4d88c6167f1 + motionphoto: 23e2aeb5c6380112f69468d71f970fa7438e5ed1 + move_to_background: 7e3467dd2a1d1013e98c9c1cb93fd53cd7ef9d84 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - native_video_player: 5d36066807b680e181473e6890dde643ac85380d - objective_c: 77e887b5ba1827970907e10e832eec1683f3431d - onnxruntime: e7c2ae44385191eaad5ae64c935a72debaddc997 + native_video_player: e363dd14f6a498ad8a8f7e6486a0db046ad19f13 + objective_c: 89e720c30d716b036faf9c9684022048eee1eee2 + onnxruntime: f9b296392c96c42882be020a59dbeac6310d81b2 onnxruntime-c: a909204639a1f035f575127ac406f781ac797c9c onnxruntime-objc: b6fab0f1787aa6f7190c2013f03037df4718bd8b - open_mail_app: 70273c53f768beefdafbe310c3d9086e4da3cb02 + open_mail_app: 7314a609e88eed22d53671279e189af7a0ab0f11 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 - package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 - path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 - permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 - photo_manager: ff695c7a1dd5bc379974953a2b5c0a293f7c4c8a - privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e + package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d + photo_manager: d2fbcc0f2d82458700ee6256a15018210a81d413 + privacy_screen: 3159a541f5d3a31bea916cfd4e58f9dc722b3fd4 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - receive_sharing_intent: 79c848f5b045674ad60b9fea3bafea59962ad2c1 + receive_sharing_intent: 222384f00ffe7e952bbfabaa9e3967cb87e5fe00 SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868 SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 Sentry: 0f9bc9adfc0b960e7f3bb5ec67e9a3d8193f3bdb - sentry_flutter: 64a43fb39ab4c7f67d8a4cad52b49e22439e58b7 - share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f - shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 - sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d + sentry_flutter: f4a0466dc8855998ffd59378ec33507c7dc32d7b + share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 sqlite3: fc1400008a9b3525f5914ed715a5d1af0b8f4983 - sqlite3_flutter_libs: 069c435986dd4b63461aecd68f4b30be4a9e9daa - system_info_plus: 5393c8da281d899950d751713575fbf91c7709aa - ua_client_hints: aeabd123262c087f0ce151ef96fa3ab77bfc8b38 - uni_links: 103d3319e3383ed8bce559b96b1e219fbf02ba96 - url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe - video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 - video_thumbnail: 94ba6705afbaa120b77287080424930f23ea0c40 - volume_controller: 2e3de73d6e7e81a0067310d17fb70f2f86d71ac7 - wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56 + sqlite3_flutter_libs: 3c323550ef3b928bc0aa9513c841e45a7d242832 + system_info_plus: 555ce7047fbbf29154726db942ae785c29211740 + ua_client_hints: 92fe0d139619b73ec9fcb46cc7e079a26178f586 + uni_links: f191d616c4db8750f74c72c988e79a83dd297fac + url_launcher_ios: 694010445543906933d732453a59da0a173ae33d + video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b + video_thumbnail: 584ccfa55d8fd2f3d5507218b0a18d84c839c620 + volume_controller: 3657a1f65bedb98fa41ff7dc5793537919f31b12 + wakelock_plus: 04623e3f525556020ebd4034310f20fe7fda8b49 PODFILE CHECKSUM: 20e086e6008977d43a3d40260f3f9bffcac748dd From 5d28c0038a6c01e419431ec30569c005d5ccd6b8 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Fri, 4 Apr 2025 17:01:28 +0530 Subject: [PATCH 3/5] Refactor --- mobile/lib/core/configuration.dart | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/mobile/lib/core/configuration.dart b/mobile/lib/core/configuration.dart index c110a3a100..2ac65b3c78 100644 --- a/mobile/lib/core/configuration.dart +++ b/mobile/lib/core/configuration.dart @@ -84,14 +84,14 @@ class Configuration { late String _sharedDocumentsMediaDirectory; String? _volatilePassword; - final _secureStorageOptionsIOS = const IOSOptions( - accessibility: KeychainAccessibility.first_unlock_this_device, - ); - Future init() async { try { _preferences = await SharedPreferences.getInstance(); - _secureStorage = const FlutterSecureStorage(); + _secureStorage = const FlutterSecureStorage( + iOptions: IOSOptions( + accessibility: KeychainAccessibility.first_unlock_this_device, + ), + ); _documentsDirectory = (await getApplicationDocumentsDirectory()).path; _tempDocumentsDirPath = _documentsDirectory + "/temp/"; final tempDocumentsDir = Directory(_tempDocumentsDirPath); @@ -104,15 +104,13 @@ class Configuration { _documentsDirectory + "/ente-shared-media"; Directory(_sharedDocumentsMediaDirectory).createSync(recursive: true); if (!_preferences.containsKey(tokenKey)) { - await _secureStorage.deleteAll(iOptions: _secureStorageOptionsIOS); + await _secureStorage.deleteAll(); } else { _key = await _secureStorage.read( key: keyKey, - iOptions: _secureStorageOptionsIOS, ); _secretKey = await _secureStorage.read( key: secretKeyKey, - iOptions: _secureStorageOptionsIOS, ); if (_key == null) { await logout(autoLogout: true); @@ -191,7 +189,7 @@ class Configuration { } } await _preferences.clear(); - await _secureStorage.deleteAll(iOptions: _secureStorageOptionsIOS); + await _secureStorage.deleteAll(); _key = null; _cachedToken = null; _secretKey = null; @@ -499,13 +497,11 @@ class Configuration { // Used to clear key from secure storage await _secureStorage.delete( key: keyKey, - iOptions: _secureStorageOptionsIOS, ); } else { await _secureStorage.write( key: keyKey, value: key, - iOptions: _secureStorageOptionsIOS, ); } } @@ -516,13 +512,11 @@ class Configuration { // Used to clear secret key from secure storage await _secureStorage.delete( key: secretKeyKey, - iOptions: _secureStorageOptionsIOS, ); } else { await _secureStorage.write( key: secretKeyKey, value: secretKey, - iOptions: _secureStorageOptionsIOS, ); } } @@ -656,12 +650,10 @@ class Configuration { await _secureStorage.write( key: keyKey, value: _key, - iOptions: _secureStorageOptionsIOS, ); await _secureStorage.write( key: secretKeyKey, value: _secretKey, - iOptions: _secureStorageOptionsIOS, ); await _preferences.setBool( hasMigratedSecureStorageKey, From 0aabee9e3b86493044627cef6f321214235542d5 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Fri, 4 Apr 2025 17:20:37 +0530 Subject: [PATCH 4/5] Bump up version to 1.0.1 --- mobile/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 32621bd289..99462f1568 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -12,7 +12,7 @@ description: ente photos application # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+1031 +version: 1.0.1+1032 publish_to: none environment: From fc8a0b2f37ea02c1d73237c8330cc66ac4e32744 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Fri, 4 Apr 2025 17:46:26 +0530 Subject: [PATCH 5/5] Fix version number of comment --- mobile/pubspec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 99462f1568..d081f50df5 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -12,7 +12,7 @@ description: ente photos application # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.1+1032 +version: 1.0.0+1031 publish_to: none environment: @@ -95,7 +95,7 @@ dependencies: flutter_password_strength: ^0.1.6 # Do not upgrade this package unless this issue is resolved: # https://github.com/juliansteenbakker/flutter_secure_storage/issues/870 - # On v9.4.2, keys related to lockscreen persist even after reintsall. For context see: + # On v9.2.4, keys related to lockscreen persist even after reintsall. For context see: # https://github.com/juliansteenbakker/flutter_secure_storage/issues/870#issuecomment-2777447937 # Let's wait till the issue is resolved by the package maintainer. # If not resolved and we need to upgrade, write a migration script.