radio-station/app/components/station-player.tsx

44 lines
1.4 KiB
TypeScript

import type { ReactNode} from "react";
import { useEffect, useState } from "react";
import type { StationWithTagsClientSide } from "~/models/station.server";
export type StationPlayerProps = {
station: StationWithTagsClientSide | null
};
export function StationPlayer({ station }: StationPlayerProps) {
const [player, setPlayer] = useState<ReactNode | null>(null);
useEffect(() => {
if (typeof window === 'undefined') return;
const importComponent = async () => {
if (!station) return;
try {
const module = await import('react-radio-player');
const RadioBottomBarPlayer = module.RadioBottomBarPlayer;
setPlayer(<RadioBottomBarPlayer
streamUrl={station.streamUrl}
title={station.name}
description={station.description || undefined}
image={station.imgUrl}
secondDescription={<>&#9733; {station.popularity}</>}
/>);
} catch (error) {
console.log('rerrerer', error)
}
};
importComponent()
}, [station])
if (!station || !player) {
return <></>;
}
return (
<div
className="fixed bottom-0 right-0 w-full lg:w-[calc(100vw-20rem)] h-[90px] z-50">
{player}
</div>
);
}