82 lines
1.8 KiB
JavaScript

//#region parameters
const env = Object.freeze({
xsrfToken: document.getElementsByName('__RequestVerificationToken')[0].value,
envKey: document.querySelector('meta[name="env-key"]').getAttribute('content')
})
const url = Object.freeze({
reject: `/api/annotation/reject`,
rejectRedir: `/envelope/${env.envKey}`,
share: `/api/readonly`
});
//#endregion
//#region request helper methods
function sendRequest(method, url, body = undefined) {
const options = {
credentials: 'include',
method: method,
headers: {
'X-XSRF-TOKEN': env.xsrfToken
}
}
if (body !== undefined) {
options.body = JSON.stringify(body);
options.headers['Content-Type'] = 'application/json';
}
return fetch(url, options);
}
function getRequest(url) {
return sendRequest('GET', url);
}
function postRequest(url, body = undefined) {
return sendRequest('POST', url, body);
}
function redirect(url) {
window.location.href = url;
}
//#endregion
//#region envelope
function signEnvelope(annotations) {
return postRequest(`/api/annotation`, annotations)
}
function rejectEnvelope(reason) {
return postRequest(url.reject, reason);
}
function shareEnvelope(receiverMail, dateValid) {
return postRequest(url.share, { receiverMail: receiverMail, dateValid: dateValid });
}
//#endregion
function redirRejected() {
redirect(url.rejectRedir);
}
async function setLanguage(language) {
const hasLang = await getRequest('/api/localization/lang')
.then(res => res.json())
.then(langs => langs.includes(language));
if (hasLang)
postRequest(`/api/localization/lang/${language}`)
.then(response => {
if (response.redirected)
redirect(response.url);
});
}
function logout() {
return postRequest(`/auth/logout`)
.then(res => {
if (res.ok)
window.location.href = "/";
});
}