index.js 1.06 KB
/* eslint-disable func-names,no-param-reassign */
import store from 'store2';
import { Modal } from 'ant-design-vue';

export default function ({ $axios, redirect }) {
  $axios.onRequest((config) => {
    /* header AppVersion 체크 */
    if (!store.get('appVersion')) {
      store.set('appVersion', config.headers.common.AppVersion);
    } else if (config.headers.common.AppVersion !== store.get('appVersion')) {
      store.set('appVersion', config.headers.common.AppVersion);
      Modal.info({
        title: '새로운 콘텐츠가 감지되었습니다.',
        content: '확인을 눌러 새로고침 해주세요.',
        onOk: () => {
          window.location.reload(true);
        },
      });
    }
    return config;
  });
  $axios.onResponse((response) => response.data);
  $axios.onError((error) => {
    if (error.response.status === 404) {
      redirect('/auth/404');
    } else {
      Modal.error({
        title: '서버와의 통신에 에러가 발생했습니다.',
        onOk: () => {
          redirect('/auth/500');
        },
      });
    }
  });
}