80 lines
2.0 KiB
JavaScript
80 lines
2.0 KiB
JavaScript
import apolloClient from 'graphql/client';
|
|
import MUTATIONS from 'graphql/mutations';
|
|
|
|
export const processMutation = async (mutationName, variables) => {
|
|
const mutation = MUTATIONS[mutationName];
|
|
const mutationResponse = await apolloClient.mutate({
|
|
mutation,
|
|
variables: { input: variables },
|
|
context: {
|
|
autoSnackbar: false,
|
|
},
|
|
});
|
|
const responseData = mutationResponse.data[mutationName];
|
|
|
|
return responseData;
|
|
};
|
|
|
|
const parseUrlSearchParams = (event) => {
|
|
const searchParams = new URLSearchParams(event.data.payload.search);
|
|
const hashParams = new URLSearchParams(event.data.payload.hash.substring(1));
|
|
const searchParamsObject = getObjectOfEntries(searchParams.entries());
|
|
const hashParamsObject = getObjectOfEntries(hashParams.entries());
|
|
|
|
return {
|
|
...hashParamsObject,
|
|
...searchParamsObject,
|
|
};
|
|
};
|
|
|
|
function getObjectOfEntries(iterator) {
|
|
const result = {};
|
|
for (const [key, value] of iterator) {
|
|
result[key] = value;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
export const processOpenWithPopup = (url) => {
|
|
const windowFeatures =
|
|
'toolbar=no, titlebar=no, menubar=no, width=500, height=700, top=100, left=100';
|
|
const popup = window.open(url, '_blank', windowFeatures);
|
|
popup?.focus();
|
|
|
|
return popup;
|
|
};
|
|
|
|
export const processPopupMessage = (popup) => {
|
|
return new Promise((resolve, reject) => {
|
|
let closeCheckIntervalId;
|
|
|
|
if (popup) {
|
|
closeCheckIntervalId = setInterval(() => {
|
|
if (popup.closed) {
|
|
clearInterval(closeCheckIntervalId);
|
|
|
|
reject({ message: 'Error occured while verifying credentials!' });
|
|
}
|
|
}, 1000);
|
|
}
|
|
|
|
const messageHandler = async (event) => {
|
|
if (event.data.source !== 'automatisch') {
|
|
return;
|
|
}
|
|
|
|
const data = parseUrlSearchParams(event);
|
|
window.removeEventListener('message', messageHandler);
|
|
|
|
if (closeCheckIntervalId) {
|
|
clearInterval(closeCheckIntervalId);
|
|
}
|
|
|
|
resolve(data);
|
|
};
|
|
|
|
window.addEventListener('message', messageHandler, false);
|
|
});
|
|
};
|