diff --git a/__tests__/paths.spec.ts b/__tests__/paths.spec.ts index e93cc78..2941781 100644 --- a/__tests__/paths.spec.ts +++ b/__tests__/paths.spec.ts @@ -42,6 +42,20 @@ describe('Path generation', () => { beforeEach(() => { window._oc_webroot = '' window._oc_appswebroots = { forms: '/apps-extra/forms' } + + window.OC = { + coreApps: ['', 'admin', 'log', 'core/search', 'core', '3rdparty'], + } + }) + + test('missing core apps global variable', () => { + delete window.OC.coreApps + expect(generateFilePath('forms', '', 'file.js')).toBe('/apps-extra/forms/file.js') + }) + + test('missing OC global variable (unit tests)', () => { + delete window.OC + expect(generateFilePath('forms', '', 'file.js')).toBe('/apps-extra/forms/file.js') }) test('non core PHP index file', () => { diff --git a/lib/index.ts b/lib/index.ts index 969fd21..1c08b76 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -162,9 +162,10 @@ export const imagePath = (app: string, file: string) => { * @return {string} URL with webroot for a file in an app */ export const generateFilePath = (app: string, type: string, file: string) => { - const isCore = window?.OC?.coreApps?.indexOf(app) !== -1 + const isCore = window?.OC?.coreApps?.includes(app) ?? false + const isPHP = file.slice(-3) === 'php' let link = getRootUrl() - if (file.substring(file.length - 3) === 'php' && !isCore) { + if (isPHP && !isCore) { link += `/index.php/apps/${app}` if (type) { link += `/${encodeURI(type)}` @@ -172,32 +173,26 @@ export const generateFilePath = (app: string, type: string, file: string) => { if (file !== 'index.php') { link += `/${file}` } - } else if (file.substring(file.length - 3) !== 'php' && !isCore) { + } else if (!isPHP && !isCore) { link = getAppRootUrl(app) if (type) { - link += '/' + type + '/' + link += `/${type}/` } - if (link.substring(link.length - 1) !== '/') { + if (link.at(-1) !== '/') { link += '/' } link += file } else { if ((app === 'settings' || app === 'core' || app === 'search') && type === 'ajax') { - link += '/index.php/' - } else { - link += '/' + link += '/index.php' } - if (!isCore) { - link += 'apps/' - } - if (app !== '') { - app += '/' - link += app + if (app) { + link += `/${app}` } if (type) { - link += type + '/' + link += `/${type}` } - link += file + link += `/${file}` } return link }