aboutsummaryrefslogtreecommitdiff
path: root/src/content/reducers/follow-controller.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/reducers/follow-controller.ts')
-rw-r--r--src/content/reducers/follow-controller.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/content/reducers/follow-controller.ts b/src/content/reducers/follow-controller.ts
new file mode 100644
index 0000000..6965704
--- /dev/null
+++ b/src/content/reducers/follow-controller.ts
@@ -0,0 +1,40 @@
+import * as actions from '../actions';
+
+export interface State {
+ enabled: boolean;
+ newTab: boolean;
+ background: boolean;
+ keys: string,
+}
+
+const defaultState: State = {
+ enabled: false,
+ newTab: false,
+ background: false,
+ keys: '',
+};
+
+export default function reducer(
+ state: State = defaultState,
+ action: actions.FollowAction,
+): State {
+ switch (action.type) {
+ case actions.FOLLOW_CONTROLLER_ENABLE:
+ return { ...state,
+ enabled: true,
+ newTab: action.newTab,
+ background: action.background,
+ keys: '', };
+ case actions.FOLLOW_CONTROLLER_DISABLE:
+ return { ...state,
+ enabled: false, };
+ case actions.FOLLOW_CONTROLLER_KEY_PRESS:
+ return { ...state,
+ keys: state.keys + action.key, };
+ case actions.FOLLOW_CONTROLLER_BACKSPACE:
+ return { ...state,
+ keys: state.keys.slice(0, -1), };
+ default:
+ return state;
+ }
+}