45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
import { useMainStore } from '@/store';
|
|
import { updateOrCreateISSCookie } from '@/helpers/cookie-helper';
|
|
|
|
/*
|
|
Encapsulates asynchronous Save Session logic inside a promise to allow for Save Session queuing
|
|
*/
|
|
async function saveSessionHelper(store, { submitAfterSave }) {
|
|
const savedSessionInfo = await store.saveSession({ submitAfterSave });
|
|
if (savedSessionInfo) {
|
|
store.setSaveSessionInfo(savedSessionInfo.data);
|
|
}
|
|
updateOrCreateISSCookie();
|
|
}
|
|
|
|
/*
|
|
Will call API to save existing order, or create new one depending where it's called from.
|
|
This will also set Referral information in the store after saving, and then
|
|
update the cookie. To force synchronous behavior pass in 'true' for shouldAwaitSaveSessionQueue
|
|
*/
|
|
export async function saveSession({ shouldAwaitSaveSessionQueue = false, submitAfterSave = false }) {
|
|
const store = useMainStore();
|
|
const saveSessionPromise = store.applicationUser.saveSessionPromise
|
|
? store.applicationUser.saveSessionPromise.then(() => saveSessionHelper(store, { submitAfterSave }))
|
|
: saveSessionHelper(store, { submitAfterSave });
|
|
|
|
store.setSaveSessionPromise(saveSessionPromise);
|
|
|
|
if (!store.applicationUser.savedSessionId || shouldAwaitSaveSessionQueue) {
|
|
await saveSessionPromise;
|
|
}
|
|
}
|
|
|
|
/*
|
|
Will determine if to submitWorkOrder.
|
|
TODO: Add more description to this
|
|
*/
|
|
export async function submitWorkOrder({ submitType }) {
|
|
const store = useMainStore();
|
|
store.resetSubmittedOrder();
|
|
await saveSession({
|
|
shouldAwaitSaveSessionQueue: true,
|
|
submitAfterSave: true
|
|
});
|
|
store.createSubmittedOrder(submitType);
|
|
}
|