fix(files_sharing): use webroot for public links

Regression of https://github.com/nextcloud/server/pull/55750

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
pull/56427/head
Ferdinand Thiessen 2025-11-12 22:10:04 +07:00
parent 874aee22be
commit 8ed207a307
No known key found for this signature in database
GPG Key ID: 45FAE7268762B400
2 changed files with 17 additions and 3 deletions

@ -3,13 +3,27 @@
* 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)

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