production-taskbar-client / src / renderer / features / programs / programsSlice.js
programsSlice.js
Raw
import { createSlice } from "@reduxjs/toolkit";

export const programsSlice = createSlice({
  name: "programs",
  initialState: {
    programsNotExist: [],
    programsError: [],
    iconURLs: {},
    taskbarPrograms: {},
    foreground: undefined,
  },
  reducers: {
    setProgramNotExist: (state, action) => {
      const program = action.payload;
      const { name } = program;
      if (state.programsNotExist.find((e) => e === name)) return;

      state.programsNotExist.push(program.name);
    },
    addTaskbarProgram: (state, action) => {
      const program = action.payload;
      const { hwnd } = program;
      state.taskbarPrograms[hwnd] = program;
    },
    removeTaskbarProgram: (state, action) => {
      const program = action.payload;
      const { hwnd } = program;
      delete state.taskbarPrograms[hwnd];
    },
    setForeground: (state, action) => {
      state.foreground = action.payload;
    },
  },
});

export const {
  setProgramNotExist,
  addTaskbarProgram,
  removeTaskbarProgram,
  setForeground,
} = programsSlice.actions;

export default programsSlice.reducer;