diff --git a/.drone.yml b/.drone.yml
index af3bf65..1853b46 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -75,5 +75,5 @@ steps:
#- docker login -u $${DOCKER_USER} -p $${DOCKER_PASS}
- docker-compose -p infoscreen -f docker-compose.yml rm -s -v -f
- docker rmi $${REGISTRY_HOST}/$${IMAGE} || true
- - docker pull $${REGISTRY_HOST}/$${IMAGE}
+ - docker pull $${REGISTRY_HOST}/$${IMAGE}:latest
- docker-compose -p infoscreen -f docker-compose.yml up --no-build -d
\ No newline at end of file
diff --git a/src/components/Calendar.tsx b/src/components/Calendar.tsx
index f20b12c..f841c00 100644
--- a/src/components/Calendar.tsx
+++ b/src/components/Calendar.tsx
@@ -19,17 +19,6 @@ const Calendar = ({ secrets }: { secrets: SecretsCalendar }) => {
const [token, setToken] = React.useState("")
const [events, setEvents] = React.useState([])
- React.useEffect(() => {
- requestToken().then(pullCalendar)
- const calendarInterval = setInterval(pullCalendar, CALENDAR_REFRESH_INTERVAL);
- const calendarTokenInterval = setInterval(requestToken, CALENDAR_TOKEN_REFRESH_INTERVAL);
-
- return () => {
- clearInterval(calendarInterval);
- clearInterval(calendarTokenInterval);
- }
- }, [])
-
const processEventData = (events: Event[]) => {
const eventTable = [];
let lastDate = "";
@@ -110,6 +99,17 @@ const Calendar = ({ secrets }: { secrets: SecretsCalendar }) => {
setEvents(processEventData(events.items));
}
+ React.useEffect(() => {
+ requestToken().then(pullCalendar)
+ const calendarInterval = setInterval(pullCalendar, CALENDAR_REFRESH_INTERVAL);
+ const calendarTokenInterval = setInterval(requestToken, CALENDAR_TOKEN_REFRESH_INTERVAL);
+
+ return () => {
+ clearInterval(calendarInterval);
+ clearInterval(calendarTokenInterval);
+ }
+ }, [])
+
return
{events}
diff --git a/src/components/DVB.tsx b/src/components/DVB.tsx
index 80ab66b..5704190 100644
--- a/src/components/DVB.tsx
+++ b/src/components/DVB.tsx
@@ -9,13 +9,6 @@ const DVB = ({ stopId }: { stopId: number }) => {
const [departuresHead, setDeparturesHead] = React.useState("")
const [departuresTable, setDeparturesTable] = React.useState([])
- React.useEffect(() => {
- pullDepartures();
- const dvbInterval = setInterval(pullDepartures, DVB_REFRESH_INTERVAL);
-
- return () => clearInterval(dvbInterval);
- }, [])
-
const processDepatures = (departures: Departure[]) => {
const depTable = [];
@@ -55,13 +48,19 @@ const DVB = ({ stopId }: { stopId: number }) => {
});
const data = await response.json();
if (data.Name !== departuresHead) setDeparturesHead(data.Name);
- console.log(data)
+ //console.log(data)
processDepatures(data.Departures);
}
+ React.useEffect(() => {
+ pullDepartures();
+ const dvbInterval = setInterval(pullDepartures, DVB_REFRESH_INTERVAL);
+
+ return () => clearInterval(dvbInterval);
+ }, [])
+
return (
-
{departuresTable}
diff --git a/src/components/News.tsx b/src/components/News.tsx
index 14b6071..b65f579 100644
--- a/src/components/News.tsx
+++ b/src/components/News.tsx
@@ -8,13 +8,6 @@ const NEWS_REFRESH_INTERVAL = 15 * 60 * 1000;
const News = () => {
const [news, setNews] = React.useState([])
- React.useEffect(() => {
- pullNews()
- const newsInterval = setInterval(pullNews, NEWS_REFRESH_INTERVAL);
-
- return () => clearInterval(newsInterval);
- }, [])
-
const processNews = (news: NewsType[], postillon: PostillonNews[]) => {
const newsTable = []
@@ -49,7 +42,7 @@ const News = () => {
const pullNews = async () => {
const xml = new XMLParser();
const response = await fetch("https://www.tagesschau.de/xml/atom/");
- const feed: {title: string; updated: string;}[] = xml.parse(await response.text()).feed.entry;
+ const feed: { title: string; updated: string; }[] = xml.parse(await response.text()).feed.entry;
// Feedburner does not allow cors but at least we get JSON
const postResponse = await fetch("https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FrkEL");
@@ -58,6 +51,13 @@ const News = () => {
processNews(feed, data.items);
}
+ React.useEffect(() => {
+ pullNews()
+ const newsInterval = setInterval(pullNews, NEWS_REFRESH_INTERVAL);
+
+ return () => clearInterval(newsInterval);
+ }, [])
+
return
diff --git a/src/components/Spotify.tsx b/src/components/Spotify.tsx
index 1f7f7bf..4e06509 100644
--- a/src/components/Spotify.tsx
+++ b/src/components/Spotify.tsx
@@ -1,11 +1,11 @@
import * as React from "react"
//import useWebSocket from "react-use-websocket";
-import {connect} from "mqtt"
+import { connect } from "mqtt"
import type { SecretsMQTT, SongInfo } from "../lib/interfaces"
import * as styles from "../styles/containers/Spotify.module.css"
const Spotify = ({ mqtt, Alternative }: { mqtt: SecretsMQTT, Alternative: any }) => {
- const [lastSongInfo, setLastSongInfo] = React.useState(undefined)
+ const [lastSongInfo, setLastSongInfo] = React.useState(undefined)
const handleMessage = (_topic: string, message: string) => {
try {
@@ -31,7 +31,7 @@ const Spotify = ({ mqtt, Alternative }: { mqtt: SecretsMQTT, Alternative: any })
client.subscribe("infoscreen/spotify")
})
- return () => {client.end()}
+ return () => { client.end() }
}, [])
if (true || !lastSongInfo || lastSongInfo.playbackState !== "PLAYING") {
diff --git a/src/components/WeatherAndTime.tsx b/src/components/WeatherAndTime.tsx
index 2dc6330..f983c48 100644
--- a/src/components/WeatherAndTime.tsx
+++ b/src/components/WeatherAndTime.tsx
@@ -52,6 +52,12 @@ const WeatherAndTime = ({ secrets }: { secrets: SecretsWeather }) => {
}
});
+ const pullWeather = () => {
+ fetch(`https://api.pirateweather.net/forecast/${secrets.apiKey}/${secrets.coords}?exclude=minutely,hourly&lang=de&units=ca`)
+ .then(resp => resp.json())
+ .then(setWeather);
+ }
+
React.useEffect(() => {
const dateInterval = setInterval(() => {
const date = new Date()
@@ -69,12 +75,6 @@ const WeatherAndTime = ({ secrets }: { secrets: SecretsWeather }) => {
}
}, [])
- const pullWeather = () => {
- fetch(`https://api.pirateweather.net/forecast/${secrets.apiKey}/${secrets.coords}?exclude=minutely,hourly&lang=de&units=ca`)
- .then(resp => resp.json())
- .then(setWeather);
- }
-
const time = `${date.getHours()}:${date.getMinutes().toString().padStart(2, "0")}`;
const dateString = `${dowToString(date.getDay())}, der ${date.getDate()}. ${monthToString(date.getMonth())} ${date.getFullYear()}`;
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 9bcddf9..61be69a 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -16,6 +16,12 @@ const images = importAll(require.context('../images/custom/bg/', false, /\.(png|
const IndexPage = () => {
const [currentBg, setCurrentBg] = React.useState(0);
+
+ const updateBackground = () => {
+ let nextBg = Math.floor(Math.random() * images.length)
+ while (nextBg == currentBg) nextBg = Math.floor(Math.random() * images.length)
+ setCurrentBg(nextBg)
+ }
React.useEffect(() => {
// This effect is executed onload
@@ -28,12 +34,6 @@ const IndexPage = () => {
return () => clearInterval(interval);
}, [])
- const updateBackground = () => {
- let nextBg = Math.floor(Math.random() * images.length)
- while (nextBg == currentBg) nextBg = Math.floor(Math.random() * images.length)
- setCurrentBg(nextBg)
- }
-
return (