aboutsummaryrefslogtreecommitdiff
path: root/src/console/app/recuer.ts
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2021-04-12 13:09:09 +0000
committerGitHub <noreply@github.com>2021-04-12 13:09:09 +0000
commitd80d0f87b82ba4bd74ed9b2bb7354421a28a11b3 (patch)
tree691185ad88418d0f44c236d0913cf5c425b29b23 /src/console/app/recuer.ts
parentea73c900f66107fd4a5b2f3b05080bcf643c94ea (diff)
parent8a5bba1da639355a25da8c279a9f1cf0a7300a9f (diff)
Merge pull request #1098 from ueokande/replace-redux-with-react-hooks
Refactor state management with React Hooks on Console
Diffstat (limited to 'src/console/app/recuer.ts')
-rw-r--r--src/console/app/recuer.ts52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/console/app/recuer.ts b/src/console/app/recuer.ts
new file mode 100644
index 0000000..e3043ee
--- /dev/null
+++ b/src/console/app/recuer.ts
@@ -0,0 +1,52 @@
+import {
+ HIDE,
+ HIDE_COMMAND,
+ SHOW_COMMAND,
+ SHOW_ERROR,
+ SHOW_FIND,
+ SHOW_INFO,
+ AppAction,
+} from "./actions";
+
+export interface State {
+ mode: string;
+ messageText: string;
+ consoleText: string;
+}
+
+export const defaultState = {
+ mode: "",
+ messageText: "",
+ consoleText: "",
+};
+
+// eslint-disable-next-line max-lines-per-function
+export default function reducer(
+ state: State = defaultState,
+ action: AppAction
+): State {
+ switch (action.type) {
+ case HIDE:
+ return { ...state, mode: "" };
+ case SHOW_COMMAND:
+ return {
+ ...state,
+ mode: "command",
+ consoleText: action.text,
+ };
+ case SHOW_FIND:
+ return { ...state, mode: "find", consoleText: "" };
+ case SHOW_ERROR:
+ return { ...state, mode: "error", messageText: action.text };
+ case SHOW_INFO:
+ return { ...state, mode: "info", messageText: action.text };
+ case HIDE_COMMAND:
+ return {
+ ...state,
+ mode:
+ state.mode === "command" || state.mode === "find" ? "" : state.mode,
+ };
+ default:
+ return state;
+ }
+}