// https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
export const storageIsSupported = (type: 'localStorage' | 'sessionStorage') => {
  let storage: Storage | undefined

  try {
    storage = window[type]
    const itemKey = '__storage_test__'

    storage.setItem(itemKey, itemKey)
    storage.removeItem(itemKey)

    return true
  } catch (e) {
    return (
      e instanceof DOMException &&
      // everything except Firefox
      (e.code === 22 ||
        // Firefox
        e.code === 1014 ||
        // test name field too, because code might not be present
        // everything except Firefox
        e.name === 'QuotaExceededError' ||
        // Firefox
        e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
      // acknowledge QuotaExceededError only if there's something already stored
      storage &&
      storage.length !== 0
    )
  }
}

export const getItem = (key: string) => {
  return localStorage.getItem(key)
}

export const setItem = (key: string, value: string) => {
  localStorage.setItem(key, value)
}
