/************************
 *    import
 ************************/
const useErrorHandler = () => {
  const { $log, $toast, $eventBus } = useNuxtApp()

  // 공통 에러코드
  let errProfiles = [
    { code : '9999' , action : 0, desc : '기타오류', proc : {type:'toast',msg:'처리중 오류가 발생되었습니다.<br/> 지속발생시 관리자에게 문의 바랍니다.'}, after : null}
  ]
  let errObj = { code : '' , action : 0, desc : '', proc : {type:'toast',msg:'처리중 오류가 발생되었습니다.<br/>상세오류코드: '}, after : null}
  
  /**
   * 공통 에러 처리 함수
   * @param {*} error 에러
   */
  async function fnSetCommErrorHandle(error){
    let code = ''
    let msg = ''

    if (error.response){
      code = error.response.data.resCode
      msg = error.response.data.resMsg
    }

    //$log.error('[ErrorHandle][ERROR]' + JSON.stringify(error.response.data))

    if(code === '1005' || code === '1006' || code === '1007' || code === '1008') {
      // 1005: 토큰이 없음, 1006: 토큰 만료됨, 1007: 잘못된 토큰 값, 1008: 로그아웃 처리된 토큰 값 => 강제 로그인 페이지로 이동
      $eventBus.emit('SESSION_DESTORY')
    }

    // 에러로 처리
    errObj.code = code

    if(_isEmpty(errObj.code)){
      errObj = _find(errProfiles, {code:'9999'})
      code = '9999'
    }

    if(errObj.proc.type === 'toast'){
      let toastMsg = errObj.proc.msg
      toastMsg = errObj.proc.msg.concat(msg+'['+code+']')
      //$toast.error(toastMsg)
    }

    return false
  }
  return { fnSetCommErrorHandle }
}

export default useErrorHandler
