cyb/src/redux/features/action-bar.ts

import { PayloadAction, createSlice } from '@reduxjs/toolkit';
import { ActionBarStates } from 'src/containers/Search/constants';
import { AccountValue } from 'src/types/defaultAccount';

export interface LSAddress {
  address: string;
  keys: AccountValue['keys'];
}

interface ActionBarState {
  stage: ActionBarStates;
  toCid: string | null;
  fromCid: string | null;
  txHash?: string | null;
  txHeight: string | null;
  contentHash: string;

  address?: LSAddress;
  errorMessage?: string;
}

const initialState: ActionBarState = {
  stage: ActionBarStates.STAGE_INIT,
  txHeight: null,
  contentHash: '',
  fromCid: null,
  toCid: null,
};

const actionBarSlice = createSlice({
  name: 'actionBar',
  initialState,
  reducers: {
    setActionBarStage(state, { payload }: PayloadAction<ActionBarStates>) {
      state.stage = payload;
    },
    setToCid(state, { payload }: PayloadAction<string | null>) {
      state.toCid = payload;
    },
    setFromCid(state, { payload }: PayloadAction<string | null>) {
      state.fromCid = payload;
    },
    setTxHash(state, { payload }: PayloadAction<string | null>) {
      state.txHash = payload;
    },
    setTxHeight(state, { payload }: PayloadAction<string | null>) {
      state.txHeight = payload;
    },
    setContentHash(state, { payload }: PayloadAction<string>) {
      state.contentHash = payload;
    },
    setLSAddress(state, { payload }: PayloadAction<LSAddress | undefined>) {
      state.address = payload;
    },
    setErrorMessage(state, { payload }: PayloadAction<string | undefined>) {
      state.errorMessage = payload;
    },
    clearActionBarState() {
      return { ...initialState };
    },
  },
});

export const {
  setActionBarStage,
  setToCid,
  setFromCid,
  setTxHash,
  setTxHeight,
  setLSAddress,
  setContentHash,
  setErrorMessage,
  clearActionBarState,
} = actionBarSlice.actions;

export default actionBarSlice.reducer;

Neighbours