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

META-INF.resources.page_editor.app.services.FragmentService.ts 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 {LayoutData} from '../../types/layout_data/LayoutData';
import {FragmentComposition} from '../actions/addFragmentComposition';
import {FragmentEntryLinkComment} from '../actions/addFragmentEntryLinkComment';
import {
	FragmentEntryLink,
	FragmentEntryLinkMap,
} from '../actions/addFragmentEntryLinks';
import {FragmentEntry} from '../actions/updateFragments';
import {config} from '../config/index';
import {PageContent} from '../utils/usePageContents';
import draftServiceFetch, {OnNetworkStatus} from './draftServiceFetch';
import serviceFetch from './serviceFetch';

export default {
	addComment({
		body,
		fragmentEntryLinkId,
		onNetworkStatus,
		parentCommentId,
	}: {
		body: string;
		fragmentEntryLinkId: string;
		onNetworkStatus: OnNetworkStatus;
		parentCommentId?: string;
	}) {
		const fetchBody: {
			body: string;
			fragmentEntryLinkId: string;
			parentCommentId?: string;
		} = {
			body,
			fragmentEntryLinkId,
		};

		if (parentCommentId) {
			fetchBody.parentCommentId = parentCommentId;
		}

		return draftServiceFetch(
			config.addFragmentEntryLinkCommentURL,
			{body: fetchBody},
			onNetworkStatus
		);
	},

	addFragmentComposition({
		description,
		fileEntryId,
		fragmentCollectionId,
		itemId,
		name,
		onNetworkStatus,
		saveInlineContent,
		saveMappingConfiguration,
		segmentsExperienceId,
	}: {
		description: string;
		fileEntryId?: string;
		fragmentCollectionId: string;
		itemId: string;
		name: string;
		onNetworkStatus: OnNetworkStatus;
		saveInlineContent: boolean;
		saveMappingConfiguration: boolean;
		segmentsExperienceId: string;
	}) {
		return draftServiceFetch<{
			fragmentComposition: FragmentComposition;
			url: string;
		}>(
			config.addFragmentCompositionURL,
			{
				body: {
					description,
					fileEntryId,
					fragmentCollectionId,
					itemId,
					name,
					saveInlineContent,
					saveMappingConfiguration,
					segmentsExperienceId,
				},
			},
			onNetworkStatus
		);
	},

	addFragmentEntryLink({
		fragmentEntryKey,
		groupId,
		onNetworkStatus,
		parentItemId,
		position,
		segmentsExperienceId,
	}: {
		fragmentEntryKey: string;
		groupId: string;
		onNetworkStatus: OnNetworkStatus;
		parentItemId: string;
		position: number;
		segmentsExperienceId: string;
	}) {
		return draftServiceFetch<{
			addedItemId: string;
			fragmentEntryLink: FragmentEntryLink;
			layoutData: LayoutData;
		}>(
			config.addFragmentEntryLinkURL,
			{
				body: {
					fragmentEntryKey,
					groupId,
					parentItemId,
					position,
					segmentsExperienceId,
				},
			},
			onNetworkStatus
		);
	},

	addFragmentEntryLinks({
		fragmentEntryKey,
		groupId,
		onNetworkStatus,
		parentItemId,
		position,
		segmentsExperienceId,
	}: {
		fragmentEntryKey: string;
		groupId: string;
		onNetworkStatus: OnNetworkStatus;
		parentItemId: string;
		position: number;
		segmentsExperienceId: string;
	}) {
		return draftServiceFetch<{
			addedItemId: string;
			fragmentEntryLinks: FragmentEntryLinkMap;
			layoutData: LayoutData;
		}>(
			config.addFragmentEntryLinksURL,
			{
				body: {
					fragmentEntryKey,
					groupId,
					parentItemId,
					position,
					segmentsExperienceId,
				},
			},
			onNetworkStatus
		);
	},

	addStepperFragmentEntryLink({
		fragmentEntryKey,
		groupId,
		numberOfSteps,
		onNetworkStatus,
		parentItemId,
		position,
		segmentsExperienceId,
	}: {
		fragmentEntryKey: string;
		groupId: string;
		numberOfSteps: number;
		onNetworkStatus: OnNetworkStatus;
		parentItemId: string;
		position: number;
		segmentsExperienceId: string;
	}) {
		return draftServiceFetch<{
			addedItemId: string;
			fragmentEntryLink: FragmentEntryLink;
			layoutData: LayoutData;
		}>(
			config.addStepperFragmentEntryLinkURL,
			{
				body: {
					fragmentEntryKey,
					groupId,
					numberOfSteps,
					parentItemId,
					position,
					segmentsExperienceId,
				},
			},
			onNetworkStatus
		);
	},

	deleteComment({
		commentId,
		onNetworkStatus,
	}: {
		commentId: string;
		onNetworkStatus: OnNetworkStatus;
	}) {
		return draftServiceFetch(
			config.deleteFragmentEntryLinkCommentURL,
			{body: {commentId}},
			onNetworkStatus
		);
	},

	duplicateItem({
		itemIds,
		onNetworkStatus,
		segmentsExperienceId,
	}: {
		itemIds: string[];
		onNetworkStatus: OnNetworkStatus;
		segmentsExperienceId: string;
	}) {
		return draftServiceFetch<{
			duplicatedFragmentEntryLinks: FragmentEntryLink[];
			duplicatedItemIds: string[];
			layoutData: LayoutData;
			restrictedItemIds: string[];
		}>(
			config.duplicateItemURL,
			{
				body: {
					itemIds,
					segmentsExperienceId,
				},
			},
			onNetworkStatus
		);
	},

	editComment({
		body,
		commentId,
		onNetworkStatus,
		resolved,
	}: {
		body: string;
		commentId: string;
		onNetworkStatus: OnNetworkStatus;
		resolved: boolean;
	}) {
		return draftServiceFetch(
			config.editFragmentEntryLinkCommentURL,
			{
				body: {
					body,
					commentId,
					resolved,
				},
			},
			onNetworkStatus
		);
	},

	pasteItems({
		itemIds,
		onNetworkStatus,
		parentItemId,
		segmentsExperienceId,
	}: {
		itemIds: string[];
		onNetworkStatus: OnNetworkStatus;
		parentItemId: string;
		segmentsExperienceId: string;
	}) {
		return draftServiceFetch<{
			copiedFragmentEntryLinks: FragmentEntryLink[];
			copiedItemIds: string[];
			layoutData: LayoutData;
			restrictedItemIds: string[];
		}>(
			config.copyItemsURL,
			{
				body: {
					itemIds,
					parentItemId,
					segmentsExperienceId,
				},
			},
			onNetworkStatus
		);
	},

	renderFragmentEntryLinksContent({
		data,
		languageId,
		segmentsExperienceId,
	}: {
		data: Array<{
			fragmentEntryLinkId: string;
			itemClassName?: string | null;
			itemClassPK?: string | null;
			itemExternalReferenceCode?: string | null;
		}>;
		languageId: Liferay.Language.Locale;
		segmentsExperienceId: string;
	}) {
		const body: {
			data: string;
			languageId: Liferay.Language.Locale;
			segmentsExperienceId: string;
		} = {
			data: JSON.stringify(data),
			languageId,
			segmentsExperienceId,
		};

		return serviceFetch<[{content: string; fragmentEntryLinkId: string}]>(
			config.renderFragmentEntriesURL,
			{
				body,
			}
		);
	},

	toggleFragmentHighlighted({
		fragmentEntryKey,
		groupId = '0',
		highlighted,
		onNetworkStatus,
	}: {
		fragmentEntryKey: string;
		groupId?: string;
		highlighted: boolean;
		onNetworkStatus: OnNetworkStatus;
	}) {
		return draftServiceFetch<{highlightedFragments: FragmentEntry[]}>(
			config.updateFragmentsHighlightedConfigurationURL,
			{
				body: {
					fragmentEntryKey,
					groupId,
					highlighted,
				},
			},
			onNetworkStatus
		);
	},

	updateConfigurationValues({
		editableValues,
		fragmentEntryLinkId,
		languageId,
		onNetworkStatus,
		segmentsExperienceId,
	}: {
		editableValues: FragmentEntryLink['editableValues'];
		fragmentEntryLinkId: string;
		languageId: Liferay.Language.Locale;
		onNetworkStatus: OnNetworkStatus;
		segmentsExperienceId: string;
	}) {
		return draftServiceFetch<{
			fragmentEntryLink: FragmentEntryLink;
			layoutData: LayoutData;
			pageContents: PageContent[];
		}>(
			config.updateConfigurationValuesURL,
			{
				body: {
					editableValues: JSON.stringify(editableValues),
					fragmentEntryLinkId,
					languageId,
					segmentsExperienceId,
				},
			},
			onNetworkStatus
		);
	},

	updateEditableValues({
		editableValues,
		fragmentEntryLinkId,
		languageId,
		onNetworkStatus,
		segmentsExperienceId,
	}: {
		editableValues: FragmentEntryLink['editableValues'];
		fragmentEntryLinkId: string;
		languageId: Liferay.Language.Locale;
		onNetworkStatus: OnNetworkStatus;
		segmentsExperienceId: string;
	}) {
		return draftServiceFetch<{
			fragmentEntryLink: FragmentEntryLink;
			pageContents: PageContent[];
		}>(
			config.editFragmentEntryLinkURL,
			{
				body: {
					editableValues: JSON.stringify(editableValues),
					fragmentEntryLinkId,
					languageId,
					segmentsExperienceId,
				},
			},
			onNetworkStatus
		);
	},

	updateSetsOrder({
		fragmentCollectionKeys,
		onNetworkStatus,
		portletCategoryKeys,
	}: {
		fragmentCollectionKeys: string[] | null;
		onNetworkStatus: OnNetworkStatus;
		portletCategoryKeys: string[] | null;
	}) {
		return draftServiceFetch(
			config.updateFragmentPortletSetsSortURL,
			{
				body: {
					fragmentCollectionKeys:
						JSON.stringify(fragmentCollectionKeys) || null,
					portletCategoryKeys:
						JSON.stringify(portletCategoryKeys) || null,
				},
			},
			onNetworkStatus
		);
	},
};




© 2015 - 2025 Weber Informatics LLC | Privacy Policy