homepage/src/components/roomState.js

36 lines
951 B
JavaScript
Raw Normal View History

import React, { useEffect, useState } from 'react'
2019-12-11 21:34:32 +00:00
2019-12-12 20:56:13 +00:00
const roomStateData = {
loading: { text: '...', color: 'white' },
open: { text: 'offen', color: '#00aa00' },
closed: { text: 'geschlossen', color: '#ee3333' },
error: { text: 'laut API kaputt', color: '#ee3333' },
2019-12-12 20:56:13 +00:00
}
export default function RoomState() {
const [openState, setOpenState] = useState('loading')
2019-12-11 22:25:00 +00:00
useEffect(() => {
fetch('https://status.ctdo.de/api/simple/v2')
.then(response => {
if (response.status >= 200 && response.status <= 299) {
return response
} else {
throw new Error()
}
})
.then(response => response.json())
.then(json => setOpenState(json.state ? 'open' : 'closed'))
.catch(() => setOpenState('error'))
2019-12-11 22:25:00 +00:00
}, [])
return (
2019-12-14 17:21:58 +00:00
<a
href="https://status.ctdo.de/"
style={{ color: roomStateData[openState].color }}
>
2019-12-13 12:41:09 +00:00
{roomStateData[openState].text}
2019-12-14 17:21:58 +00:00
</a>
2019-12-11 22:25:00 +00:00
)
}