Resolve URL shorteners and prompt for ambiguous description links

Tapping bit.ly/tinyurl/t.co/etc. in a description or comment previously
opened Safari even when the destination was a playable YouTube URL.
Added an opt-in "Resolve Short Links" toggle under YouTube Enhancements
(off by default) that follows the redirect on tap: if the target is a
YouTube/PeerTube/direct-media URL, open it in-app; otherwise prompt the
user before falling back to yt-dlp extraction or the browser.

Also added a confirmation dialog for non-shortener links that only
matched the loose .externalVideo yt-dlp fallback, so arbitrary web
pages in descriptions no longer silently kick off extraction.

Prompts live on NavigationCoordinator and are dual-hosted by YatteeApp
and ExpandedPlayerSheet so they remain visible whether or not the
expanded player is covering the main view.
This commit is contained in:
Arkadiusz Fal
2026-04-23 07:29:57 +02:00
parent d38b781858
commit 5a839da1bd
13 changed files with 511 additions and 2 deletions

View File

@@ -139,6 +139,46 @@
},
"1.2M subscribers" : {
},
"alert.ambiguousLink.title" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Open Link"
}
}
}
},
"alert.ambiguousLink.message %@" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "%@"
}
}
}
},
"alert.ambiguousLink.tryInYattee" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Try in Yattee"
}
}
}
},
"alert.ambiguousLink.openInBrowser" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Open in Browser"
}
}
}
},
"alert.openVideo.message %@" : {
"localizations" : {
@@ -160,6 +200,46 @@
}
}
},
"alert.resolvedShortLink.title" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Open Link"
}
}
}
},
"alert.resolvedShortLink.message %@" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "This short link expands to:\n%@"
}
}
}
},
"alert.resolvedShortLink.openInYattee" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Try in Yattee"
}
}
}
},
"alert.resolvedShortLink.openInBrowser" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Open in Browser"
}
}
}
},
"batchDownload.complete.allSkipped.subtitle" : {
"comment" : "Toast subtitle when all videos were already downloaded",
"localizations" : {
@@ -14418,6 +14498,26 @@
}
}
},
"settings.youtubeEnhancements.resolveShortLinks.footer" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "When you tap a bit.ly, tinyurl, t.co, or similar short link in a description or comment, Yattee follows the redirect and opens the destination in-app if it's a supported video, channel, or playlist. Sends a network request to the shortener service."
}
}
}
},
"settings.resolveShortLinks.title" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Resolve Short Links"
}
}
}
},
"settings.youtubeEnhancements.title" : {
"localizations" : {
"en" : {