Files
app/src/stores/helpers.js
T

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);
}