UNPKG

@gongt/ts-stl-client

Version:
52 lines (43 loc) 1.29 kB
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; } }