# All files / src/store/slices uiSlice.ts

0% Statements 0/54
0% Branches 0/1
0% Functions 0/1
0% Lines 0/54

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

     import { createSlice, PayloadAction } from '@reduxjs/toolkit'
    import { Snippet } from '@/lib/types'

    interface UiState {
      dialogOpen: boolean
      viewerOpen: boolean
      editingSnippet: Snippet | null
      viewingSnippet: Snippet | null
      searchQuery: string
    }

    const initialState: UiState = {
      dialogOpen: false,
      viewerOpen: false,
      editingSnippet: null,
      viewingSnippet: null,
      searchQuery: '',
    }

    const uiSlice = createSlice({
      name: 'ui',
      initialState,
      reducers: {
        openDialog: (state, action: PayloadAction<Snippet | null>) => {
          state.dialogOpen = true
          state.editingSnippet = action.payload
        },
        closeDialog: (state) => {
          state.dialogOpen = false
          state.editingSnippet = null
        },
        openViewer: (state, action: PayloadAction<Snippet>) => {
          state.viewerOpen = true
          state.viewingSnippet = action.payload
        },
        closeViewer: (state) => {
          state.viewerOpen = false
          state.viewingSnippet = null
        },
        setSearchQuery: (state, action: PayloadAction<string>) => {
          state.searchQuery = action.payload
        },
      },
    })

    export const {
      openDialog,
      closeDialog,
      openViewer,
      closeViewer,
      setSearchQuery,
    } = uiSlice.actions

    export default uiSlice.reducer