aboutsummaryrefslogtreecommitdiff
path: root/src/console/reducers/console.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/console/reducers/console.ts')
-rw-r--r--src/console/reducers/console.ts64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/console/reducers/console.ts b/src/console/reducers/console.ts
new file mode 100644
index 0000000..3acd0e9
--- /dev/null
+++ b/src/console/reducers/console.ts
@@ -0,0 +1,64 @@
+import ColorScheme from "../../shared/ColorScheme";
+import {
+ CONSOLE_HIDE,
+ CONSOLE_HIDE_COMMAND,
+ CONSOLE_SET_COLORSCHEME,
+ CONSOLE_SET_CONSOLE_TEXT,
+ CONSOLE_SHOW_COMMAND,
+ CONSOLE_SHOW_ERROR,
+ CONSOLE_SHOW_FIND,
+ CONSOLE_SHOW_INFO,
+ ConsoleAction,
+} from "../actions/console";
+
+export interface State {
+ mode: string;
+ messageText: string;
+ consoleText: string;
+ colorscheme: ColorScheme;
+}
+
+export const defaultState = {
+ mode: "",
+ messageText: "",
+ consoleText: "",
+ colorscheme: ColorScheme.System,
+};
+
+// eslint-disable-next-line max-lines-per-function
+export default function reducer(
+ state: State = defaultState,
+ action: ConsoleAction
+): State {
+ switch (action.type) {
+ case CONSOLE_HIDE:
+ return { ...state, mode: "" };
+ case CONSOLE_SHOW_COMMAND:
+ return {
+ ...state,
+ mode: "command",
+ consoleText: action.text,
+ };
+ case CONSOLE_SHOW_FIND:
+ return { ...state, mode: "find", consoleText: "" };
+ case CONSOLE_SHOW_ERROR:
+ return { ...state, mode: "error", messageText: action.text };
+ case CONSOLE_SHOW_INFO:
+ return { ...state, mode: "info", messageText: action.text };
+ case CONSOLE_HIDE_COMMAND:
+ return {
+ ...state,
+ mode:
+ state.mode === "command" || state.mode === "find" ? "" : state.mode,
+ };
+ case CONSOLE_SET_CONSOLE_TEXT:
+ return { ...state, consoleText: action.consoleText };
+ case CONSOLE_SET_COLORSCHEME:
+ return {
+ ...state,
+ colorscheme: action.colorscheme,
+ };
+ default:
+ return state;
+ }
+}