@atomicjolt/lti-client
Version:
Client Javascript libraries to handle LTI.
60 lines • 2.53 kB
JavaScript
import i18next from "i18next";
import { privacyHtml } from "./privacy";
import { MAIN_CONTENT_ID } from "../libs/constants";
import { tryRequestStorageAccess } from "../libs/platform_storage";
export function launchNewWindow(settings) {
window.open(settings.relaunchInitUrl);
showLaunchNewWindow(settings, {
disableLaunch: true,
showRequestStorageAccess: false,
showStorageAccessDenied: false,
});
}
export function showLaunchNewWindow(settings, options) {
const { disableLaunch, showRequestStorageAccess, showStorageAccessDenied } = options;
const container = document.getElementById(MAIN_CONTENT_ID);
if (!container) {
throw i18next.t("Could not find main-content element");
}
container.innerHTML = `
<div class="aj-centered-message">
<h1 class="aj-title">
<i class="material-icons-outlined aj-icon" aria-hidden="true">cookie_off</i>
${i18next.t("Cookies Required")}
</h1>
<p class="aj-text">
${privacyHtml(settings)} </p>
<p class="aj-text">
${i18next.t("Please click the button below to reload in a new window.")}
</p>
<button id="button_launch_new_window" class="aj-btn aj-btn--blue" ${disableLaunch ? 'disabled=""' : ""} >
${i18next.t("Open in a new window")}
</button>
</a>
${showRequestStorageAccess
? `
<div id="request_storage_access">
<p class="aj-text">
${i18next.t("If you have used this application before, your browser may allow you to <a id='request_storage_access_link' href='#'>enable cookies</a> and prevent this message in the future.")}
</p>
</div>
`
: ""}
${showStorageAccessDenied
? `
<div id="request_storage_access_error" class="u-flex">
<i class="material-icons-outlined aj-icon" aria-hidden="true">warning</i>
<p class="aj-text">
${i18next.t("The browser prevented access. Try launching in a new window first and then clicking this option again next time. If that doesn't work check your privacy settings. Some browsers will prevent all third party cookies.")}
</p>
</div>
`
: ""}
</div>
`;
document.getElementById("button_launch_new_window").onclick = () => launchNewWindow(settings);
if (showRequestStorageAccess) {
document.getElementById("request_storage_access_link").onclick = () => tryRequestStorageAccess(settings);
}
}
//# sourceMappingURL=launch_new_window.js.map