init-client.js 1.02 KB
import Vue from 'vue';

const setWindowSize = (store) => {
  const { clientWidth, clientHeight } = document.body;

  store.commit('SET_WINDOW_SIZE', { clientWidth, clientHeight });
};

const initClient = (store) => {
  setWindowSize(store);
  window.onresize = () => {
    setWindowSize(store);
  };

  let supportsPassive = false;

  try {
    const opts = Object.defineProperty({}, 'passive', {
      get() {
        supportsPassive = true;
        return true;
      }
    });

    window.addEventListener('test', null, opts);
  } catch (e) { } //eslint-disable-line
  store.commit('SET_SUPPORT_PASSIVE', { supportsPassive });

  let img = new Image();

  img.onload = () => {
    if (img.width > 0 && img.height > 0) {
      store.commit('SET_SUPPORT_WEBP', { supportWebp: true });
    }
  };
  img.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';

  Vue.$sdk.getUser().then(user => {
    if (user && user.uid) {
      store.commit('SET_LOGIN_INFO', user);
    }
  });
};

export {
  initClient
};