]> Untitled Git - lemmy-ui.git/blobdiff - src/shared/env.ts
Documenting and changing a few env vars. Fixes #661 (#739)
[lemmy-ui.git] / src / shared / env.ts
index 3d5533deee47b0ca4f24a38bfec588dd64a2c719..12260e151106b9c20cc64088612a3c19f5fc9999 100644 (file)
@@ -1,15 +1,51 @@
-import { isBrowser } from './utils';
-
-const nodeHostname = process.env.LEMMY_HOST || 'localhost'; // used for local dev
-const host = isBrowser() ? window.location.hostname : nodeHostname;
-const secure = isBrowser() && window.location.protocol == 'https:' ? 's' : '';
-const port = isBrowser()
-  ? window.location.port == '1234' || window.location.port == '1235'
-    ? 8536
-    : window.location.port
-  : 8536;
-const endpoint = `${host}:${port}`;
-
-export const wsUri = `ws${secure}://${endpoint}/api/v1/ws`;
-export const httpUri = `http${secure}://${endpoint}/api/v1`;
-export const pictrsUri = `http${secure}://${endpoint}/pictrs/image`;
+import { isBrowser } from "./utils";
+
+const testHost = "0.0.0.0:8536";
+
+let internalHost =
+  (!isBrowser() && process.env.LEMMY_UI_LEMMY_INTERNAL_HOST) || testHost; // used for local dev
+export let externalHost: string;
+let host: string;
+let wsHost: string;
+let secure: string;
+
+if (isBrowser()) {
+  // browser
+  const lemmyConfig =
+    typeof window.lemmyConfig !== "undefined" ? window.lemmyConfig : {};
+
+  externalHost = `${window.location.hostname}${
+    ["1234", "1235"].includes(window.location.port)
+      ? ":8536"
+      : window.location.port == ""
+      ? ""
+      : `:${window.location.port}`
+  }`;
+
+  host = externalHost;
+  wsHost = lemmyConfig.wsHost || host;
+  secure = window.location.protocol == "https:" ? "s" : "";
+} else {
+  // server-side
+  externalHost = process.env.LEMMY_UI_LEMMY_EXTERNAL_HOST || testHost;
+  host = internalHost;
+  wsHost = process.env.LEMMY_UI_LEMMY_WS_HOST || externalHost;
+  secure = process.env.LEMMY_UI_HTTPS == "true" ? "s" : "";
+}
+
+export const httpBaseInternal = `http://${host}`; // Don't use secure here
+export const httpBase = `http${secure}://${host}`;
+export const wsUriBase = `ws${secure}://${wsHost}`;
+export const wsUri = `${wsUriBase}/api/v3/ws`;
+export const pictrsUri = `${httpBase}/pictrs/image`;
+export const isHttps = secure.endsWith("s");
+
+console.log(`httpbase: ${httpBase}`);
+console.log(`wsUri: ${wsUri}`);
+console.log(`isHttps: ${isHttps}`);
+
+// This is for html tags, don't include port
+const httpExternalUri = `http${secure}://${externalHost.split(":")[0]}`;
+export function httpExternalPath(path: string) {
+  return `${httpExternalUri}${path}`;
+}