Files
storage-service-ui/src/services/RouteService.js

42 lines
832 B
JavaScript

import EmitService from './EmitService';
import {parse} from 'querystring';
const ROUTE_CHANGE = 'routeChange';
class RouteService extends EmitService {
constructor () {
super();
this.history = window.history;
this._events[ROUTE_CHANGE] = [];
}
getUrlData = () => {
return {
url: location.pathname,
query: parse(location.search.slice(1)),
};
}
generateNext = () => {
this.next(ROUTE_CHANGE, this.getUrlData());
}
init = () => {
this.generateNext();
}
goTo = (url) => {
this.history.pushState({}, '', url);
this.generateNext();
}
onChange = (listener) => {
this.subscribe(ROUTE_CHANGE, listener);
}
}
const routeService = new RouteService();
export default routeService;