0595d2822b3f910bf727e6d4aadca59e8fab7810
[arvados-workbench2.git] / src / store / snackbar / snackbar-reducer.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { SnackbarAction, snackbarActions, SnackbarKind } from "./snackbar-actions";
6
7 export interface SnackbarState {
8     message: string;
9     open: boolean;
10     hideDuration: number;
11     kind: SnackbarKind;
12 }
13
14 const DEFAULT_HIDE_DURATION = 3000;
15
16 const initialState: SnackbarState = {
17     message: "",
18     open: false,
19     hideDuration: DEFAULT_HIDE_DURATION,
20     kind: SnackbarKind.INFO
21 };
22
23 export const snackbarReducer = (state = initialState, action: SnackbarAction) => {
24     return snackbarActions.match(action, {
25         OPEN_SNACKBAR: data => ({ ...initialState, ...data, open: true }),
26         CLOSE_SNACKBAR: () => initialState,
27         default: () => state,
28     });
29 };