3131</template >
3232
3333<script >
34- /* eslint-disable import/no-duplicates */
34+ /* eslint-disable import/no-duplicates, no-param-reassign */
3535import { 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' ;
3839// Components
3940import Navbar from ' ./components/blocks/Navbar.vue' ;
4041import FolderTree from ' ./components/tree/FolderTree.vue' ;
@@ -70,10 +71,10 @@ export default {
7071 this .$store .commit (' fm/settings/initBaseUrl' );
7172
7273 // add axios request interceptor
73- requestInterceptor ();
74+ this . requestInterceptor ();
7475
7576 // add axios response interceptor
76- responseInterceptor ();
77+ this . responseInterceptor ();
7778
7879 // initialize app settings
7980 this .$store .dispatch (' fm/initializeApp' );
@@ -91,6 +92,84 @@ export default {
9192 */
9293 },
9394 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+
94173 /**
95174 * Select manager (when shown 2 file manager windows)
96175 * @param managerName
0 commit comments