| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 
							- import $ from 'jquery';
 
- import toastr from './toastr';
 
- import isOnline from './offline';
 
- import { config } from 'grav-config';
 
- import trim from 'mout/string/trim';
 
- let UNLOADING = false;
 
- let error = function(response) {
 
-     let error = new Error(response.statusText || response || '');
 
-     error.response = response;
 
-     return error;
 
- };
 
- export function parseStatus(response) {
 
-     return response;
 
-     /* Whoops can handle JSON responses so we don't need this for now.
 
-         if (response.status >= 200 && response.status < 300) {
 
-             return response;
 
-         } else {
 
-             throw error(response);
 
-         }
 
-     */
 
- }
 
- export function parseJSON(response) {
 
-     return response.text().then((text) => {
 
-         let parsed = text;
 
-         try {
 
-             parsed = JSON.parse(text);
 
-         } catch (error) {
 
-             let content = document.createElement('div');
 
-             content.innerHTML = text;
 
-             let the_error = new Error();
 
-             the_error.stack = trim(content.innerText);
 
-             throw the_error;
 
-         }
 
-         return parsed;
 
-     });
 
- }
 
- export function userFeedback(response) {
 
-     if (UNLOADING) { return true; }
 
-     let status = response.status || (response.error ? 'error' : '');
 
-     let message = response.message || (response.error ? response.error.message : null);
 
-     let settings = response.toastr || null;
 
-     let backup;
 
-     switch (status) {
 
-         case 'unauthenticated':
 
-             document.location.href = config.base_url_relative;
 
-             throw error('Logged out');
 
-         case 'unauthorized':
 
-             status = 'error';
 
-             message = message || 'Unauthorized.';
 
-             break;
 
-         case 'error':
 
-             status = 'error';
 
-             message = message || 'Unknown error.';
 
-             break;
 
-         case 'success':
 
-             status = 'success';
 
-             message = message || '';
 
-             break;
 
-         default:
 
-             status = 'error';
 
-             message = message || 'Invalid AJAX response.';
 
-             break;
 
-     }
 
-     if (settings) {
 
-         backup = Object.assign({}, toastr.options);
 
-         Object.keys(settings).forEach((key) => { toastr.options[key] = settings[key]; });
 
-     }
 
-     if (message && (isOnline || (!isOnline && status !== 'error'))) {
 
-         toastr[status === 'success' ? 'success' : 'error'](message);
 
-     }
 
-     if (settings) {
 
-         toastr.options = backup;
 
-     }
 
-     return response;
 
- }
 
- export function userFeedbackError(error) {
 
-     if (UNLOADING) { return true; }
 
-     let stack = error.stack ? `<pre><code>${error.stack}</code></pre>` : '';
 
-     toastr.error(`Fetch Failed: <br /> ${error.message} ${stack}`);
 
-     console.error(`${error.message} at ${error.stack}`);
 
- }
 
- $(global).on('beforeunload._ajax', () => {
 
-     UNLOADING = true;
 
- });
 
 
  |