UNPKG

@atomicjolt/lti-client

Version:

Client Javascript libraries to handle LTI.

40 lines 1.6 kB
import i18next from "i18next"; export function getCapabilities() { return new Promise((resolve, reject) => { let parent = window.parent || window.opener; const timeout = setTimeout(() => { console.log(i18next.t("capabilities request timeout")); reject(new Error(i18next.t("Timeout while waiting for capabilities response"))); }, 1000); const receiveMessage = (event) => { if (typeof event.data === "object" && event.data.subject === "lti.capabilities.response" && event.data.message_id === "aj-lti-caps") { removeEventListener("message", receiveMessage); clearTimeout(timeout); if (event.data.error) { // handle errors console.error(event.data.error.code); console.error(event.data.error.message); reject(new Error(event.data.errormessage)); return; } resolve(event.data.supported_messages); } }; window.addEventListener("message", receiveMessage); parent.postMessage({ subject: "lti.capabilities", message_id: "aj-lti-caps", }, "*"); // Platform will post a message back or we'll timeout }); } export async function getCapability(subject) { const caps = await getCapabilities(); if (caps) { return caps.find((element) => element.subject == subject) || null; } return null; } //# sourceMappingURL=capabilities.js.map