* feat spot: init commit for extension * nvmrc * fix login flow * Spots Gridview Updates (#2422) * feat ui: login flow for spot extension * spot list, store and service created * some fixing for header * start work on single spot * spot player start * header for player, comments, icons, etc * split stuff into compoennts, create player state manager * player controls, activity panel etc etc * comments, empty page, rename and stuff * interval buttons etc * access modal * pubkey support * fix tooltip * limit 10 -> 9 * hls lib instead of videojs * some warnings * fix date display for exp * change public links * display more client data * fix cleaning, init comment * map network to replay player network ev * stream support, console panel, close panels on X * fixing streaming, destroy on leave * fix autoplay * show notification on spot login * fix spot login * backup player added, fix audio issue * show thumbnail when no video, add spot roles * add poster thumbnail * some fixes to video check * fix events jump * fix play btn * try catch over pubkey * feat ui: login flow for spot extension * spot list, store and service created * some fixing for header * start work on single spot * spot player start * header for player, comments, icons, etc * split stuff into compoennts, create player state manager * player controls, activity panel etc etc * comments, empty page, rename and stuff * interval buttons etc * access modal * pubkey support * fix tooltip * limit 10 -> 9 * hls lib instead of videojs * some warnings * fix date display for exp * change public links * display more client data * fix cleaning, init comment * map network to replay player network ev * stream support, console panel, close panels on X * fixing streaming, destroy on leave * fix autoplay * show notification on spot login * fix spot login * backup player added, fix audio issue * show thumbnail when no video, add spot roles * add poster thumbnail * some fixes to video check * fix events jump * fix play btn * try catch over pubkey * icons * Various updates * Update SVG.tsx * Update SideMenu.tsx * SpotList & Menu updates * feat ui: login flow for spot extension * spot list, store and service created * some fixing for header * start work on single spot * spot player start * header for player, comments, icons, etc * split stuff into compoennts, create player state manager * player controls, activity panel etc etc * comments, empty page, rename and stuff * interval buttons etc * access modal * pubkey support * fix tooltip * limit 10 -> 9 * hls lib instead of videojs * some warnings * fix date display for exp * change public links * display more client data * fix cleaning, init comment * map network to replay player network ev * stream support, console panel, close panels on X * fixing streaming, destroy on leave * fix autoplay * show notification on spot login * fix spot login * backup player added, fix audio issue * show thumbnail when no video, add spot roles * add poster thumbnail * some fixes to video check * fix events jump * fix play btn * try catch over pubkey * icons * spot login pinging * Spot List & Player Updates * move spot login flow to login comp, use separate spot login path for unique jwt * invalidate spot jwt on logout * add visual data on page load event * typo fix * Spot Listing improvements post review. * Update SpotListItem.tsx * Improved Spot List and Item Details * Minor improvements * More improvements * Public player header improvements * Moved formatExpirationTime to utils * fixes after merge --------- Co-authored-by: nick-delirium <nikita@openreplay.com> * set sso link to <a>? * some small perf fixes * login duck reformat... * Update frontend.yaml * add observer to spot list header * split list header * update spotjwt param in router * fix toast in router * fix async fetch, move ctx * capture space btn ev * fix header link * public sharing error msg * fix err msg for unsuccessful rec start * fix list alignment * Caching assets. Finally!!! * fix typing in comment field * add pubkey to comments, fix console jump btn * no content comp * change refresh token logic * move thumbnail ts * move thumbnail ts * fix tab change * switch up toggler * early exit if no jwt present * regenerate icons * fix location str * fix ctx * change thumnail res, return autoplay for video player * parse links in console rows, fix injected method parse? * remove ts from js * fix console parsing order? * fixes for autoplay * xray for spot player * move to spot list after login; esc to cancel; fix signup link; move ux commit * kb sc for skipping; xray for spot ext * track aborted requests * tooltip for readability * fixing empty state * New blank state + various minor improvements (#2471) * New blank state + various minor improvements * apres merge --------- Co-authored-by: nick-delirium <nikita@openreplay.com> * rm temp v * init or card * empty state debug * empty state debug * empty state debug * fix initor img * spotonly scope support * Improved Spot dead-end pages (#2475) * Improved Spot dead-end pages * Initiate OpenReplay Setup and some more * get scope changes * fix crash * scope upgrade/downgrade * scope setup flow * ping for backend * upgrade wxt deps * cancel ping int on expiration * check rec status * fix ping * check video processing state * check video processing state * fix xray close, network highlight, fcp rounding * update wxt, move open spot stuff to settings * fix some history issues * fix spot login flow * fix spot login again * fix spot login again * don't send two requests * limit messages for logged users * limit messages for logged users * fix public ignore * microphone stuff * microphone stuff * Various improvements (#2509) * Various improvements - Updated icons in mic settings - Included prefix in Spot title - Save recording notification has been updated - Other minor UI improvements * Inline declaration of spot name field, and settings UI * str f --------- Co-authored-by: nick-delirium <nikita@openreplay.com> * UI changes in player header, spot list (#2510) * Added UI elements in player page - Badge with counts for comments - Download and Delete dropdown in player - Spot selection -- UI improvement * Minor copy updates * completing changes --------- Co-authored-by: nick-delirium <nikita@openreplay.com> * rm cmt * fix cellmeasurer * thumbnail dur * fix download * Minor fixes (#2512) - Spot delete confirmation - Spot comments UI update - Minor copy updates * limit number of notif messages * add spot title to doc title, add cache groups for webpack * drop mic controls from recording popup view * fix for webpack compress * fix for auto mic pickup * change status banners * move svgs around, remove undefined check * refactor svgs * fix timetable scaling * fix error popup * self contain css * pre-select spot on spot onboarding --------- Co-authored-by: Sudheer Salavadi <connect.uxmaster@gmail.com> Co-authored-by: Rajesh Rajendran <rjshrjndrn@users.noreply.github.com>
153 lines
3.9 KiB
JavaScript
153 lines
3.9 KiB
JavaScript
export default defineUnlistedScript(() => {
|
|
const printError =
|
|
"InstallTrigger" in window // detect Firefox
|
|
? (e) => e.message + "\n" + e.stack
|
|
: (e) => e.stack || e.message;
|
|
|
|
function printString(arg) {
|
|
if (arg === undefined) {
|
|
return "undefined";
|
|
}
|
|
if (arg === null) {
|
|
return "null";
|
|
}
|
|
if (arg instanceof Error) {
|
|
return printError(arg);
|
|
}
|
|
if (Array.isArray(arg)) {
|
|
return `Array(${arg.length})`;
|
|
}
|
|
return String(arg);
|
|
}
|
|
|
|
function printFloat(arg) {
|
|
if (typeof arg !== "number") return "NaN";
|
|
return arg.toString();
|
|
}
|
|
|
|
function printInt(arg) {
|
|
if (typeof arg !== "number") return "NaN";
|
|
return Math.floor(arg).toString();
|
|
}
|
|
|
|
function printObject(arg) {
|
|
if (arg === undefined) {
|
|
return "undefined";
|
|
}
|
|
if (arg === null) {
|
|
return "null";
|
|
}
|
|
if (arg instanceof Error) {
|
|
return printError(arg);
|
|
}
|
|
if (Array.isArray(arg)) {
|
|
const length = arg.length;
|
|
const values = arg.slice(0, 10).map(printString).join(", ");
|
|
return `Array(${length})[${values}]`;
|
|
}
|
|
if (typeof arg === "object") {
|
|
const res = [];
|
|
let i = 0;
|
|
for (const k in arg) {
|
|
if (++i === 10) {
|
|
break;
|
|
}
|
|
const v = arg[k];
|
|
res.push(k + ": " + printString(v));
|
|
}
|
|
return "{" + res.join(", ") + "}";
|
|
}
|
|
return arg.toString();
|
|
}
|
|
|
|
function printf(args) {
|
|
if (typeof args[0] === "string") {
|
|
args.unshift(
|
|
args.shift().replace(/%(o|s|f|d|i)/g, (s, t) => {
|
|
const arg = args.shift();
|
|
if (arg === undefined) return s;
|
|
switch (t) {
|
|
case "o":
|
|
return printObject(arg);
|
|
case "s":
|
|
return printString(arg);
|
|
case "f":
|
|
return printFloat(arg);
|
|
case "d":
|
|
case "i":
|
|
return printInt(arg);
|
|
default:
|
|
return s;
|
|
}
|
|
}),
|
|
);
|
|
}
|
|
return args.map(printObject).join(" ");
|
|
}
|
|
|
|
const consoleMethods = ["log", "info", "warn", "error", "debug", "assert"];
|
|
|
|
const patchConsole = (console, ctx) => {
|
|
if (window.revokeSpotPatch || window.__or_proxy_revocable) {
|
|
return;
|
|
}
|
|
let n = 0;
|
|
const reset = () => {
|
|
n = 0;
|
|
};
|
|
let int = setInterval(reset, 1000);
|
|
|
|
const sendConsoleLog = (level, args) => {
|
|
const msg = printf(args);
|
|
const truncated =
|
|
msg.length > 5000 ? `Truncated: ${msg.slice(0, 5000)}...` : msg;
|
|
const logs = [{ level, msg: truncated, time: Date.now() }];
|
|
window.postMessage({ type: "ort:bump-logs", logs }, "*");
|
|
};
|
|
|
|
const handler = (level) => ({
|
|
apply: function (target, thisArg, argumentsList) {
|
|
Reflect.apply(target, ctx, argumentsList);
|
|
n = n + 1;
|
|
if (n > 10) {
|
|
return;
|
|
} else {
|
|
sendConsoleLog(level, argumentsList); // Pass the correct level
|
|
}
|
|
},
|
|
});
|
|
|
|
window.__or_proxy_revocable = [];
|
|
consoleMethods.forEach((method) => {
|
|
if (consoleMethods.indexOf(method) === -1) {
|
|
return;
|
|
}
|
|
const fn = ctx.console[method];
|
|
// is there any way to preserve the original console trace?
|
|
const revProxy = Proxy.revocable(fn, handler(method));
|
|
console[method] = revProxy.proxy;
|
|
window.__or_proxy_revocable.push(revProxy);
|
|
});
|
|
|
|
return () => {
|
|
clearInterval(int);
|
|
window.__or_proxy_revocable.forEach((revocable) => {
|
|
revocable.revoke();
|
|
});
|
|
};
|
|
};
|
|
|
|
window.addEventListener("message", (event) => {
|
|
if (event.data.type === "injected:start") {
|
|
if (!window.__or_revokeSpotPatch) {
|
|
window.__or_revokeSpotPatch = patchConsole(console, window);
|
|
}
|
|
}
|
|
if (event.data.type === "injected:stop") {
|
|
if (window.__or_revokeSpotPatch) {
|
|
window.__or_revokeSpotPatch();
|
|
window.__or_revokeSpotPatch = null;
|
|
}
|
|
}
|
|
});
|
|
});
|