aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-03-22 03:42:05 +0000
committerFuwn <[email protected]>2026-03-22 03:42:05 +0000
commit51949f1119cc58c7cb72e3fb8b23656ef1efa99c (patch)
tree9cbfd213a82abbe37ce10a6c2f7a557cb68e78e2 /src/lib
parentchore: remove stale websocket backup (diff)
downloaddue.moe-51949f1119cc58c7cb72e3fb8b23656ef1efa99c.tar.xz
due.moe-51949f1119cc58c7cb72e3fb8b23656ef1efa99c.zip
refactor: extract app origin config
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Settings/Categories/RSSFeeds.svelte6
-rw-r--r--src/lib/Utility/appOrigin.ts32
-rw-r--r--src/lib/Utility/image.ts4
-rw-r--r--src/lib/Utility/proxy.ts4
-rw-r--r--src/lib/Utility/root.ts6
5 files changed, 40 insertions, 12 deletions
diff --git a/src/lib/Settings/Categories/RSSFeeds.svelte b/src/lib/Settings/Categories/RSSFeeds.svelte
index bf40eab4..fee411f4 100644
--- a/src/lib/Settings/Categories/RSSFeeds.svelte
+++ b/src/lib/Settings/Categories/RSSFeeds.svelte
@@ -1,7 +1,7 @@
<script lang="ts">
import { options } from "$lib/Notification/options";
import { addNotification } from "$lib/Notification/store";
-import { env } from "$env/dynamic/public";
+import { appOrigin } from "$lib/Utility/appOrigin";
import locale from "$stores/locale";
import SettingHint from "../SettingHint.svelte";
import tooltip from "$lib/Tooltip/tooltip";
@@ -17,9 +17,7 @@ export let user: { accessToken: string; refreshToken: string };
})
);
navigator.clipboard.writeText(
- `https://${
- env.PUBLIC_ANILIST_REDIRECT_URI?.includes('192.168') ? '192.168.1.60:5173' : 'due.moe'
- }/feeds/activity-notifications?token=${user.accessToken}&refresh=${user.refreshToken}`
+ `${appOrigin()}/feeds/activity-notifications?token=${user.accessToken}&refresh=${user.refreshToken}`
);
}}
>
diff --git a/src/lib/Utility/appOrigin.ts b/src/lib/Utility/appOrigin.ts
new file mode 100644
index 00000000..8d534d81
--- /dev/null
+++ b/src/lib/Utility/appOrigin.ts
@@ -0,0 +1,32 @@
+import { browser, dev } from "$app/environment";
+import { env } from "$env/dynamic/public";
+
+const LOCAL_ORIGIN = "http://localhost:5173";
+const PRODUCTION_ORIGIN = "https://due.moe";
+
+const normaliseOrigin = (origin: string) =>
+ origin.endsWith("/") ? origin.slice(0, -1) : origin;
+
+const isPrivateHostname = (hostname: string) =>
+ hostname === "localhost" ||
+ hostname === "127.0.0.1" ||
+ hostname.endsWith(".local") ||
+ /^10\./.test(hostname) ||
+ /^192\.168\./.test(hostname) ||
+ /^172\.(1[6-9]|2\d|3[0-1])\./.test(hostname);
+
+export const appOrigin = () => {
+ if (browser) return window.location.origin;
+
+ if (env.PUBLIC_APP_ORIGIN) return normaliseOrigin(env.PUBLIC_APP_ORIGIN);
+
+ return dev ? LOCAL_ORIGIN : PRODUCTION_ORIGIN;
+};
+
+export const isLocalApp = () => {
+ const { hostname } = new URL(appOrigin());
+
+ return dev || isPrivateHostname(hostname);
+};
+
+export { LOCAL_ORIGIN, PRODUCTION_ORIGIN };
diff --git a/src/lib/Utility/image.ts b/src/lib/Utility/image.ts
index 2d08e62f..c1c2ae0e 100644
--- a/src/lib/Utility/image.ts
+++ b/src/lib/Utility/image.ts
@@ -1,9 +1,9 @@
-import { env } from "$env/dynamic/public";
+import { isLocalApp } from "$lib/Utility/appOrigin";
export const cdn = (urlString: string | undefined) =>
!urlString ||
!["http", "https"].some((protocol) => urlString.startsWith(protocol)) ||
- env.PUBLIC_ANILIST_REDIRECT_URI?.includes("localhost") ||
+ isLocalApp() ||
[
"api.telegram.org",
"telegra.ph",
diff --git a/src/lib/Utility/proxy.ts b/src/lib/Utility/proxy.ts
index c6577ac0..32f31226 100644
--- a/src/lib/Utility/proxy.ts
+++ b/src/lib/Utility/proxy.ts
@@ -1,9 +1,9 @@
-import { env } from "$env/dynamic/public";
+import { isLocalApp } from "$lib/Utility/appOrigin";
export const proxy = (url: string, disable = false) => {
const randomKey = Math.floor(Math.random() * 90) + 10;
- return env.PUBLIC_ANILIST_REDIRECT_URI?.includes("localhost") && !disable
+ return isLocalApp() && !disable
? url
: `https://proxy.due.moe/?d2=${btoa(
url
diff --git a/src/lib/Utility/root.ts b/src/lib/Utility/root.ts
index bf8bb11f..a69755e5 100644
--- a/src/lib/Utility/root.ts
+++ b/src/lib/Utility/root.ts
@@ -1,8 +1,6 @@
-import { env } from "$env/dynamic/public";
+import { appOrigin, LOCAL_ORIGIN } from "$lib/Utility/appOrigin";
export const root = (path: string, enable = false) =>
- env.PUBLIC_ANILIST_REDIRECT_URI?.includes("localhost") || enable
- ? `http://localhost:5173${path}`
- : `https://due.moe${path}`;
+ `${enable ? LOCAL_ORIGIN : appOrigin()}${path}`;
export default root;