31
31
</template >
32
32
33
33
<script >
34
- /* eslint-disable import/no-duplicates */
34
+ /* eslint-disable import/no-duplicates, no-param-reassign */
35
35
import { mapState } from ' vuex' ;
36
- // Axios interceptors
37
- import { requestInterceptor , responseInterceptor } from ' ./http/interceptors' ;
36
+ // Axios
37
+ import HTTP from ' ./http/init-axios' ;
38
+ import EventBus from ' ./eventBus' ;
38
39
// Components
39
40
import Navbar from ' ./components/blocks/Navbar.vue' ;
40
41
import FolderTree from ' ./components/tree/FolderTree.vue' ;
@@ -70,10 +71,10 @@ export default {
70
71
this .$store .commit (' fm/settings/initBaseUrl' );
71
72
72
73
// add axios request interceptor
73
- requestInterceptor ();
74
+ this . requestInterceptor ();
74
75
75
76
// add axios response interceptor
76
- responseInterceptor ();
77
+ this . responseInterceptor ();
77
78
78
79
// initialize app settings
79
80
this .$store .dispatch (' fm/initializeApp' );
@@ -91,6 +92,84 @@ export default {
91
92
*/
92
93
},
93
94
methods: {
95
+ /**
96
+ * Add axios request interceptor
97
+ */
98
+ requestInterceptor () {
99
+ HTTP .interceptors .request .use ((config ) => {
100
+ // overwrite base url
101
+ if (this .$store .getters [' fm/settings/baseUrl' ] !== config .baseURL ) {
102
+ config .baseURL = this .$store .getters [' fm/settings/baseUrl' ];
103
+ }
104
+
105
+ // overwrite headers
106
+ const newHeaders = this .$store .state .fm .settings .headers ;
107
+
108
+ if (newHeaders) {
109
+ Object .keys (newHeaders)
110
+ .forEach ((key ) => { config .headers [key] = newHeaders[key]; });
111
+ }
112
+
113
+ // loading spinner +
114
+ this .$store .commit (' fm/messages/addLoading' );
115
+
116
+ return config;
117
+ }, (error ) => {
118
+ // loading spinner -
119
+ this .$store .commit (' fm/messages/subtractLoading' );
120
+ // Do something with request error
121
+ return Promise .reject (error);
122
+ });
123
+ },
124
+
125
+ /**
126
+ * Add axios response interceptor
127
+ */
128
+ responseInterceptor () {
129
+ HTTP .interceptors .response .use ((response ) => {
130
+ // loading spinner -
131
+ this .$store .commit (' fm/messages/subtractLoading' );
132
+
133
+ // create notification, if find message text
134
+ if (Object .prototype .hasOwnProperty .call (response .data , ' result' )) {
135
+ if (response .data .result .message ) {
136
+ // show notification
137
+ EventBus .$emit (' addNotification' , response .data .result );
138
+
139
+ // set action result
140
+ this .$store .commit (' fm/messages/setActionResult' , response .data .result );
141
+ }
142
+ }
143
+
144
+ return response;
145
+ }, (error ) => {
146
+ // loading spinner -
147
+ this .$store .commit (' fm/messages/subtractLoading' );
148
+
149
+ // set error message
150
+ this .$store .commit (' fm/messages/setError' , error);
151
+
152
+ const errorMessage = {
153
+ status: ' error' ,
154
+ message: ' ' ,
155
+ };
156
+
157
+ // add message
158
+ if (error .response ) {
159
+ errorMessage .message = error .response .data .message || error .response .statusText ;
160
+ } else if (error .request ) {
161
+ errorMessage .message = error .request .statusText || ' Network error' ;
162
+ } else {
163
+ errorMessage .message = error .message ;
164
+ }
165
+
166
+ // show notification
167
+ EventBus .$emit (' addNotification' , errorMessage);
168
+
169
+ return Promise .reject (error);
170
+ });
171
+ },
172
+
94
173
/**
95
174
* Select manager (when shown 2 file manager windows)
96
175
* @param managerName
0 commit comments