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

META-INF.resources.js.components.ModalDeleteObjectEntry.tsx Maven / Gradle / Ivy

The newest version!
/**
 * 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 ClayButton from '@clayui/button';
import ClayModal, {useModal} from '@clayui/modal';
import {API, openToast} from '@liferay/object-js-components-web';
import React, {useEffect, useState} from 'react';

interface ModalDeleteObjectEntryProps {
	byExternalReferenceCodePath: string;
}

interface ModalDeleteObjectEntryState {
	deletionErrorMessage: string | null;
	objectEntry: ObjectEntry | null;
	visible: boolean;
}

export default function ModalDeleteObjectEntry({
	byExternalReferenceCodePath,
}: ModalDeleteObjectEntryProps) {
	const [modalDeleteObjectEntryState, setModalDeleteObjectEntryState] =
		useState({
			deletionErrorMessage: null,
			objectEntry: null,
			visible: false,
		});

	const {observer, onClose} = useModal({
		onClose: () => {
			setModalDeleteObjectEntryState({
				deletionErrorMessage: null,
				objectEntry: null,
				visible: false,
			});
		},
	});

	const onSubmit = async () => {
		try {
			await API.deleteItem(
				`${byExternalReferenceCodePath}/${modalDeleteObjectEntryState.objectEntry?.externalReferenceCode}`
			);

			openToast({
				message: Liferay.Language.get(
					'your-request-completed-successfully'
				),
				type: 'success',
			});

			onClose();

			setTimeout(() => window.location.reload(), 1000);
		}
		catch (error) {
			setModalDeleteObjectEntryState((prevState) => ({
				...prevState,
				deletionErrorMessage: (error as Error).message,
			}));
		}
	};

	useEffect(() => {
		const openModal = ({objectEntry}: {objectEntry: ObjectEntry}) => {
			setModalDeleteObjectEntryState((prevState) => ({
				...prevState,
				deletionErrorMessage: null,
				objectEntry,
				visible: true,
			}));
		};

		Liferay.on('openModalDeleteObjectEntry', openModal);

		return () =>
			Liferay.detach(
				'openModalDeleteObjectEntry',
				openModal as () => void
			);
	}, []);

	return modalDeleteObjectEntryState.visible ? (
		
			
				{modalDeleteObjectEntryState.deletionErrorMessage
					? Liferay.Language.get('deletion-not-possible')
					: Liferay.Language.get('delete-entry')}
			

			
				{modalDeleteObjectEntryState.deletionErrorMessage ??
					Liferay.Language.get(
						'it-may-affect-many-records-are-you-sure-you-want-to-delete-this-entry'
					)}
			

			
						{!modalDeleteObjectEntryState.deletionErrorMessage && (
							
								{Liferay.Language.get('cancel')}
							
						)}

						
								modalDeleteObjectEntryState.deletionErrorMessage
									? onClose()
									: onSubmit()
							}
						>
							{modalDeleteObjectEntryState.deletionErrorMessage
								? Liferay.Language.get('close')
								: Liferay.Language.get('delete')}
						
					
				}
			/>
		
	) : null;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy