ligo/tools/webide/packages/client/src/redux/result.ts
2020-02-27 14:26:42 -08:00

56 lines
1.2 KiB
TypeScript

import { Command } from './types';
export enum ActionType {
ChangeOutput = 'result-change-output',
ChangeContract = 'result-change-contract'
}
export interface ResultState {
command: Command;
output: string;
contract: string;
}
export class ChangeOutputAction {
public readonly type = ActionType.ChangeOutput;
constructor(
public output: ResultState['output'],
public command: ResultState['command']
) {}
}
export class ChangeContractAction {
public readonly type = ActionType.ChangeContract;
constructor(
public contract: ResultState['contract'],
public command: ResultState['command']
) {}
}
type Action = ChangeOutputAction | ChangeContractAction;
const DEFAULT_STATE: ResultState = {
command: Command.Compile,
output: '',
contract: ''
};
export default (state = DEFAULT_STATE, action: Action): ResultState => {
switch (action.type) {
case ActionType.ChangeOutput:
return {
...state,
output: action.output,
command: action.command
};
case ActionType.ChangeContract:
return {
...state,
output: DEFAULT_STATE.output,
contract: action.contract,
command: action.command
};
}
return state;
};