From 8920cf32b364d6018da3a866e24e8d39e3b86087 Mon Sep 17 00:00:00 2001
From: 劉鈞霖 <benson@gmail.com>
Date: 星期三, 15 十二月 2021 15:25:17 +0800
Subject: [PATCH] [ Ref ] 共用 localStorage service

---
 PAMapp/assets/ts/api/share.ts |   38 +++++++++++++++++++++++---------------
 1 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/PAMapp/assets/ts/api/share.ts b/PAMapp/assets/ts/api/share.ts
index fe55bb2..835376c 100644
--- a/PAMapp/assets/ts/api/share.ts
+++ b/PAMapp/assets/ts/api/share.ts
@@ -1,10 +1,9 @@
-import { AxiosRequestConfig, AxiosError, AxiosResponse } from 'axios';
+import { AxiosRequestConfig, AxiosError, AxiosResponse} from 'axios';
 import ErrorMessageBox from '../errorService';
-import LocalStorage from '~/store/localStorage';
 import axios from 'axios';
 import _ from 'lodash';
 
-const notRequireInterceptorErrorUrl=[
+const notRequireInterceptorErrorUrl = [
   '/otp/verify',
   '/eService/authenticate',
   '/login/validate/get_img_code',
@@ -17,43 +16,52 @@
 });
 
 service.interceptors.request.use(
-  (config:AxiosRequestConfig)=>{
+  (config: AxiosRequestConfig) => {
     loadingStart();
+    addHttpHeader(config);
     return config;
   }
 );
 
 service.interceptors.response.use(
-  (response:AxiosResponse)=>{
+  (response: AxiosResponse) => {
     loadingFinish();
-    return response;  // maybe can use response.data
+    return response;
   },
-  (error:AxiosError)=>{
+  (error: AxiosError) => {
     loadingFinish();
     showErrorMessageBox(error)
     return Promise.reject(error);
   }
 );
 
+function addHttpHeader(config: AxiosRequestConfig): void {
+  config.headers = {
+    Authorization: 'Bearer ' + localStorage.getItem('id_token')
+  }
+}
+
 function loadingStart(): void {
-    window.$nuxt.$loading.start();
+  window.$nuxt.$loading.start();
 };
 
 function loadingFinish(): void {
-    window.$nuxt.$loading.finish();
+  window.$nuxt.$loading.finish();
 };
 
-function showErrorMessageBox(error:any):void{
-  if(!_.includes(notRequireInterceptorErrorUrl,error.config.url)){
+function showErrorMessageBox(error: any): void {
+  // console.log('error', error, error.response);
+  if (!_.includes(notRequireInterceptorErrorUrl, error.config.url)) {
     switch (error.response.status) {
       case 401:
-        ErrorMessageBox('���暹��');
-        window.$nuxt.$store.commit('localStorage/storageClear');
+        Promise.all([ErrorMessageBox('���暹��'),window.$nuxt.$store.dispatch('localStorage.service/clearStorage')]).then(()=>{
+          _.isEqual(window.$nuxt.$route.name, 'index') ? location.reload() : window.$nuxt.$router.push('/');
+        });
         break;
+
       default:
-        ErrorMessageBox();
+        ErrorMessageBox('', error);
         break;
     }
-
   }
 };

--
Gitblit v1.8.0