@gongt/ts-stl-client
Version:
52 lines (43 loc) • 1.29 kB
text/typescript
import {CALL_HISTORY_METHOD, LOCATION_CHANGE, routerReducer, RouterState} from "react-router-redux";
import {IAData, IReduxActionConstructor, ISingleReducer, ReduxAction} from "../action";
import {reducerFromNative} from "../combine-reducers";
import {VirtualStore} from "../virtual-store";
export interface IStateRouter {
routing: RouterState;
}
export class routing extends VirtualStore<RouterState> { // this is a virtual-store
constructor() {
super();
this.reduceAny(<any>{
name: LOCATION_CHANGE,
}, reducerFromNative(routerReducer))
}
defaultValue: RouterState = {
location: null,
};
protected reduce<IData extends IAData>(Action: IReduxActionConstructor<IData, RouterState>,
...reducer: ISingleReducer<RouterState, IData>[]): void {
this.reduceAny.apply(this, arguments);
}
}
export enum RoutingMethod {
push,
replace,
go,
goBack,
goForward,
}
export interface IRoutingData {
method: RoutingMethod;
url?: string;
args?: string[];
}
export class RouteAction extends ReduxAction<IRoutingData> {
public readonly type: string;
constructor(payload: IRoutingData) {
payload.args = [payload.url];
payload.method = <any>RoutingMethod[payload.method];
super(payload);
this.type = CALL_HISTORY_METHOD;
}
}