import {apolloWrapper} from "boot/apollo"; import {getOperationName} from "@apollo/client/utilities"; export const setItems = (data, appendItems, itemsModel, totalItemsCount) => { const originalData = appendItems ? [...itemsModel.value] : []; itemsModel.value = [...originalData, ...data.items]; totalItemsCount.value = data.totalItemsCount; return data.items; } export const updateInItems = (items, key, data) => { const idx = items.findIndex(i => i[key] === data[key]); if (idx >= 0) items[idx] = data; else items.push(data); return items; } export const deleteFromItems = (items, key, value) => { const idx = items.findIndex(a => a[key] === value); if (idx < 0) return; items.splice(idx, 1); } export const query = ({isQueryRunning, query, variables, refreshUnauthorized}) => { if (variables && variables.id) { variables.id = parseInt(variables.id); } query._refreshUnauthorizedUser = typeof refreshUnauthorized === 'undefined' ? true : refreshUnauthorized; isQueryRunning.value = true; const queryName = query.definitions[0].selectionSet.selections[0].name.value; return apolloWrapper.query(query, variables) .then((result) => { if (!result || result.error || !result.data) { return null; } return result.data[queryName] }) .finally(() => isQueryRunning.value = false); } export const mutate = ({isMutationRunning, mutation, variables}) => { isMutationRunning.value = true; const mutationName = getOperationName(mutation); return apolloWrapper.mutate(mutation, variables) .then(result => result.data[mutationName]) .finally(() => isMutationRunning.value = false); }