/**
 * A helper wrapper service around window.history
 */

import { createBrowserHistory } from 'history';

export const browserHistory = createBrowserHistory();

browserHistory.listen(() => {
  patchHistory(browserHistory);
});

function patchHistory(history) {
  Object.assign(history.location, {
    query: new URLSearchParams(history.location.search),
  });
}

patchHistory(browserHistory);

export default {
  init() {
    this.initialLength = window.history.length;
  },

  /**
   * @returns {boolean} - whether history.back() can be safetly called
   */
  canGoBack() {
    return (
      document.referrer.includes(`${location.protocol}//${location.host}`) ||
      this.initialLength < window.history.length
    );
  },
};
