From 85b6a0628dd18cc886003f521fe948d5dbc36c49 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Wed, 12 Nov 2025 22:10:04 +0100 Subject: [PATCH] fix(files_sharing): use webroot for public links Regression of https://github.com/nextcloud/server/pull/55750 Signed-off-by: Ferdinand Thiessen --- apps/files_sharing/src/utils/generateUrl.spec.ts | 14 +++++++++++++- apps/files_sharing/src/utils/generateUrl.ts | 4 ++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/files_sharing/src/utils/generateUrl.spec.ts b/apps/files_sharing/src/utils/generateUrl.spec.ts index 9f4234199ef..8c76386b602 100644 --- a/apps/files_sharing/src/utils/generateUrl.spec.ts +++ b/apps/files_sharing/src/utils/generateUrl.spec.ts @@ -3,13 +3,25 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ -import { describe, expect, it, vi } from 'vitest' +import { beforeEach, describe, expect, it, vi } from 'vitest' import { generateFileUrl } from './generateUrl.ts' const getCapabilities = vi.hoisted(() => vi.fn()) vi.mock('@nextcloud/capabilities', () => ({ getCapabilities })) describe('generateFileUrl', () => { + beforeEach(() => window._oc_webroot = '') + + /** + * Regression test of https://github.com/nextcloud/server/issues/56374 + */ + it('should work without globalscale and webroot', () => { + window._oc_webroot = '/nextcloud' + getCapabilities.mockReturnValue({ globalscale: null }) + const url = generateFileUrl(12345) + expect(url).toBe('http://nextcloud.local/nextcloud/index.php/f/12345') + }) + it('should work without globalscale', () => { getCapabilities.mockReturnValue({ globalscale: null }) const url = generateFileUrl(12345) diff --git a/apps/files_sharing/src/utils/generateUrl.ts b/apps/files_sharing/src/utils/generateUrl.ts index 0d9dba5e1b7..267442af2c7 100644 --- a/apps/files_sharing/src/utils/generateUrl.ts +++ b/apps/files_sharing/src/utils/generateUrl.ts @@ -4,7 +4,7 @@ */ import { getCapabilities } from '@nextcloud/capabilities' -import { generateUrl } from '@nextcloud/router' +import { generateUrl, getBaseUrl } from '@nextcloud/router' interface IGlobalScaleCapabilities { token?: string @@ -14,7 +14,7 @@ interface IGlobalScaleCapabilities { * @param fileid - The file ID to generate the direct file link for */ export function generateFileUrl(fileid: number): string { - const baseURL = window.location.protocol + '//' + window.location.host + const baseURL = getBaseUrl() const { globalscale } = getCapabilities() as { globalscale?: IGlobalScaleCapabilities } if (globalscale?.token) {