From 468e934fb1a5b05f88147eb1bbf440daa476dfe1 Mon Sep 17 00:00:00 2001 From: Rijaja <robert.houkula@gmail.com> Date: Mon, 23 Sep 2024 23:29:49 +0200 Subject: [PATCH] redirect front:{update docker-compose dockerfile .env main.tsx},update deps npm --- docker-compose.yml | 5 ++- dockerfile | 2 + frontend/.env | 1 + frontend/package-lock.json | 49 ++++++++++++++++++++++--- frontend/package.json | 3 +- frontend/src/components/Guide/Guide.tsx | 1 + frontend/src/{index.css => main.css} | 0 frontend/src/main.tsx | 36 +++++++++++------- 8 files changed, 77 insertions(+), 20 deletions(-) rename frontend/src/{index.css => main.css} (100%) diff --git a/docker-compose.yml b/docker-compose.yml index 7e22518..95cc2db 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,9 @@ services: app: - build: . + build: + context: . + args: + SATELLISYNC_PREFERRED_BASE_URL: $SATELLISYNC_PREFERRED_BASE_URL ports: - "8080:8080" environment: diff --git a/dockerfile b/dockerfile index 37379b5..d10eb0d 100644 --- a/dockerfile +++ b/dockerfile @@ -1,6 +1,8 @@ # Stage 1: Build React app FROM node:21 AS build-stage WORKDIR /app/frontend +ARG SATELLISYNC_PREFERRED_BASE_URL +ENV VITE_PREFERRED_BASE_URL=$SATELLISYNC_PREFERRED_BASE_URL COPY frontend/package*.json ./ RUN npm install --loglevel verbose COPY frontend/. ./ diff --git a/frontend/.env b/frontend/.env index 7fd26fa..054066a 100644 --- a/frontend/.env +++ b/frontend/.env @@ -1 +1,2 @@ VITE_APP_VERSION="2.2.0" +VITE_PREFERRED_BASE_URL="" diff --git a/frontend/package-lock.json b/frontend/package-lock.json index df43b02..2790144 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,7 +14,8 @@ "react": "^18.2.0", "react-bootstrap": "^2.10.2", "react-dom": "^18.2.0", - "react-markdown": "^8.0.6" + "react-markdown": "^8.0.6", + "react-router-dom": "^6.26.2" }, "devDependencies": { "@types/react": "^18.2.66", @@ -656,6 +657,14 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, + "node_modules/@remix-run/router": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", + "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@restart/hooks": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", @@ -3322,6 +3331,36 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, + "node_modules/react-router": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", + "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "dependencies": { + "@remix-run/router": "1.19.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", + "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "dependencies": { + "@remix-run/router": "1.19.2", + "react-router": "6.26.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -3849,13 +3888,13 @@ } }, "node_modules/vite": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", - "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "version": "5.4.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.7.tgz", + "integrity": "sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==", "dev": true, "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.41", + "postcss": "^8.4.43", "rollup": "^4.20.0" }, "bin": { diff --git a/frontend/package.json b/frontend/package.json index ddaadff..815555c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,7 +16,8 @@ "react": "^18.2.0", "react-bootstrap": "^2.10.2", "react-dom": "^18.2.0", - "react-markdown": "^8.0.6" + "react-markdown": "^8.0.6", + "react-router-dom": "^6.26.2" }, "devDependencies": { "@types/react": "^18.2.66", diff --git a/frontend/src/components/Guide/Guide.tsx b/frontend/src/components/Guide/Guide.tsx index 2f6464d..06f4e77 100644 --- a/frontend/src/components/Guide/Guide.tsx +++ b/frontend/src/components/Guide/Guide.tsx @@ -30,6 +30,7 @@ const Guide = () => { <Tabs className="mb-3 justify-content-center"> {guides.map(service => ( <Tab + key={service.title} eventKey={service.title} title={service.title} style={{ textAlign: "left" }} diff --git a/frontend/src/index.css b/frontend/src/main.css similarity index 100% rename from frontend/src/index.css rename to frontend/src/main.css diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index a43573c..c757b87 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -1,17 +1,27 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.tsx' -import './index.css' +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App.tsx"; +import "./main.css"; -import "@fontsource/noto-sans/300.css" -import "@fontsource/noto-sans/400.css" -import "@fontsource/noto-sans/500.css" -import "@fontsource/noto-sans/700.css" +import "@fontsource/noto-sans/300.css"; +import "@fontsource/noto-sans/400.css"; +import "@fontsource/noto-sans/500.css"; +import "@fontsource/noto-sans/700.css"; import "bootstrap/dist/css/bootstrap.min.css"; -ReactDOM.createRoot(document.getElementById('root')!).render( - <React.StrictMode> - <App /> - </React.StrictMode>, -) +const current_base_url = `${location.protocol}//${location.hostname}${ + location.port ? `:${location.port}` : "" +}`; +const env_url = import.meta.env.VITE_PREFERRED_BASE_URL; +const good_url = env_url === "" ? current_base_url : env_url; + +if (current_base_url != good_url) { + window.location = good_url; +} else { + ReactDOM.createRoot(document.getElementById("root")!).render( + <React.StrictMode> + <App /> + </React.StrictMode> + ); +} -- GitLab