[mob][photos] Handle deep link from public album by opening the album in app
This commit is contained in:
@@ -106,6 +106,8 @@ class _HomeWidgetState extends State<HomeWidget> {
|
||||
late StreamSubscription<BackupFoldersUpdatedEvent> _backupFoldersUpdatedEvent;
|
||||
late StreamSubscription<AccountConfiguredEvent> _accountConfiguredEvent;
|
||||
late StreamSubscription<CollectionUpdatedEvent> _collectionUpdatedEvent;
|
||||
late StreamSubscription _publicAlbumLinkSubscription;
|
||||
|
||||
final DiffFetcher _diffFetcher = DiffFetcher();
|
||||
|
||||
@override
|
||||
@@ -219,6 +221,8 @@ class _HomeWidgetState extends State<HomeWidget> {
|
||||
});
|
||||
});
|
||||
|
||||
Platform.isIOS ? _initDeepLinkSubscriptionForPublicAlbums() : null;
|
||||
|
||||
// For sharing images coming from outside the app
|
||||
_initMediaShareSubscription();
|
||||
WidgetsBinding.instance.addPostFrameCallback(
|
||||
@@ -351,6 +355,7 @@ class _HomeWidgetState extends State<HomeWidget> {
|
||||
_collectionUpdatedEvent.cancel();
|
||||
isOnSearchTabNotifier.dispose();
|
||||
_pageController.dispose();
|
||||
_publicAlbumLinkSubscription.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@@ -393,6 +398,49 @@ class _HomeWidgetState extends State<HomeWidget> {
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> _initDeepLinkSubscriptionForPublicAlbums() async {
|
||||
// ... check initialUri
|
||||
try {
|
||||
final initialUri = await getInitialUri();
|
||||
if (initialUri != null) {
|
||||
if (initialUri.toString().contains("albums.ente.sh")) {
|
||||
await _handlePublicAlbumLink(initialUri);
|
||||
} else {
|
||||
_logger.info(
|
||||
"uri doesn't contain 'albums.ente.io' in initial public album deep link",
|
||||
);
|
||||
}
|
||||
} else {
|
||||
_logger.info(
|
||||
"No initial link received in public album link subscription.",
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
_logger.severe("Error while getting initial public album deep link: $e");
|
||||
}
|
||||
|
||||
// Attach a listener to the stream
|
||||
_publicAlbumLinkSubscription = uriLinkStream.listen(
|
||||
(Uri? uri) {
|
||||
if (uri != null) {
|
||||
if (uri.toString().contains("albums.ente.sh")) {
|
||||
_handlePublicAlbumLink(uri);
|
||||
} else {
|
||||
_logger.info(
|
||||
"uri doesn't contain 'albums.ente.io' in public album link subscription",
|
||||
);
|
||||
}
|
||||
} else {
|
||||
_logger.info("No link received in public album link subscription.");
|
||||
}
|
||||
},
|
||||
onError: (err) {
|
||||
// Handle exception by warning the user their action did not succeed
|
||||
_logger.severe("Error while getting public album deep link: $err");
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_logger.info("Building home_Widget with tab $_selectedTabIndex");
|
||||
|
||||
Reference in New Issue
Block a user