import { Toast } from '../../toast/index';

import type { IInterceptor } from '../types';


function $t(a: string) {
  return a;
}

/**
 * 处理网络错误提示
 */
export default class ShowNetworkErrorToastInterceptor implements IInterceptor {
  interceptor(param: any, extra: any): Promise<[boolean, any]> {
    if (param?.message) {
      if (param.message.indexOf('timeout') > -1) {
        param.msg = '接口超时，稍后试试吧';
      }
      if (param.message.indexOf('Network Error') > -1) {
        param.msg = '网络不好，请稍后重试';
      }
    }

    if (extra.showMsgToast) {
      // 抛出异常错误，方便业务侧上报
      // @ts-ignore
      window.app?.$ebus?.emit('response-error-event', param);
      // 特定错误才提示，避免用户看到莫名奇妙的错误提示
      if (param?.message && (param.message.indexOf('timeout') > -1
        || param.message.indexOf('Network Error') > -1)) {
        Toast?.showFail($t(param.msg));
      }
    }
    return Promise.resolve([false, param]);
  }
}
