-// TODO
-// const host = `${window.location.hostname}`;
-// const port = `${
-// window.location.port == '4444' ? '8536' : window.location.port
-// }`;
-// const endpoint = `${host}:${port}`;
-
-// export const wsUri = `${
-// window.location.protocol == 'https:' ? 'wss://' : 'ws://'
-// }${endpoint}/api/v1/ws`;
-
-const host = '192.168.50.60';
-const port = 8536;
-const endpoint = `${host}:${port}`;
-export const wsUri = `ws://${endpoint}/api/v1/ws`;
-export const httpUri = `http://${endpoint}/api/v1`;
+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}`;
+}