| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { createSlice } from "@reduxjs/toolkit";
- export interface FileState {
- path: string;
- savedContent: string;
- unsavedContent: string;
- }
- export const initialState = {
- code: "",
- path: "",
- refreshID: 0,
- fileStates: [] as FileState[],
- };
- export const codeSlice = createSlice({
- name: "code",
- initialState,
- reducers: {
- setCode: (state, action) => {
- state.code = action.payload;
- },
- setActiveFilepath: (state, action) => {
- state.path = action.payload;
- },
- setRefreshID: (state, action) => {
- state.refreshID = action.payload;
- },
- setFileStates: (state, action) => {
- state.fileStates = action.payload;
- },
- addOrUpdateFileState: (state, action) => {
- const { path, unsavedContent, savedContent } = action.payload;
- const newFileStates = state.fileStates.filter(
- (fileState) => fileState.path !== path,
- );
- newFileStates.push({ path, savedContent, unsavedContent });
- state.fileStates = newFileStates;
- },
- removeFileState: (state, action) => {
- const path = action.payload;
- state.fileStates = state.fileStates.filter(
- (fileState) => fileState.path !== path,
- );
- },
- },
- });
- export const {
- setCode,
- setActiveFilepath,
- setRefreshID,
- addOrUpdateFileState,
- removeFileState,
- setFileStates,
- } = codeSlice.actions;
- export default codeSlice.reducer;
|