//监听localstorage
export const $addStorageEvent = function (type, key, data) {
    // localStorage
    if (type === 1) {
      // 创建一个StorageEvent事件
      var newStorageEvent = document.createEvent('StorageEvent');
      const storage = {
        setItem: function (k, val) {
          localStorage.setItem(k, val);
          // 初始化创建的事件
          newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
          // 派发对象
          window.dispatchEvent(newStorageEvent);
        }
      }
      return storage.setItem(key, data);
    } else {
      // sessionStorage
      // 创建一个StorageEvent事件
      var newStorageEvent = document.createEvent('StorageEvent');
      const storage = {
        setItem: function (k, val) {
          sessionStorage.setItem(k, val);
          // 初始化创建的事件
          newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
          // 派发对象
          window.dispatchEvent(newStorageEvent);
        }
      }
      return storage.setItem(key, data);
    }
  }

/**
 * @desc 防抖函数
 * @param {()=>void} fn 接收一个需要防抖的函数
 * @param {number} delay 延迟时间，单位 ms。默认为 0。 可选参数，表示重复执行的时间间隔，
 * @returns {()=>void} 返回一个实际执的函数
 */

// 防抖函数
export function Debounce(fn, delay) {
  let timer = null;
  return function () {
    let context = this;
    let args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
}

//节流函数
// export  function throttle(func, delay) {
//     let timer = null;
//     return function () {
//       if (!timer) {
//         func.apply(this, arguments);
//         timer = setTimeout(() => {
//           timer = null;
//         }, delay);
//       }
//     };
//   }


  // 节流函数
  export function throttle(fn, wait) {
  let inThrottle, lastFn, lastTime;
  return function() {
    const context = this,
          args = arguments;
    if (!inThrottle) {
      fn.apply(context, args);
      lastTime = Date.now();
      inThrottle = true;
    } else {
      clearTimeout(lastFn);
      lastFn = setTimeout(function() {
        if (Date.now() - lastTime >= wait) {
          fn.apply(context, args);
          lastTime = Date.now();
        }
      }, Math.max(wait - (Date.now() - lastTime), 0));
    }
  };
}

export const getImageUrl = (path) => {
  const baseUrl = process.env.VUE_APP_BASE_URL;
  if (!path) return '';
  if (path.startsWith('http')) {
    return path.replace('http://test.m2pool.com', baseUrl);
  }
  return `${baseUrl}${path.startsWith('/') ? '' : '/'}${path}`;
};



  // (function() {
  //   window.addEventListener('storage', function(event) {
  //     if (event.key === 'accountList') { // 将 'yourKey' 替换为存储数据的键
  //       location.reload();
  //     }
  //   });
  // })();