mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-11 12:32:30 +00:00
If half the file is written in ES6, it is easier to read if the rest of the file is in ES6 as well. If ES6 is used, then const is better than let. If source code is shorter yet as readable as the long version, then prefer the short version.
77 lines
1.7 KiB
JavaScript
77 lines
1.7 KiB
JavaScript
const logger = require("jitsi-meet-logger").getLogger(__filename);
|
|
|
|
/**
|
|
* Create deferred object.
|
|
*
|
|
* @returns {{promise, resolve, reject}}
|
|
*/
|
|
export function createDeferred() {
|
|
const deferred = {};
|
|
|
|
deferred.promise = new Promise((resolve, reject) => {
|
|
deferred.resolve = resolve;
|
|
deferred.reject = reject;
|
|
});
|
|
|
|
return deferred;
|
|
}
|
|
|
|
/**
|
|
* Reload page.
|
|
*/
|
|
export function reload() {
|
|
window.location.reload();
|
|
}
|
|
|
|
/**
|
|
* Redirects to a specific new URL by replacing the current location (in the
|
|
* history).
|
|
*
|
|
* @param {string} url the URL pointing to the location where the user should
|
|
* be redirected to.
|
|
*/
|
|
export function replace(url) {
|
|
window.location.replace(url);
|
|
}
|
|
|
|
/**
|
|
* Prints the error and reports it to the global error handler.
|
|
*
|
|
* @param e {Error} the error
|
|
* @param msg {string} [optional] the message printed in addition to the error
|
|
*/
|
|
export function reportError(e, msg = "") {
|
|
logger.error(msg, e);
|
|
window.onerror && window.onerror(msg, null, null, null, e);
|
|
}
|
|
|
|
/**
|
|
* Creates a debounced function that delays invoking func until after wait
|
|
* milliseconds have elapsed since the last time the debounced function was
|
|
* invoked.
|
|
*
|
|
* @param fn
|
|
* @param wait
|
|
* @param options
|
|
* @returns {function(...[*])}
|
|
*/
|
|
export function debounce(fn, wait = 0, options = {}) {
|
|
const leading = options.leading || false;
|
|
const trailing
|
|
= (typeof options.trailing === 'undefined') || options.trailing;
|
|
let called = false;
|
|
|
|
return (...args) => {
|
|
if (!called) {
|
|
leading && fn(...args);
|
|
|
|
setTimeout(() => {
|
|
called = false;
|
|
trailing && fn(...args);
|
|
}, wait);
|
|
|
|
called = true;
|
|
}
|
|
};
|
|
}
|