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) {