97 lines
2.3 KiB
JavaScript
97 lines
2.3 KiB
JavaScript
|
import { useEffect, useState } from 'preact/hooks'
|
||
|
import axios from 'axios'
|
||
|
import ical from 'ical'
|
||
|
import config from '../data/config'
|
||
|
|
||
|
export const useCalendar = () => {
|
||
|
const [data, setData] = useState(null)
|
||
|
const [loading, setLoading] = useState(true)
|
||
|
|
||
|
async function fetchData() {
|
||
|
setLoading(true)
|
||
|
|
||
|
const { data: responseData } = await axios.get(`${config.calendar}`)
|
||
|
const streamsData = Object.values(ical.parseICS(responseData))
|
||
|
.filter(feedItem => feedItem.type === 'VEVENT')
|
||
|
.sort((a, b) => new Date(a.start) - new Date(b.start))
|
||
|
setData(streamsData)
|
||
|
setLoading(false)
|
||
|
}
|
||
|
|
||
|
useEffect(() => {
|
||
|
fetchData()
|
||
|
}, [])
|
||
|
|
||
|
return { loading, data }
|
||
|
}
|
||
|
|
||
|
// export const useCalendar = () => {
|
||
|
// const [data, setData] = useState(null)
|
||
|
// const [loading, setLoading] = useState(true)
|
||
|
|
||
|
// async function fetchData() {
|
||
|
// setLoading(true)
|
||
|
|
||
|
// const { data: responseData } = await axios.get(`${config.calendar}`)
|
||
|
// const streamsData = Object.values(ical.parseICS(responseData))
|
||
|
// .filter(feedItem => feedItem.type === 'VEVENT')
|
||
|
// .sort((a, b) => new Date(a.start) - new Date(b.start))
|
||
|
// setData(streamsData)
|
||
|
// setLoading(false)
|
||
|
// }
|
||
|
|
||
|
// useEffect(() => {
|
||
|
// fetchData()
|
||
|
// }, [])
|
||
|
|
||
|
// return { loading, data }
|
||
|
// }
|
||
|
// useEffect(() => {
|
||
|
// const feedPromise =
|
||
|
// data &&
|
||
|
// data.map(async feedItem => {
|
||
|
// if (feedItem.url) {
|
||
|
// const id = feedItem.url.val.split('/').pop()
|
||
|
|
||
|
// const {
|
||
|
// data: {
|
||
|
// account,
|
||
|
// category,
|
||
|
// channel,
|
||
|
// description,
|
||
|
// embedPath,
|
||
|
// language,
|
||
|
// name,
|
||
|
// state,
|
||
|
// previewPath,
|
||
|
// views,
|
||
|
// },
|
||
|
// } = await axios.get(`https://tv.undersco.re/api/v1/videos/${id}`)
|
||
|
|
||
|
// const item = {
|
||
|
// name,
|
||
|
// account,
|
||
|
// category,
|
||
|
// channel,
|
||
|
// description,
|
||
|
// embedPath,
|
||
|
// language,
|
||
|
// state,
|
||
|
// previewPath,
|
||
|
// views,
|
||
|
// start: feedItem.start,
|
||
|
// end: feedItem.end,
|
||
|
// }
|
||
|
|
||
|
// console.log(item)
|
||
|
|
||
|
// return item
|
||
|
// }
|
||
|
// return null
|
||
|
// })
|
||
|
|
||
|
// feedPromise.then(result => {
|
||
|
// console.log(result)
|
||
|
// })
|
||
|
// }, [data])
|