From 3d885ec26275078ca6a0ef5d55a716593db031b3 Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Sat, 6 Nov 2021 15:12:36 +0530 Subject: [PATCH] Added debounce, throttle, getUrlParams Signed-off-by: Ajay Bura --- src/util/common.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/util/common.js b/src/util/common.js index f434c5b3..2c8942b8 100644 --- a/src/util/common.js +++ b/src/util/common.js @@ -1,3 +1,4 @@ +/* eslint-disable max-classes-per-file */ export function bytesToSize(bytes) { const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; if (bytes === 0) return 'n/a'; @@ -33,3 +34,53 @@ export function abbreviateNumber(number) { if (number > 99) return '99+'; return number; } + +export class Debounce { + constructor() { + this.timeoutId = null; + } + + /** + * @param {function} func - callback function + * @param {number} wait - wait in milliseconds to call func + * @returns {func} debounceCallback - to pass arguments to func callback + */ + _(func, wait) { + const that = this; + return function debounceCallback(...args) { + clearTimeout(that.timeoutId); + that.timeoutId = setTimeout(() => { + func.apply(this, args); + that.timeoutId = null; + }, wait); + }; + } +} + +export class Throttle { + constructor() { + this.timeoutId = null; + } + + /** + * @param {function} func - callback function + * @param {number} wait - wait in milliseconds to call func + * @returns {function} throttleCallback - to pass arguments to func callback + */ + _(func, wait) { + const that = this; + return function throttleCallback(...args) { + if (that.timeoutId !== null) return; + that.timeoutId = setTimeout(() => { + func.apply(this, args); + that.timeoutId = null; + }, wait); + }; + } +} + +export function getUrlPrams(paramName) { + const queryString = window.location.search; + const urlParams = new URLSearchParams(queryString); + return urlParams.get(paramName); +}