movie-explorer/src/objects/whereToWatch.tsx

96 lines
2.9 KiB
TypeScript
Raw Normal View History

2024-05-18 11:59:35 +00:00
import React from "react"
import tmdb from "./tmdb"
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-18 11:59:35 +00:00
export function WhereToWatch({ watchProviders }: 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-19 15:17:30 +00:00
return <p>Por el momento no hay opciónes streaming.</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> : ""}
{watchProviders?.rent?.length > 0 ? <div className="watch-providers"><h1>Alquiler:</h1><ProviderIcons providerList={watchProviders.rent} link={watchProviders.link} /></div> : ""}
{watchProviders?.buy?.length > 0 ? <div className="watch-providers"><h1>Comprar:</h1><ProviderIcons providerList={watchProviders.buy} link={watchProviders.link} /></div> : ""}
</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
</>
}