53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
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);
|
|
}
|