diff --git a/mobile/lib/models/shared_link/shared_link.model.dart b/mobile/lib/models/shared_link/shared_link.model.dart index 43858b918f..ac3be878c6 100644 --- a/mobile/lib/models/shared_link/shared_link.model.dart +++ b/mobile/lib/models/shared_link/shared_link.model.dart @@ -81,6 +81,11 @@ class SharedLink { ? dto.assets[0].id : null; + String getShareUrlPath() { + final slug = this.slug?.trim(); + return slug?.isNotEmpty == true ? 's/$slug' : 'share/$key'; + } + @override String toString() => 'SharedLink(id=$id, title=$title, thumbAssetId=$thumbAssetId, allowDownload=$allowDownload, allowUpload=$allowUpload, description=$description, password=$password, expiresAt=$expiresAt, key=$key, showMetadata=$showMetadata, slug=$slug, type=$type)'; diff --git a/mobile/lib/pages/library/shared_link/shared_link_edit.page.dart b/mobile/lib/pages/library/shared_link/shared_link_edit.page.dart index 6084c3dbc7..03200e9c1c 100644 --- a/mobile/lib/pages/library/shared_link/shared_link_edit.page.dart +++ b/mobile/lib/pages/library/shared_link/shared_link_edit.page.dart @@ -274,7 +274,7 @@ class SharedLinkEditPage extends HookConsumerWidget { } if (newLink != null && serverUrl != null) { - final fullPath = getShareUrlPath(newLink); + final fullPath = newLink.getShareUrlPath(); newShareLink.value = "$serverUrl$fullPath"; copyLinkToClipboard(); } else if (newLink == null) { diff --git a/mobile/lib/utils/url_helper.dart b/mobile/lib/utils/url_helper.dart index 2b29e41296..fa545304f8 100644 --- a/mobile/lib/utils/url_helper.dart +++ b/mobile/lib/utils/url_helper.dart @@ -1,6 +1,5 @@ import 'package:immich_mobile/domain/models/store.model.dart'; import 'package:immich_mobile/entities/store.entity.dart'; -import 'package:immich_mobile/models/shared_link/shared_link.model.dart'; import 'package:punycode/punycode.dart'; String sanitizeUrl(String url) { @@ -92,12 +91,4 @@ String? punycodeDecodeUrl(String? serverUrl) { return Uri.decodeFull(serverUri.replace(host: decodedHost).toString()); } -/// Generates the appropriate share URL path for a given shared link. -/// -/// Returns a path string based on the shared link's slug and key: -/// - If slug is present: 's/${sharedLink.slug}' -/// - Otherwise: 'share/${sharedLink.key}' -String getShareUrlPath(SharedLink sharedLink) { - final slug = sharedLink.slug?.trim(); - return slug?.isNotEmpty == true ? 's/$slug' : 'share/${sharedLink.key}'; -} + diff --git a/mobile/lib/widgets/shared_link/shared_link_item.dart b/mobile/lib/widgets/shared_link/shared_link_item.dart index b5bf231a93..aec7f8c9cc 100644 --- a/mobile/lib/widgets/shared_link/shared_link_item.dart +++ b/mobile/lib/widgets/shared_link/shared_link_item.dart @@ -78,7 +78,7 @@ class SharedLinkItem extends ConsumerWidget { return; } - final fullPath = getShareUrlPath(sharedLink); + final fullPath = sharedLink.getShareUrlPath(); Clipboard.setData(ClipboardData(text: "$serverUrl$fullPath")).then((_) { context.scaffoldMessenger.showSnackBar(