@atomicjolt/lti-client
Version:
Client Javascript libraries to handle LTI.
40 lines • 1.6 kB
JavaScript
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