import { Indicator, Popover, Box, Center } from '@mantine/core'; import { useEffect, useState } from 'react'; import { Calendar } from '@mantine/dates'; import MediaDisplay from './MediaDisplay'; import { useConfig } from '../../tools/state'; import { serviceItem } from '../../tools/types'; export default function CalendarComponent(props: any) { const { config } = useConfig(); const [opened, setOpened] = useState(false); const [medias, setMedias] = useState([] as any); if (medias === undefined) { return
ok
; } useEffect(() => { // Filter only sonarr and radarr services const filtered = config.services.filter( (service) => service.type === 'Sonarr' || service.type === 'Radarr' ); // Get the url and API key for each service const serviceUrls = filtered.map((service: serviceItem) => ({ url: service.url, apiKey: service.apiKey, })); // Get the medias from each service // With no cors // const promises = serviceUrls.map((service) => // fetch('/api/getCalendar', { // method: 'POST', // body: JSON.stringify({ // apiKey: service.apiKey, // remoteUrl: service.url, // }), // }).then((response) => console.log(response.json())) // ); fetch('http://server:8989/api/calendar?apikey=ea736455118146fea297e6c7465205ce').then( (response) => { response.json().then((data) => setMedias(data)); } ); }, [config.services]); if (medias === undefined) { return
ok
; } return ( {}} renderDay={(renderdate) => } /> ); } function DayComponent(props: any) { const { renderdate, medias }: { renderdate: Date; medias: [] } = props; const [opened, setOpened] = useState(false); const day = renderdate.getDate(); // Itterate over the medias and filter the ones that are on the same day const filtered = medias.filter((media: any) => { const date = new Date(media.airDate); return date.getDate() === day; }); if (filtered.length === 0) { return
{day}
; } return ( { setOpened(true); }} style={{ height: '100%', width: '100%' }} >
setOpened(false)} opened={opened} target={day} >
); }