@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
60 lines (46 loc) • 1.45 kB
text/typescript
import { createLogger } from "../logger";
export const logger = createLogger({
category: "ImaDomUtils",
subsystem: "Player/ImaDomUtils",
});
const { log_debug, log_error, log_verbose } = logger;
const removeElement = (node) => {
if (node) {
const parentNode = node.parentNode;
if (parentNode) {
parentNode.removeChild(node);
}
}
};
// TODO: This should probably be loaded to root of project before player init
export const loadIMAScript = async () => {
return new Promise((resolve) => {
// If ima script is already loaded, resolve
const imaScript = document.getElementById("ima-script");
if (imaScript) {
log_verbose("loadIMAScript: IMA script already loaded");
return resolve(true);
}
const script = document.createElement("script");
if (__DEV__) {
script.src = "https://imasdk.googleapis.com/js/sdkloader/ima3_debug.js";
} else {
script.src = "https://imasdk.googleapis.com/js/sdkloader/ima3.js";
}
script.async = true;
script.id = "ima-script";
script.onload = () => {
removeElement(script);
log_debug("loadIMAScript: Loaded ima script", script.src);
resolve(true);
};
script.onerror = (_e) => {
removeElement(script);
log_error("loadIMAScript: Failed to load ima script", script.src);
resolve(false);
};
if (document.head) {
document.head.appendChild(script);
}
});
};