aboutsummaryrefslogtreecommitdiff
path: root/src/console/app/recuer.ts
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2021-04-11 22:30:41 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2021-04-11 22:34:55 +0900
commit8a5bba1da639355a25da8c279a9f1cf0a7300a9f (patch)
tree2f82e9184e2a249cff4a607764f88b724fae1013 /src/console/app/recuer.ts
parent6767b38c8e57c9f436936dc02ad1c8c4ffd043b2 (diff)
Replace app state with Custom Hooks
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;
+ }
+}