2024-05-18 11:59:35 +00:00
import React from "react"
import tmdb from "./tmdb"
2024-05-22 13:05:38 +00:00
import { Config } from "../App"
2024-05-18 11:59:35 +00:00
interface WhereToWatchProps extends React . ComponentPropsWithRef < "div" > {
watchProviders : {
flatrate : Array < { } > ;
rent : Array < { } > ;
buy : Array < { } > ;
link : string ;
} ;
}
const sampleData = {
link : "https://www.themoviedb.org/movie/872585-oppenheimer/watch?locale=ES" ,
rent : [ {
logo_path : "/7K6rVbpWXB6ByDI0PRzGGRXRBSY.jpg" ,
provider_id : 149 ,
provider_name : "Movistar Plus" ,
display_priority : 12
} ] ,
buy : [ {
logo_path : "/9ghgSC0MA082EL6HLCW3GalykFD.jpg" ,
provider_id : 2 ,
provider_name : "Apple TV" ,
display_priority : 4
} ,
{
logo_path : "/bZvc9dXrXNly7cA0V4D9pR8yJwm.jpg" ,
provider_id : 35 ,
provider_name : "Rakuten TV" ,
display_priority : 13
} ,
{
logo_path : "/8z7rC8uIDaTM91X0ZfkRf04ydj2.jpg" ,
provider_id : 3 ,
provider_name : "Google Play Movies" ,
display_priority : 15
} ,
{
logo_path : "/5vfrJQgNe9UnHVgVNAwZTy0Jo9o.jpg" ,
provider_id : 68 ,
provider_name : "Microsoft Store" ,
display_priority : 16
} ,
{
logo_path : "/seGSXajazLMCKGB5hnRCidtjay1.jpg" ,
provider_id : 10 ,
provider_name : "Amazon Video" ,
display_priority : 36
} ] ,
flatrate : [ {
logo_path : "/gQbqEYd0C9uprYxEUqTM589qn8g.jpg" ,
provider_id : 1773 ,
provider_name : "SkyShowtime" ,
display_priority : 9
} ]
}
interface ProviderIconsProps extends React . ComponentPropsWithRef < "div" > {
providerList : Array < { } > ;
link : string ;
}
function ProviderIcons ( { providerList , link } : ProviderIconsProps ) {
const list = providerList . map ( ( e : any , i : number ) = > {
2024-05-19 15:17:30 +00:00
return < div className = "watch-logo" >
< a href = { link } >
< img src = { tmdb . makeLogoPath ( e . logo_path ) } key = { e . provider_id + "_" + i } / > < / a >
< / div >
2024-05-18 11:59:35 +00:00
} )
return < div className = "watch-logos-container" >
{ list }
< / div >
}
2024-05-19 15:17:30 +00:00
function watchProvidersExist ( watchProviders : any ) {
return watchProviders ? . link
2024-05-18 11:59:35 +00:00
2024-05-19 15:17:30 +00:00
}
2024-05-22 13:05:38 +00:00
export function WhereToWatch ( { watchProviders , config } : WhereToWatchProps ) {
2024-05-19 15:17:30 +00:00
console . log ( "Watch providers exist?" + watchProvidersExist ( watchProviders ) )
if ( ! watchProvidersExist ( watchProviders ) ) {
2024-05-18 11:59:35 +00:00
console . group ( )
console . log ( "Watch providers (WhereToWatch)" )
console . log ( watchProviders )
console . groupEnd ( )
2024-05-22 13:05:38 +00:00
return < p > { config . language == "es" ? "Por el momento no hay opciónes streaming." : config . language == "en" ? "There are no online viewing options right now." : "" } < / p >
2024-05-18 11:59:35 +00:00
}
2024-05-19 15:17:30 +00:00
return < > < footer id = "sidebar-footer" >
< div id = "watch-providers-container" >
{ watchProviders ? . flatrate ? . length > 0 ? < div className = "watch-providers" > < h1 > Streaming : < / h1 > < ProviderIcons providerList = { watchProviders . flatrate } link = { watchProviders . link } / > < / div > : "" }
2024-05-22 13:05:38 +00:00
{ watchProviders ? . rent ? . length > 0 ? < div className = "watch-providers" > < h1 > { config . language == "es" ? "Alquiler:" : config . language == "en" ? "To Rent:" : "" } < / h1 > < ProviderIcons providerList = { watchProviders . rent } link = { watchProviders . link } / > < / div > : "" }
{ watchProviders ? . buy ? . length > 0 ? < div className = "watch-providers" > < h1 > { config . language == "es" ? "Comprar:" : config . language == "en" ? "To Buy:" : "" } < / h1 > < ProviderIcons providerList = { watchProviders . buy } link = { watchProviders . link } / > < / div > : "" }
2024-05-19 15:17:30 +00:00
< / div >
2024-05-18 11:59:35 +00:00
< p > Powered by Just Watch . < / p >
2024-05-19 15:17:30 +00:00
< / footer >
2024-05-18 11:59:35 +00:00
< / >
}