# All files / src/store/hooks usePersistenceConfig.ts

100% Statements 56/56
100% Branches 10/10
100% Functions 6/6
100% Lines 56/56

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
    571x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    16x
    16x
    16x
    15x
    15x
    16x
    16x
    2x
    2x
    2x
    16x
    16x
    4x
    3x
    4x
    1x
    1x
    4x
    4x
    16x
    16x
    4x
    1x
    4x
    3x
    3x
    4x
    4x
    16x
    16x
    3x
    3x
    3x
    16x
    16x
    16x
    16x
    16x
    16x
    16x
    16x
    16x
    16x
     import { useState } from 'react'
    import {
      type PersistenceConfig,
      getPersistenceConfig,
      updatePersistenceConfig,
      enablePersistence,
      disablePersistence,
      enableLogging,
      disableLogging,
      setDebounceDelay,
    } from '../middleware'

    export function usePersistenceConfig() {
      const [config, setConfig] = useState<PersistenceConfig>(getPersistenceConfig())

      const refreshConfig = () => {
        setConfig(getPersistenceConfig())
      }

      const updateConfig = (partial: Partial<PersistenceConfig>) => {
        updatePersistenceConfig(partial)
        refreshConfig()
      }

      const togglePersistence = () => {
        if (config.enabled) {
          disablePersistence()
        } else {
          enablePersistence()
        }
        refreshConfig()
      }

      const toggleLogging = () => {
        if (config.logging) {
          disableLogging()
        } else {
          enableLogging()
        }
        refreshConfig()
      }

      const updateDebounceDelay = (ms: number) => {
        setDebounceDelay(ms)
        refreshConfig()
      }

      return {
        config,
        updateConfig,
        togglePersistence,
        toggleLogging,
        updateDebounceDelay,
        refreshConfig,
      }
    }