Compare commits

..

1 Commits

Author SHA1 Message Date
Mees Frensel c1c1fa0b0a fix(web): always initialize language manager to set lang and dir 2026-07-07 12:24:49 +02:00
5 changed files with 8 additions and 15 deletions
-3
View File
@@ -23019,7 +23019,6 @@
"slug": {
"description": "Custom URL slug",
"nullable": true,
"pattern": "^[^\\/]*$",
"type": "string"
},
"type": {
@@ -23066,7 +23065,6 @@
"slug": {
"description": "Custom URL slug",
"nullable": true,
"pattern": "^[^\\/]*$",
"type": "string"
}
},
@@ -23147,7 +23145,6 @@
"slug": {
"description": "Custom URL slug",
"nullable": true,
"pattern": "^[^\\/]*$",
"type": "string"
},
"type": {
+3 -9
View File
@@ -18,12 +18,6 @@ const SharedLinkSearchSchema = z
})
.meta({ id: 'SharedLinkSearchDto' });
const SharedLinkSlugSchema = z
.string()
.regex(/^[^\/]*$/, 'forward slash "/" is not allowed')
.nullable()
.describe('Custom URL slug');
const SharedLinkCreateSchema = z
.object({
type: SharedLinkTypeSchema,
@@ -31,7 +25,7 @@ const SharedLinkCreateSchema = z
albumId: z.uuidv4().optional().describe('Album ID (for album sharing)'),
description: z.string().nullable().optional().describe('Link description'),
password: z.string().nullable().optional().describe('Link password'),
slug: SharedLinkSlugSchema.optional(),
slug: z.string().nullable().optional().describe('Custom URL slug'),
expiresAt: isoDatetimeToDate.nullable().describe('Expiration date').default(null).optional(),
allowUpload: z.boolean().optional().describe('Allow uploads'),
allowDownload: z.boolean().default(true).optional().describe('Allow downloads'),
@@ -43,7 +37,7 @@ const SharedLinkEditSchema = z
.object({
description: z.string().nullable().optional().describe('Link description'),
password: z.string().nullable().optional().describe('Link password'),
slug: SharedLinkSlugSchema.optional(),
slug: z.string().nullable().optional().describe('Custom URL slug'),
expiresAt: isoDatetimeToDate.nullish().describe('Expiration date'),
allowUpload: z.boolean().optional().describe('Allow uploads'),
allowDownload: z.boolean().optional().describe('Allow downloads'),
@@ -72,7 +66,7 @@ const SharedLinkResponseSchema = z
allowUpload: z.boolean().describe('Allow uploads'),
allowDownload: z.boolean().describe('Allow downloads'),
showMetadata: z.boolean().describe('Show metadata'),
slug: SharedLinkSlugSchema,
slug: z.string().nullable().describe('Custom URL slug'),
})
.describe('Shared link response')
.meta({ id: 'SharedLinkResponseDto' });
@@ -32,8 +32,8 @@
<div class="mt-4 flex flex-col gap-4">
<div>
<Field label={$t('custom_url')} description={$t('shared_link_custom_url_description')} invalid={slug.includes('/')}>
<Input bind:value={slug} pattern="[^\/]*" autocomplete="off" />
<Field label={$t('custom_url')} description={$t('shared_link_custom_url_description')}>
<Input bind:value={slug} autocomplete="off" />
</Field>
{#if slug}
<Text size="tiny" color="muted" class="pt-2 break-all">/s/{encodeURIComponent(slug)}</Text>
@@ -3,7 +3,7 @@ import { lang } from '$lib/stores/preferences.store';
import { langs } from '$lib/utils/i18n';
class LanguageManager {
constructor() {
init() {
eventManager.on({
AppInit: () => lang.subscribe((lang) => this.setLanguage(lang)),
});
+2
View File
@@ -1,5 +1,6 @@
import { commandPaletteManager } from '@immich/ui';
import { goto } from '$app/navigation';
import { languageManager } from '$lib/managers/language-manager.svelte';
import { serverConfigManager } from '$lib/managers/server-config-manager.svelte';
import { maintenanceCreateUrl, maintenanceReturnUrl, maintenanceShouldRedirect } from '$lib/utils/maintenance';
import { init } from '$lib/utils/server';
@@ -23,6 +24,7 @@ export const load = (async ({ fetch, url }) => {
}
commandPaletteManager.enable();
languageManager.init();
return {
error,