diff options
| author | Fuwn <[email protected]> | 2026-03-22 03:42:05 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-03-22 03:42:05 +0000 |
| commit | 51949f1119cc58c7cb72e3fb8b23656ef1efa99c (patch) | |
| tree | 9cbfd213a82abbe37ce10a6c2f7a557cb68e78e2 /src/lib | |
| parent | chore: remove stale websocket backup (diff) | |
| download | due.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.svelte | 6 | ||||
| -rw-r--r-- | src/lib/Utility/appOrigin.ts | 32 | ||||
| -rw-r--r-- | src/lib/Utility/image.ts | 4 | ||||
| -rw-r--r-- | src/lib/Utility/proxy.ts | 4 | ||||
| -rw-r--r-- | src/lib/Utility/root.ts | 6 |
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; |