Skip to content

Cookbook: manipulate responses

Eugene Lazutkin edited this page Nov 26, 2019 · 3 revisions

This is part of the main module. See main for the full documentation.

Process possible offline errors

const prevProcessFailure = io.processFailure;
io.processFailure = failure => {
  if (failure instanceof io.FailedIO) {
    alert('We cannot initiate I/O. You are likely offline.');
  }
  return prevProcessFailure(failure);
};

Show errors

Show errors at the application level:

const prevProcessFailure = io.processFailure;
io.processFailure = failure => {
  if (failure instanceof io.BadStatus && failure.xhr) {
    showToaster({
      code: failure.xhr.status,
      msg:  failure.xhr.message,
      time: 5000
    });
  }
  return prevProcessFailure(failure);
};

Process authorization errors

Process authorization errors at an application level:

let shownSessionExpiredMessage = false,
  shownAccessIsDeniedMessage = false;
const prevProcessFailure = io.processFailure;
io.processFailure = failure => {
  if (failure instanceof io.BadStatus && failure.xhr) {
    if (failure.xhr.status === 401) {
      // unauthenticated
      if (!shownSessionExpiredMessage) {
        alert('Session has expired. You have to re-login.');
        shownSessionExpiredMessage = true;
        login();
      }
    }
    if (failure.xhr.status === 403) {
      // not authorized
      if (!shownAccessIsDeniedMessage) {
        alert('Insufficient permissions.');
        shownAccessIsDeniedMessage = true;
        // login();
      }
    }
  }
  return prevProcessFailure(failure);
};

Clone this wiki locally