infinity-forge
Version:
36 lines • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = useLoadGsiScript;
var react_1 = require("react");
function useLoadGsiScript(options) {
if (options === void 0) { options = {}; }
var nonce = options.nonce, onScriptLoadSuccess = options.onScriptLoadSuccess, onScriptLoadError = options.onScriptLoadError;
var _a = (0, react_1.useState)(false), scriptLoadedSuccessfully = _a[0], setScriptLoadedSuccessfully = _a[1];
var onScriptLoadSuccessRef = (0, react_1.useRef)(onScriptLoadSuccess);
onScriptLoadSuccessRef.current = onScriptLoadSuccess;
var onScriptLoadErrorRef = (0, react_1.useRef)(onScriptLoadError);
onScriptLoadErrorRef.current = onScriptLoadError;
(0, react_1.useEffect)(function () {
var scriptTag = document.createElement('script');
scriptTag.src = 'https://accounts.google.com/gsi/client';
scriptTag.async = true;
scriptTag.defer = true;
scriptTag.nonce = nonce;
scriptTag.onload = function () {
var _a;
setScriptLoadedSuccessfully(true);
(_a = onScriptLoadSuccessRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadSuccessRef);
};
scriptTag.onerror = function () {
var _a;
setScriptLoadedSuccessfully(false);
(_a = onScriptLoadErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadErrorRef);
};
document.body.appendChild(scriptTag);
return function () {
document.body.removeChild(scriptTag);
};
}, [nonce]);
return scriptLoadedSuccessfully;
}
//# sourceMappingURL=useLoadGsiScript.js.map