All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.js.DownloadHelper.js Maven / Gradle / Ivy

/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

import {fetch} from 'frontend-js-web';

import {HEADLESS_BATCH_ENGINE_URL} from './constants';

export function getEndpoint(type, externalReferenceCode) {
	externalReferenceCode = encodeURIComponent(externalReferenceCode);
	const endpoints = {
		batchPlannerTemplate: `/o/batch-planner/v1.0/plans/${externalReferenceCode}/template`,
		errorReport: `${HEADLESS_BATCH_ENGINE_URL}/import-task/by-external-reference-code/${externalReferenceCode}/failed-items/report`,
		exportFile: `${HEADLESS_BATCH_ENGINE_URL}/export-task/by-external-reference-code/${externalReferenceCode}/content`,
		importFile: `${HEADLESS_BATCH_ENGINE_URL}/import-task/by-external-reference-code/${externalReferenceCode}/content`,
	};

	return endpoints[type];
}

export function downloadFile({externalReferenceCode, fileName, fileType}) {
	fetch(getEndpoint(fileType, externalReferenceCode)).then((response) => {
		response.blob().then((blob) => {
			const LinkElement = document.createElement('a');

			LinkElement.href = URL.createObjectURL(blob);

			if (fileName === undefined) {
				fileName = response.headers
					.get('Content-Disposition')
					.match(/filename=(.*)/)[1];
			}

			LinkElement.download = fileName;

			document.body.appendChild(LinkElement);

			LinkElement.click();

			LinkElement.remove();
		});
	});
}

export default function ({
	HTMLElementId,
	externalReferenceCode,
	namespace,
	type,
}) {
	document
		.getElementById(HTMLElementId)
		.addEventListener('click', (event) => {
			event.preventDefault();

			if (type === 'batchPlannerTemplate') {
				const valueElement = document.getElementById(
					`${namespace}internalClassNameKey`
				);

				externalReferenceCode =
					valueElement.options[valueElement.options.selectedIndex]
						.value;
			}

			downloadFile({externalReferenceCode, fileType: type});
		});
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy