Added debounce, throttle, getUrlParams
authorAjay Bura <ajbura@gmail.com>
Sat, 6 Nov 2021 09:42:36 +0000 (15:12 +0530)
committerAjay Bura <ajbura@gmail.com>
Sat, 6 Nov 2021 09:42:36 +0000 (15:12 +0530)
Signed-off-by: Ajay Bura <ajbura@gmail.com>
src/util/common.js

index f434c5b3d070391567e9e662e8aede6e4f4aca57..2c8942b80eb9f565e3310f523b78d6ca7e85c3e9 100644 (file)
@@ -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);
+}