Compare commits

...

6 Commits

Author SHA1 Message Date
owenrees 1245bf74c2 no string for maintenance mode 2026-07-13 21:04:24 +02:00
owenrees 908dd9b57b parse maintenance mode message 2026-07-13 21:00:26 +02:00
owenrees 18f86125da pass build args for Vite 2026-07-13 20:43:25 +02:00
owenrees f4ff9d8c68 pass build args for Vite 2026-07-13 20:40:18 +02:00
owenrees 7994f79e02 remove build envs, change zod items to url 2026-07-13 20:31:33 +02:00
owenrees d11d360cbf print mopre detailed error logs 2026-07-13 20:25:52 +02:00
3 changed files with 18 additions and 7 deletions
+3 -3
View File
@@ -35,9 +35,9 @@ jobs:
build-args: | build-args: |
VITE_API_BASE_URL=https://api.chess-scribe.org/api/v1 VITE_API_BASE_URL=https://api.chess-scribe.org/api/v1
VITE_MATOMO_URL=https://analytics.owenrees.eu VITE_MATOMO_URL=https://analytics.owenrees.eu
VITE_MATOMO_SITE_ID=3 VITE_MATOMO_SITE_ID="3"
VITE_MAINTENANCE_MODE=false VITE_MAINTENANCE_MODE=
VITE_MAINTENANCE_MODE_MESSAGE=ChessScribe is currently undergoing maintenance. Some features may be unavailable. VITE_MAINTENANCE_MODE_MESSAGE="ChessScribe is currently undergoing maintenance. Some features may be unavailable."
deploy: deploy:
needs: publish needs: publish
+11 -2
View File
@@ -1,17 +1,26 @@
import { Link } from "@tanstack/react-router"; import { Link } from "@tanstack/react-router";
import { Image } from "@unpic/react"; import { Image } from "@unpic/react";
import { z } from "zod";
import MaintenanceModeBanner from "#/components/MaintenanceModeBanner.tsx"; import MaintenanceModeBanner from "#/components/MaintenanceModeBanner.tsx";
import { env } from "#/env.ts"; import { env } from "#/env.ts";
import logo from "@/assets/images/logo.svg?url"; import logo from "@/assets/images/logo.svg?url";
export default function Header() { export default function Header() {
const maintenanceModeMessage = env.VITE_MAINTENANCE_MODE
? z
.string()
.transform((value) => (value.trim() === "" ? null : value))
.parse(env.VITE_MAINTENANCE_MODE_MESSAGE)
: null;
return ( return (
<header> <header>
{env.VITE_MAINTENANCE_MODE ? ( {maintenanceModeMessage ? (
<div className="absolute w-full"> <div className="absolute w-full">
<MaintenanceModeBanner message={env.VITE_MAINTENANCE_MODE_MESSAGE} /> <MaintenanceModeBanner message={maintenanceModeMessage} />
</div> </div>
) : null} ) : null}
<nav className="w-full max-w-screen-2xl place-self-center p-8"> <nav className="w-full max-w-screen-2xl place-self-center p-8">
<div className="container mx-auto flex items-center justify-between"> <div className="container mx-auto flex items-center justify-between">
<div className="flex items-center"> <div className="flex items-center">
+4 -2
View File
@@ -1,8 +1,8 @@
import { z } from "zod"; import { z } from "zod";
const clientSchema = z.object({ const clientSchema = z.object({
VITE_API_BASE_URL: z.string("Invalid API Base URL format"), VITE_API_BASE_URL: z.url("Invalid API Base URL format"),
VITE_MATOMO_URL: z.string("Invalid URL format"), VITE_MATOMO_URL: z.url("Invalid URL format"),
VITE_MATOMO_SITE_ID: z.string("Invalid Site ID"), VITE_MATOMO_SITE_ID: z.string("Invalid Site ID"),
VITE_MAINTENANCE_MODE: z.string("Invalid Maintenance Mode"), VITE_MAINTENANCE_MODE: z.string("Invalid Maintenance Mode"),
VITE_MAINTENANCE_MODE_MESSAGE: z.string().optional(), VITE_MAINTENANCE_MODE_MESSAGE: z.string().optional(),
@@ -27,6 +27,7 @@ const getEnv = () => {
const _env = fullSchema.safeParse(rawEnv); const _env = fullSchema.safeParse(rawEnv);
if (!_env.success) { if (!_env.success) {
console.error("❌ Invalid Server Environment Variables:"); console.error("❌ Invalid Server Environment Variables:");
console.error(JSON.stringify(_env.error.format(), null, 2));
throw new Error("Invalid environment variables"); throw new Error("Invalid environment variables");
} }
return _env.data; return _env.data;
@@ -34,6 +35,7 @@ const getEnv = () => {
const _env = clientSchema.safeParse(rawEnv); const _env = clientSchema.safeParse(rawEnv);
if (!_env.success) { if (!_env.success) {
console.error("❌ Invalid Client Environment Variables:"); console.error("❌ Invalid Client Environment Variables:");
console.error(JSON.stringify(_env.error.format(), null, 2));
throw new Error("Invalid environment variables"); throw new Error("Invalid environment variables");
} }
return _env.data as z.infer<typeof fullSchema>; return _env.data as z.infer<typeof fullSchema>;