decord/source/modules/remote_auth/useAuthWebsocket.tsx
2026-07-25 08:10:48 +00:00

174 lines
5.2 KiB
TypeScript

// Module ID: 14832
// Function ID: 113128
// Name: useAuthWebsocket
// Dependencies: [5, 57, 31, 653, 3, 14831, 561, 8193, 12629, 14833, 1207, 507, 5588, 14835, 2]
// Exports: useAuthWebsocket
// Module 14832 (useAuthWebsocket)
import RemoteAuthStep from "RemoteAuthStep";
import _slicedToArray from "_slicedToArray";
import result from "result";
import ME from "ME";
import importDefaultResult from "ME";
let closure_6;
let closure_7;
const require = arg1;
({ ComponentActions: closure_6, Endpoints: closure_7 } = ME);
importDefaultResult = new importDefaultResult("useAuthWebsocket");
const result = require("result").fileFinishedImporting("modules/remote_auth/useAuthWebsocket.tsx");
export const useAuthWebsocket = function useAuthWebsocket(callback, arg1) {
let flag = arg2;
const _require = callback;
const importDefault = arg1;
if (arg2 === undefined) {
flag = false;
}
let RemoteAuthStep;
let first;
let React;
let state;
let closure_7;
let closure_8;
let memo;
let cancel;
callback = undefined;
let tmp = first(React.useState(0), 2);
RemoteAuthStep = tmp[1];
const tmp2 = first(React.useState(false), 2);
first = tmp2[0];
React = tmp4;
const tmp5 = first(React.useState({ step: _require(flag[5]).RemoteAuthStep.INITIALIZING }), 2);
state = tmp5[0];
closure_7 = tmp5[1];
closure_8 = React.useRef(null);
memo = React.useMemo(() => {
let tmp = callback2(flag[6]);
tmp = new tmp(1500, 30000);
return tmp;
}, []);
cancel = importDefault(flag[7])(() => {
callback4({ step: callback(flag[5]).RemoteAuthStep.INITIALIZING });
if (closure_1) {
callback3((arg0) => arg0 + 1);
} else {
logger.info("document is not visible, will defer reconnection when document becomes visible.");
_undefined(true);
}
});
const items = [cancel, memo];
callback = React.useCallback(() => {
logger.error("Could not complete Remote Auth login, trying to restart with a new Remote Auth session.");
callback4({ step: callback(flag[5]).RemoteAuthStep.INITIALIZING });
if (!memo.pending) {
memo.fail(cancel);
}
}, items);
const items1 = [state, arg1, first, tmp2[1]];
const effect = React.useEffect(() => {
let tmp = closure_1;
if (closure_1) {
tmp = first;
}
if (tmp) {
tmp = state.step === callback(flag[5]).RemoteAuthStep.INITIALIZING;
}
if (tmp) {
logger.info("reconnecting, now that document is visible");
_undefined(false);
callback3((arg0) => arg0 + 1);
}
}, items1);
const items2 = [cancel, callback, tmp[0], memo, callback, flag];
const effect1 = React.useEffect(() => {
function _fmt(arg0) {
return "[" + Date.now() - closure_0 + "ms" + "] " + arg0;
}
function info(arg0) {
return info.info(_fmt(arg0));
}
function getKeyPair() {
if (null != c2) {
return c2;
} else {
const _Error = Error;
const error = new Error("No key pair set");
throw error;
}
}
function doHeartbeat() {
if (c6) {
c6 = false;
const _JSON = JSON;
const obj = { op: "heartbeat" };
obj2.send(JSON.stringify(obj));
} else {
info("heartbeat timeout, reconnecting.");
obj2.close();
onmessage();
}
}
function onmessage(arg0) {
return _onmessage(...arguments);
}
function _onmessage() {
// CreateGeneratorClosureLongIndex (0x67)
const obj = _null(tmp);
return obj(...arguments);
}
function onopen() {
return _onopen(...arguments);
}
function _onopen() {
// CreateGeneratorClosureLongIndex (0x67)
const obj = _null(tmp);
return obj(...arguments);
}
function onclose(code) {
info("disconnected, code: " + code.code + " " + code.reason);
onmessage();
}
function onerror(arg0) {
info("disconnected, error: " + JSON.stringify(arg0));
onmessage();
}
let closure_0 = Date.now();
const combined = "" + window.GLOBAL_ENV.REMOTE_AUTH_ENDPOINT + "/?v=2";
let combined1 = combined;
if (combined.startsWith("//")) {
const _HermesInternal = HermesInternal;
combined1 = "wss:" + combined;
}
const obj2 = callback2(flag[8])(combined1);
logger.info("[0ms] connecting to " + combined1);
let c2 = null;
let c3 = null;
let c4 = null;
let c5 = null;
let c6 = true;
const listener = obj2.addEventListener("open", onopen);
const listener1 = obj2.addEventListener("message", onmessage);
const listener2 = obj2.addEventListener("close", onclose);
const listener3 = obj2.addEventListener("error", onerror);
return () => {
info("cleaning up");
const removed = obj2.removeEventListener("open", onopen);
const removed1 = obj2.removeEventListener("message", onmessage);
const removed2 = obj2.removeEventListener("close", onclose);
const removed3 = obj2.removeEventListener("error", onerror);
obj2.close(1000);
getKeyPair.cancel();
obj2(flag[9]).release();
if (null != c5) {
const _clearTimeout = clearTimeout;
clearTimeout(c5);
}
if (null != c4) {
const _clearInterval = clearInterval;
clearInterval(c4);
}
};
}, items2);
return { state, cancel };
};