main.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { Elysia } from 'elysia'
  2. import { Eta } from "eta"
  3. const eta = new Eta({ views: "./templates" })
  4. import Meteostanica from '../../utils/meteostanica'
  5. import editEnvVariable from '../../utils/editEnvVariable'
  6. import getWifiIPv4 from '../../utils/getWifiIPv4'
  7. export default (langName, lang) => new Elysia()
  8. .get('/', ({ set }) => {
  9. const data = Meteostanica.getData()
  10. set.headers['content-type'] = 'text/html; charset=utf8'
  11. return eta.render(`${langName}/index`, { data })
  12. })
  13. .get('/settings', ({ set }) => {
  14. set.headers['content-type'] = 'text/html; charset=utf8'
  15. return eta.render(`${langName}/settings`, { wifiIPv4: getWifiIPv4(), postDataEnabled: process.env.POST_DATA_ENABLED, cloudURL: process.env.BACKEND_URL, websocketKey: BACKEND_WEBSOCKET_KEY })
  16. })
  17. .post('/settings', async ({ body, set, redirect }) => {
  18. const postDataEnabled = body?.postDataEnabled
  19. const cloudURL = body?.cloudURL
  20. const websocketKey = body?.websocketKey
  21. if (!cloudURL) {
  22. set.headers['content-type'] = 'text/html; charset=utf8'
  23. return eta.render(`${langName}/settings`, { wifiIPv4: getWifiIPv4(), lang, error: `noCloudURL` })
  24. }
  25. if (!websocketKey) {
  26. set.headers['content-type'] = 'text/html; charset=utf8'
  27. return eta.render(`${langName}/settings`, { wifiIPv4: getWifiIPv4(), lang, error: `noWebsocketKey` })
  28. }
  29. await editEnvVariable(`POST_DATA_ENABLED`, postDataEnabled ?? "false")
  30. await editEnvVariable(`BACKEND_URL`, cloudURL)
  31. await editEnvVariable(`BACKEND_WEBSOCKET_KEY`, websocketKey)
  32. return redirect(`${langName === `sk` ? `/` : `/en`}`)
  33. })
  34. .get('/currentData', () => {
  35. const data = Meteostanica.getData()
  36. return data?.[0]
  37. })