UNPKG

@craftercms/studio-ui

Version:

Services, components, models & utils to build CrafterCMS authoring extensions.

98 lines (96 loc) 3.29 kB
/* * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import { get, postJSON } from '../utils/ajax'; import { map } from 'rxjs/operators'; import { toQueryString } from '../utils/object'; import { createItemActionMap, createItemStateMap } from '../utils/content'; export function fetchItemStates(siteId, path, states, options) { const qs = toQueryString({ siteId, path, states, ...options }); return get(`/studio/api/2/workflow/item_states${qs}`).pipe( map((response) => { const { items, total, offset, limit } = response?.response ?? {}; return Object.assign( items?.map((item) => ({ ...item, stateMap: createItemStateMap(item.state), availableActionsMap: createItemActionMap(item.availableActions) })), { total, offset, limit: limit < options.limit ? options.limit : limit } ); }) ); } export function setItemStates(siteId, items, { ...rest }) { return postJSON('/studio/api/2/workflow/item_states', { siteId, items: items, ...rest }).pipe(map(() => true)); } export function setItemStatesByQuery(siteId, states, update, path) { return postJSON('/studio/api/2/workflow/update_item_states_by_query', { query: { siteId, ...(path && { path }), states }, update }).pipe(map(() => true)); } export function publish(siteId, data) { return postJSON('/studio/api/2/workflow/publish', { siteId, ...data }).pipe(map(() => true)); } export function requestPublish(siteId, data) { return postJSON('/studio/api/2/workflow/request_publish', { siteId, ...data }).pipe(map(() => true)); } export function approve(siteId, data) { return postJSON('/studio/api/2/workflow/approve', { siteId, ...data }).pipe(map(() => true)); } export function reject(siteId, items, comment) { return postJSON('/studio/api/2/workflow/reject', { siteId, items, comment }).pipe(map(() => true)); }