[mob][photos] fix widget tap on iOS (#6882)
## Description Widget tap was not opening the specified photo because the app group id was not setting correctly when the method was being called. ## Tests
This commit is contained in:
@@ -12,6 +12,8 @@ PODS:
|
||||
- Flutter
|
||||
- device_info_plus (0.0.1):
|
||||
- Flutter
|
||||
- emoji_picker_flutter (0.0.1):
|
||||
- Flutter
|
||||
- ffmpeg_kit_custom (6.0.3)
|
||||
- ffmpeg_kit_flutter (6.0.3):
|
||||
- ffmpeg_kit_custom
|
||||
@@ -179,6 +181,8 @@ PODS:
|
||||
- PromisesObjC (2.4.0)
|
||||
- receive_sharing_intent (1.8.1):
|
||||
- Flutter
|
||||
- rust_lib_photos (0.0.1):
|
||||
- Flutter
|
||||
- SDWebImage (5.21.1):
|
||||
- SDWebImage/Core (= 5.21.1)
|
||||
- SDWebImage/Core (5.21.1)
|
||||
@@ -228,6 +232,8 @@ PODS:
|
||||
- Flutter
|
||||
- url_launcher_ios (0.0.1):
|
||||
- Flutter
|
||||
- vibration (1.7.5):
|
||||
- Flutter
|
||||
- video_player_avfoundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
@@ -248,6 +254,7 @@ DEPENDENCIES:
|
||||
- cupertino_http (from `.symlinks/plugins/cupertino_http/darwin`)
|
||||
- dart_ui_isolate (from `.symlinks/plugins/dart_ui_isolate/ios`)
|
||||
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||
- emoji_picker_flutter (from `.symlinks/plugins/emoji_picker_flutter/ios`)
|
||||
- ffmpeg_kit_flutter (from `.symlinks/plugins/ffmpeg_kit_flutter/ios`)
|
||||
- file_saver (from `.symlinks/plugins/file_saver/ios`)
|
||||
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||
@@ -294,6 +301,7 @@ DEPENDENCIES:
|
||||
- thermal (from `.symlinks/plugins/thermal/ios`)
|
||||
- ua_client_hints (from `.symlinks/plugins/ua_client_hints/ios`)
|
||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||
- vibration (from `.symlinks/plugins/vibration/ios`)
|
||||
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
|
||||
- video_thumbnail (from `.symlinks/plugins/video_thumbnail/ios`)
|
||||
- volume_controller (from `.symlinks/plugins/volume_controller/ios`)
|
||||
@@ -336,6 +344,8 @@ EXTERNAL SOURCES:
|
||||
:path: ".symlinks/plugins/dart_ui_isolate/ios"
|
||||
device_info_plus:
|
||||
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||
emoji_picker_flutter:
|
||||
:path: ".symlinks/plugins/emoji_picker_flutter/ios"
|
||||
ffmpeg_kit_flutter:
|
||||
:path: ".symlinks/plugins/ffmpeg_kit_flutter/ios"
|
||||
file_saver:
|
||||
@@ -428,6 +438,8 @@ EXTERNAL SOURCES:
|
||||
:path: ".symlinks/plugins/ua_client_hints/ios"
|
||||
url_launcher_ios:
|
||||
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||
vibration:
|
||||
:path: ".symlinks/plugins/vibration/ios"
|
||||
video_player_avfoundation:
|
||||
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
|
||||
video_thumbnail:
|
||||
@@ -446,6 +458,7 @@ SPEC CHECKSUMS:
|
||||
cupertino_http: 94ac07f5ff090b8effa6c5e2c47871d48ab7c86c
|
||||
dart_ui_isolate: 46f6714abe6891313267153ef6f9748d8ecfcab1
|
||||
device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe
|
||||
emoji_picker_flutter: ed468d9746c21711e66b2788880519a9de5de211
|
||||
ffmpeg_kit_custom: 682b4f2f1ff1f8abae5a92f6c3540f2441d5be99
|
||||
ffmpeg_kit_flutter: 915b345acc97d4142e8a9a8549d177ff10f043f5
|
||||
file_saver: 6cdbcddd690cb02b0c1a0c225b37cd805c2bf8b6
|
||||
@@ -497,6 +510,7 @@ SPEC CHECKSUMS:
|
||||
privacy_screen: 3159a541f5d3a31bea916cfd4e58f9dc722b3fd4
|
||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||
receive_sharing_intent: 222384f00ffe7e952bbfabaa9e3967cb87e5fe00
|
||||
rust_lib_photos: 04d3901908d2972192944083310b65abf410774c
|
||||
SDWebImage: f29024626962457f3470184232766516dee8dfea
|
||||
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
|
||||
Sentry: da60d980b197a46db0b35ea12cb8f39af48d8854
|
||||
@@ -510,6 +524,7 @@ SPEC CHECKSUMS:
|
||||
thermal: d4c48be750d1ddbab36b0e2dcb2471531bc8df41
|
||||
ua_client_hints: 92fe0d139619b73ec9fcb46cc7e079a26178f586
|
||||
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
|
||||
vibration: 8e2f50fc35bb736f9eecb7dd9f7047fbb6a6e888
|
||||
video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b
|
||||
video_thumbnail: b637e0ad5f588ca9945f6e2c927f73a69a661140
|
||||
volume_controller: 3657a1f65bedb98fa41ff7dc5793537919f31b12
|
||||
|
||||
@@ -532,6 +532,7 @@
|
||||
"${BUILT_PRODUCTS_DIR}/cupertino_http/cupertino_http.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/dart_ui_isolate/dart_ui_isolate.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/emoji_picker_flutter/emoji_picker_flutter.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/file_saver/file_saver.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/flutter_email_sender/flutter_email_sender.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/flutter_image_compress_common/flutter_image_compress_common.framework",
|
||||
@@ -575,6 +576,7 @@
|
||||
"${BUILT_PRODUCTS_DIR}/thermal/thermal.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/ua_client_hints/ua_client_hints.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/url_launcher_ios/url_launcher_ios.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/vibration/vibration.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/video_player_avfoundation/video_player_avfoundation.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/video_thumbnail/video_thumbnail.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/volume_controller/volume_controller.framework",
|
||||
@@ -627,6 +629,7 @@
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/cupertino_http.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/dart_ui_isolate.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/emoji_picker_flutter.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_saver.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_email_sender.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_image_compress_common.framework",
|
||||
@@ -670,6 +673,7 @@
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/thermal.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ua_client_hints.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_ios.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/vibration.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/video_player_avfoundation.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/video_thumbnail.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/volume_controller.framework",
|
||||
|
||||
@@ -27,9 +27,12 @@ import workmanager
|
||||
|
||||
// Retrieve the link from parameters
|
||||
if let url = AppLinks.shared.getLink(launchOptions: launchOptions) {
|
||||
// We have a link, propagate it to your Flutter app or not
|
||||
AppLinks.shared.handleLink(url: url)
|
||||
return true // Returning true will stop the propagation to other packages
|
||||
// only accept non-homewidget urls for AppLinks
|
||||
if !url.absoluteString.contains("&homeWidget") {
|
||||
AppLinks.shared.handleLink(url: url)
|
||||
// link is handled, stop propagation
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||
|
||||
@@ -89,8 +89,9 @@ class _EnteAppState extends State<EnteApp> with WidgetsBindingObserver {
|
||||
_checkForWidgetLaunch();
|
||||
}
|
||||
|
||||
void _checkForWidgetLaunch() {
|
||||
hw.HomeWidget.initiallyLaunchedFromHomeWidget().then(
|
||||
Future<void> _checkForWidgetLaunch() async {
|
||||
await HomeWidgetService.instance.setAppGroup();
|
||||
await hw.HomeWidget.initiallyLaunchedFromHomeWidget().then(
|
||||
(uri) => HomeWidgetService.instance.onLaunchFromWidget(uri, context),
|
||||
);
|
||||
hw.HomeWidget.widgetClicked.listen(
|
||||
|
||||
@@ -174,7 +174,6 @@ Future<void> _runMinimally(String taskId, TimeLogger tlog) async {
|
||||
// Misc Services
|
||||
await UserService.instance.init();
|
||||
NotificationService.instance.init(prefs);
|
||||
if (Platform.isAndroid) HomeWidgetService.instance.init(prefs);
|
||||
|
||||
// Begin Execution
|
||||
// only runs for android
|
||||
@@ -269,8 +268,6 @@ Future<void> _init(bool isBackground, {String via = ''}) async {
|
||||
await SyncService.instance.init(preferences);
|
||||
_logger.info("SyncService init done $tlog");
|
||||
|
||||
HomeWidgetService.instance.init(preferences);
|
||||
|
||||
if (!isBackground) {
|
||||
await _scheduleFGHomeWidgetSync();
|
||||
}
|
||||
|
||||
@@ -39,12 +39,7 @@ class AlbumHomeWidgetService {
|
||||
|
||||
// Properties
|
||||
final Logger _logger = Logger((AlbumHomeWidgetService).toString());
|
||||
late final SharedPreferences _prefs;
|
||||
|
||||
// Initialization
|
||||
void init(SharedPreferences prefs) {
|
||||
_prefs = prefs;
|
||||
}
|
||||
SharedPreferences get _prefs => ServiceLocator.instance.prefs;
|
||||
|
||||
// Public methods
|
||||
List<int>? getSelectedAlbumIds() {
|
||||
|
||||
@@ -55,23 +55,22 @@ class HomeWidgetService {
|
||||
|
||||
final Logger _logger = Logger((HomeWidgetService).toString());
|
||||
final computeLock = Lock();
|
||||
bool _isAppGroupSet = false;
|
||||
|
||||
void init(SharedPreferences prefs) {
|
||||
setAppGroupID(iOSGroupIDMemory);
|
||||
_initializeWidgetServices(prefs);
|
||||
}
|
||||
|
||||
void _initializeWidgetServices(SharedPreferences prefs) {
|
||||
AlbumHomeWidgetService.instance.init(prefs);
|
||||
PeopleHomeWidgetService.instance.init(prefs);
|
||||
MemoryHomeWidgetService.instance.init(prefs);
|
||||
}
|
||||
|
||||
void setAppGroupID(String id) {
|
||||
hw.HomeWidget.setAppGroupId(id).ignore();
|
||||
Future<void> setAppGroup({String id = iOSGroupIDMemory}) async {
|
||||
if (!Platform.isIOS || _isAppGroupSet) return;
|
||||
_logger.info("Setting app group id");
|
||||
await hw.HomeWidget.setAppGroupId(id).catchError(
|
||||
(error) {
|
||||
_logger.severe("Failed to set app group ID: $error");
|
||||
return null;
|
||||
},
|
||||
);
|
||||
_isAppGroupSet = true;
|
||||
}
|
||||
|
||||
Future<void> initHomeWidget([bool isBg = false]) async {
|
||||
await setAppGroup();
|
||||
await AlbumHomeWidgetService.instance.initAlbumHomeWidget(isBg);
|
||||
await PeopleHomeWidgetService.instance.initPeopleHomeWidget();
|
||||
await MemoryHomeWidgetService.instance.initMemoryHomeWidget();
|
||||
@@ -218,7 +217,7 @@ class HomeWidgetService {
|
||||
|
||||
Future<void> clearWidget(bool autoLogout) async {
|
||||
if (autoLogout) {
|
||||
setAppGroupID(iOSGroupIDMemory);
|
||||
await setAppGroup();
|
||||
}
|
||||
|
||||
await Future.wait([
|
||||
|
||||
@@ -31,12 +31,7 @@ class MemoryHomeWidgetService {
|
||||
|
||||
// Properties
|
||||
final Logger _logger = Logger((MemoryHomeWidgetService).toString());
|
||||
late final SharedPreferences _prefs;
|
||||
|
||||
// Initialization
|
||||
void init(SharedPreferences prefs) {
|
||||
_prefs = prefs;
|
||||
}
|
||||
SharedPreferences get _prefs => ServiceLocator.instance.prefs;
|
||||
|
||||
// Preference getters and setters
|
||||
bool? hasLastYearMemoriesSelected() {
|
||||
|
||||
@@ -35,14 +35,9 @@ class PeopleHomeWidgetService {
|
||||
|
||||
// Properties
|
||||
final Logger _logger = Logger((PeopleHomeWidgetService).toString());
|
||||
late final SharedPreferences _prefs;
|
||||
SharedPreferences get _prefs => ServiceLocator.instance.prefs;
|
||||
final peopleChangedLock = Lock();
|
||||
|
||||
// Initialization
|
||||
void init(SharedPreferences prefs) {
|
||||
_prefs = prefs;
|
||||
}
|
||||
|
||||
// Public methods
|
||||
List<String>? getSelectedPeople() {
|
||||
return _prefs.getStringList(SELECTED_PEOPLE_KEY);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
- (prtk) Fix widget initial launch on iOS
|
||||
- (prtk) Upgrade Flutter version to 3.32.8
|
||||
- (prtk) Run FFMpeg in an isolate
|
||||
- Neeraj: Handle custom domain links
|
||||
|
||||
Reference in New Issue
Block a user