// Copyright (c) 2020-2021 Drew Lemmy
// This file is part of TenebraWeb 2 under AGPL-3.0.
// Full details: https://github.com/tmpim/TenebraWeb2/blob/master/LICENSE.txt
import { createReducer } from "typesafe-actions";
import {
  incrementNameTableLock, decrementNameTableLock, setTip
} from "@actions/MiscActions";

export interface State {
  readonly nameTableLock: number;
  readonly tip: number;
}

const initialState: State = {
  nameTableLock: 0,
  tip: localStorage.getItem("tip") !== null
    ? parseInt(localStorage.getItem("tip")!)
    : -1
};

export const MiscReducer = createReducer(initialState)
  .handleAction(incrementNameTableLock, (state, _) => ({
    ...state,
    nameTableLock: state.nameTableLock + 1
  }))
  .handleAction(decrementNameTableLock, (state, _) => ({
    ...state,
    nameTableLock: state.nameTableLock - 1
  }))
  .handleAction(setTip, (state, { payload }) => ({
    ...state, tip: payload
  }));
