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

100% Statements 54/54
100% Branches 5/5
100% Functions 5/5
100% Lines 54/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
    551x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    3x
    3x
    3x
    1x
    3x
    3x
    3x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
     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