@ -15,6 +15,7 @@ function useDownloadLink() {
@@ -15,6 +15,7 @@ function useDownloadLink() {
const url = useMemo ( ( ) = > {
if ( source ? . type === "file" && currentQuality )
return source . qualities [ currentQuality ] ? . url ? ? null ;
if ( source ? . type === "hls" ) return source . url ;
return null ;
} , [ source , currentQuality ] ) ;
return url ;
@ -42,6 +43,7 @@ export function DownloadView({ id }: { id: string }) {
@@ -42,6 +43,7 @@ export function DownloadView({ id }: { id: string }) {
const { t } = useTranslation ( ) ;
const downloadUrl = useDownloadLink ( ) ;
const sourceType = usePlayerStore ( ( s ) = > s . source ? . type ) ;
const selectedCaption = usePlayerStore ( ( s ) = > s . caption ? . selected ) ;
const subtitleUrl = useMemo (
( ) = >
@ -60,36 +62,61 @@ export function DownloadView({ id }: { id: string }) {
@@ -60,36 +62,61 @@ export function DownloadView({ id }: { id: string }) {
< / Menu.BackLink >
< Menu.Section >
< div >
< Menu.ChevronLink onClick = { ( ) = > router . navigate ( "/download/pc" ) } >
{ t ( "player.menus.downloads.onPc.title" ) }
< / Menu.ChevronLink >
< Menu.ChevronLink onClick = { ( ) = > router . navigate ( "/download/ios" ) } >
{ t ( "player.menus.downloads.onIos.title" ) }
< / Menu.ChevronLink >
< Menu.ChevronLink
onClick = { ( ) = > router . navigate ( "/download/android" ) }
>
{ t ( "player.menus.downloads.onAndroid.title" ) }
< / Menu.ChevronLink >
< Menu.Divider / >
< Menu.Paragraph marginClass = "my-6" >
< StyleTrans k = "player.menus.downloads.disclaimer" / >
< / Menu.Paragraph >
< Button className = "w-full" href = { downloadUrl } theme = "purple" >
{ t ( "player.menus.downloads.downloadVideo" ) }
< / Button >
< Button
className = "w-full mt-2"
href = { subtitleUrl ? ? undefined }
disabled = { ! subtitleUrl }
theme = "secondary"
download = "subtitles.srt"
>
{ t ( "player.menus.downloads.downloadCaption" ) }
< / Button >
{ sourceType === "hls" ? (
< >
< Menu.Paragraph marginClass = "mb-6" >
< StyleTrans k = "player.menus.downloads.hlsDisclaimer" / >
< / Menu.Paragraph >
< Button className = "w-full" href = { downloadUrl } theme = "purple" >
{ t ( "player.menus.downloads.downloadPlaylist" ) }
< / Button >
< Button
className = "w-full mt-2"
href = { subtitleUrl ? ? undefined }
disabled = { ! subtitleUrl }
theme = "secondary"
download = "subtitles.srt"
>
{ t ( "player.menus.downloads.downloadCaption" ) }
< / Button >
< / >
) : (
< >
< Menu.ChevronLink onClick = { ( ) = > router . navigate ( "/download/pc" ) } >
{ t ( "player.menus.downloads.onPc.title" ) }
< / Menu.ChevronLink >
< Menu.ChevronLink
onClick = { ( ) = > router . navigate ( "/download/ios" ) }
>
{ t ( "player.menus.downloads.onIos.title" ) }
< / Menu.ChevronLink >
< Menu.ChevronLink
onClick = { ( ) = > router . navigate ( "/download/android" ) }
>
{ t ( "player.menus.downloads.onAndroid.title" ) }
< / Menu.ChevronLink >
< Menu.Divider / >
< Menu.Paragraph marginClass = "my-6" >
< StyleTrans k = "player.menus.downloads.disclaimer" / >
< / Menu.Paragraph >
< Button className = "w-full" href = { downloadUrl } theme = "purple" >
{ t ( "player.menus.downloads.downloadVideo" ) }
< / Button >
< Button
className = "w-full mt-2"
href = { subtitleUrl ? ? undefined }
disabled = { ! subtitleUrl }
theme = "secondary"
download = "subtitles.srt"
>
{ t ( "player.menus.downloads.downloadCaption" ) }
< / Button >
< / >
) }
< / div >
< / Menu.Section >
< / >