merge BASE_URL and BASE_PASH into ROOT_URL

This commit is contained in:
bytedream committed 2026-10-31 03:18:42 +01:00
1 parent e0a0b188ad
commit e22c664aae
22 files changed
+56 -46

No files matched your search

+3 -3
View File
@@ -3,7 +3,7 @@ import { int, mysqlTable, varchar } from 'drizzle-orm/mysql-core';
import { user } from '@db/schema/user.ts';
import { eq } from 'drizzle-orm';
import { generateRandomString } from '@util/random.ts';
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
type Database = MySql2Database<{ directSignup: typeof directSignup }>;
@@ -36,7 +36,7 @@ export async function addDirectSignup(db: Database, _values: AddDirectSignupReq)
code: code
});
return { code: code, url: `${BASE_HOST}/${BASE_PATH}/signup/${code}` };
return { code: code, url: siteUrl(`signup/${code}`) };
}
export async function setDirectSignupUser(db: Database, values: SetDirectSignupUserReq) {
@@ -61,7 +61,7 @@ export async function getDirectSignups(db: Database, _values: GetDirectSignupsRe
.from(directSignup)
.leftJoin(user, eq(directSignup.userId, user.id));
return directSignups.map((d) => ({ ...d, url: `${BASE_PATH}/signup/${d.code}` }));
return directSignups.map((d) => ({ ...d, url: siteUrl(`signup/${d.code}`) }));
}
export async function getDirectSignupByCode(db: Database, values: GetDirectSignupByCodeReq) {
+2 -2
View File
@@ -3,7 +3,7 @@ import type { MySql2Database } from 'drizzle-orm/mysql2';
import { and, desc, eq, isNotNull, like } from 'drizzle-orm';
import { reportStatus } from './reportStatus.ts';
import { generateRandomString } from '@util/random.ts';
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
import { strikeReason } from '@db/schema/strikeReason.ts';
import { strike } from '@db/schema/strike.ts';
import { user } from '@db/schema/user.ts';
@@ -70,7 +70,7 @@ export async function addReport(db: Database, values: AddReportReq) {
})
.$returningId();
return Object.assign(r[0], { url: `${BASE_HOST}/${BASE_PATH}/report/${urlHash}` });
return Object.assign(r[0], { url: siteUrl(`report/${urlHash}`) });
}
export async function editReport(db: Database, values: EditReportReq) {
+2 -2
View File
@@ -1,7 +1,7 @@
---
import '@styles/global.css';
import { ClientRouter } from 'astro:transitions';
import { BASE_PATH } from 'astro:env/server';
import { siteBase } from '@util/url.ts';
import logo512 from '@assets/img/logo-512.webp';
import favicon from '@assets/favicon.png';
@@ -36,7 +36,7 @@ const { title, description, keywords, openGraph, viewTransition } = Astro.props;
<slot name="head" />
{description && <meta name="description" content={description} />}
{keywords && <meta name="keywords" content={keywords.join(', ')} />}
<base href=`${BASE_PATH}/` />
<base href={siteBase()} />
</head>
<body>
<slot />
+2 -2
View File
@@ -4,10 +4,10 @@ import Admins from '@app/admin/admins/Admins.svelte';
import SidebarActions from '@app/admin/admins/SidebarActions.svelte';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Admin);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
---
<AdminLayout title="Website Admins">
+2 -2
View File
@@ -1,13 +1,13 @@
---
import { Session } from '@util/session';
import { Permissions } from '@util/permissions';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import SidebarActions from '@app/admin/strikeReasons/SidebarActions.svelte';
import StrikeReasons from '@app/admin/strikeReasons/StrikeReasons.svelte';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Reports);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
---
<AdminLayout title="Reports">
+2 -2
View File
@@ -3,11 +3,11 @@ import Feedback from '@app/admin/feedback/Feedback.svelte';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
import SidebarActions from '@app/admin/feedback/SidebarActions.svelte';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Feedback);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
---
<AdminLayout title="Feedback">
+2 -2
View File
@@ -1,10 +1,10 @@
---
import { Session } from '@util/session.ts';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
const session = Session.sessionFromCookies(Astro.cookies);
if (!session) return Astro.redirect(`${BASE_PATH}/admin/login`);
if (!session) return Astro.redirect(siteUrl('admin/login'));
---
<AdminLayout title="Admin Panel" />
+2 -2
View File
@@ -1,13 +1,13 @@
---
import { Session } from '@util/session';
import { Permissions } from '@util/permissions';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import SidebarActions from '@app/admin/reports/SidebarActions.svelte';
import Reports from '@app/admin/reports/Reports.svelte';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Reports);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
---
<AdminLayout title="Reports">
+2 -2
View File
@@ -4,10 +4,10 @@ import Settings from '@app/admin/settings/Settings.svelte';
import { db } from '@db/database.ts';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Settings);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
const settings = await db.getSettings({});
---
+2 -2
View File
@@ -1,12 +1,12 @@
---
import { Session } from '@util/session';
import { Permissions } from '@util/permissions';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import Tools from '@app/admin/tools/Tools.svelte';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Tools);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
---
<AdminLayout title="Tools">
+2 -2
View File
@@ -4,10 +4,10 @@ import BlockedUsers from '@app/admin/blockedUsers/BlockedUsers.svelte';
import SidebarActions from '@app/admin/blockedUsers/SidebarActions.svelte';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Users);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
---
<AdminLayout title="Blockierte Nutzer">
@@ -1,13 +1,13 @@
---
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
import AdminLayout from '@layouts/admin/AdminLayout.astro';
import SidebarActions from '@app/admin/directInvitations/SidebarActions.svelte';
import DirectInvitations from '@app/admin/directInvitations/DirectInvitations.svelte';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Reports);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
---
<AdminLayout title="Direkte Einladungen">
+2 -2
View File
@@ -4,10 +4,10 @@ import Users from '@app/admin/users/Users.svelte';
import SidebarActions from '@app/admin/users/SidebarActions.svelte';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Users);
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
if (!session) return Astro.redirect(siteUrl('admin'));
---
<AdminLayout title="Registrierte Nutzer">
+2 -2
View File
@@ -1,7 +1,7 @@
import { externalApi } from '../_api.ts';
import { z } from 'astro:schema';
import { db } from '@db/database.ts';
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
export const POST = externalApi({
input: z.object({
@@ -19,7 +19,7 @@ export const POST = externalApi({
const response = feedbacks.map((feedback) => ({
uuid: feedback.uuid,
url: `${BASE_HOST}/${BASE_PATH}/feedback/${feedback.urlHash}`
url: siteUrl(`feedback/${feedback.urlHash}`)
}));
return new Response(JSON.stringify({ feedback: response }), { status: 200 });
+2 -2
View File
@@ -2,7 +2,7 @@ import { externalApi } from '../_api.ts';
import { z } from 'astro:schema';
import { db } from '@db/database.ts';
import { sendWebhook, WebhookAction } from '@util/webhook.ts';
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
export const GET = externalApi({
auth: true,
@@ -17,7 +17,7 @@ export const GET = externalApi({
reason: report.reason,
created: report.createdAt?.getTime() ?? null,
status: report.status?.status ?? null,
url: `${BASE_HOST}/${BASE_PATH}/report/${report.urlHash}`
url: siteUrl(`report/${report.urlHash}`)
}))
}),
{ status: 200 }
+3 -3
View File
@@ -1,6 +1,6 @@
import { externalApi } from '../../_api.ts';
import { db } from '@db/database.ts';
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
export const GET = externalApi({
auth: true,
@@ -18,14 +18,14 @@ export const GET = externalApi({
reason: report.reason,
created: report.createdAt?.getTime() ?? null,
status: report.status?.status ?? null,
url: `${BASE_HOST}/${BASE_PATH}/report/${report.urlHash}`
url: siteUrl(`report/${report.urlHash}`)
})),
to_self: toSelf.map((report) => ({
reporter: report.reporter?.uuid ?? null,
reason: report.reason,
created: report.createdAt?.getTime() ?? null,
status: report.status?.status ?? null,
url: `${BASE_HOST}/${BASE_PATH}/report/${report.urlHash}`
url: siteUrl(`report/${report.urlHash}`)
}))
}),
{ status: 200 }
+4 -4
View File
@@ -2,7 +2,7 @@
import WebsiteLayout from '@layouts/website/WebsiteLayout.astro';
import VideoPlayer from '@app/website/video/VideoPlayer.svelte';
import { getVideoMetadata, resolveVideo } from '@util/video.ts';
import { BASE_PATH } from 'astro:env/server';
import { siteUrl } from '@util/url.ts';
const { name } = Astro.params;
@@ -13,13 +13,13 @@ const metadata = await getVideoMetadata(video);
if (!metadata) return new Response(null, { status: 404 });
const { title, description, width, height, duration } = metadata;
const streamPath = `${BASE_PATH}/video/${encodeURIComponent(video.name)}/stream`;
const streamUrl = siteUrl(`video/${encodeURIComponent(video.name)}/stream`);
---
<WebsiteLayout title={`${title} - Video`} description={description ?? undefined} openGraph="minimal">
<Fragment slot="head">
<meta property="og:type" content="video" />
<meta property="og:video" content={streamPath} />
<meta property="og:video" content={streamUrl} />
<meta property="og:video:type" content={video.contentType} />
{width && <meta property="og:video:width" content={width.toString()} />}
{height && <meta property="og:video:height" content={height.toString()} />}
@@ -32,7 +32,7 @@ const streamPath = `${BASE_PATH}/video/${encodeURIComponent(video.name)}/stream`
<h1 class="mt-1 text-2xl font-semibold break-words lg:text-4xl">{title}</h1>
</div>
<VideoPlayer client:load src={streamPath} type={video.contentType} title={title} />
<VideoPlayer client:load src={streamUrl} type={video.contentType} title={title} />
{description && (
<p class="max-w-3xl text-base leading-relaxed whitespace-pre-line text-base-content/70">{description}</p>
+11
View File
@@ -0,0 +1,11 @@
import { ROOT_URL } from 'astro:env/server';
const rootUrl = new URL(ROOT_URL.endsWith('/') ? ROOT_URL : `${ROOT_URL}/`);
export function siteBase(): string {
return rootUrl.pathname;
}
export function siteUrl(path: string): string {
return new URL(path.replace(/^\/+/, ''), rootUrl).href;
}