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