1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // @flow
- import type { Storage } from '../types'
- function noop() {}
- let noopStorage = {
- getItem: noop,
- setItem: noop,
- removeItem: noop,
- }
- function hasStorage(storageType) {
- if (typeof self !== 'object' || !(storageType in self)) {
- return false
- }
- try {
- let storage = self[storageType]
- const testKey = `redux-persist ${storageType} test`
- storage.setItem(testKey, 'test')
- storage.getItem(testKey)
- storage.removeItem(testKey)
- } catch (e) {
- if (process.env.NODE_ENV !== 'production')
- console.warn(
- `redux-persist ${storageType} test failed, persistence will be disabled.`
- )
- return false
- }
- return true
- }
- export default function getStorage(type: string): Storage {
- const storageType = `${type}Storage`
- if (hasStorage(storageType)) return self[storageType]
- else {
- if (process.env.NODE_ENV !== 'production') {
- console.error(
- `redux-persist failed to create sync storage. falling back to noop storage.`
- )
- }
- return noopStorage
- }
- }
|