All files / src/store/features/assets assetsState.ts

100% Statements 8/8
100% Branches 0/0
100% Functions 2/2
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 6822x                                   22x         22x                       1x                           2x 2x                           22x   22x  
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
 
type BackgroundAsset = {
  id: string;
  is360: boolean;
  isCGBOnly: boolean;
  tilesetId?: string;
  warnings: string[];
  numTiles: number;
  lookup: number[];
  timestamp: number;
};
 
export interface AssetsState {
  backgroundsLoading: boolean;
  backgrounds: Record<string, BackgroundAsset>;
}
 
export const initialState: AssetsState = {
  backgroundsLoading: false,
  backgrounds: {},
};
 
const assetsSlice = createSlice({
  name: "assets",
  initialState,
  reducers: {
    loadBackgroundAssetInfo: (
      state,
      _action: PayloadAction<{
        backgroundId: string;
        tilesetId?: string;
        is360: boolean;
      }>
    ) => {
      state.backgroundsLoading = true;
    },
    setBackgroundAssetInfo: (
      state,
      action: PayloadAction<{
        id: string;
        is360: boolean;
        tilesetId?: string;
        isCGBOnly: boolean;
        warnings: string[];
        numTiles: number;
        lookup: number[];
      }>
    ) => {
      state.backgroundsLoading = false;
      state.backgrounds[action.payload.id] = {
        id: action.payload.id,
        is360: action.payload.is360,
        tilesetId: action.payload.tilesetId,
        isCGBOnly: action.payload.isCGBOnly,
        warnings: action.payload.warnings,
        numTiles: action.payload.numTiles,
        lookup: action.payload.lookup,
        timestamp: Date.now(),
      };
    },
  },
});
 
export const { actions, reducer } = assetsSlice;
 
export default reducer;