redux-token-auth/src/AsyncLocalStorage.ts
2017-09-27 15:08:29 -07:00

69 lines
1.8 KiB
TypeScript

const AsyncLocalStorage = {
getItem: (key: string): Promise<any> => new Promise((resolve, reject) => {
try {
const value: string | null = window.localStorage.getItem(key)
resolve(value)
} catch (error) {
reject(error)
}
}),
setItem: (key: string, value: string) => new Promise((resolve, reject) => {
try {
window.localStorage.setItem(key, value)
resolve(value)
} catch (error) {
reject(error)
}
}),
removeItem: (key: string): Promise<any> => new Promise((resolve, reject) => {
try {
const value: string | null = window.localStorage.getItem(key)
window.localStorage.removeItem(key)
resolve(value)
} catch (error) {
reject(error)
}
}),
clear: () => new Promise((resolve, reject) => {
try {
window.localStorage.clear()
resolve(true)
} catch (error) {
reject(error)
}
}),
getAllKeys: () => new Promise((resolve, reject) => {
try {
const allKeys = Object.keys(window.localStorage)
resolve(allKeys)
} catch (error) {
reject(error)
}
}),
multiGet: (keys: string[]) => new Promise((resolve, reject) => {
try {
const values = keys.map(key => [ key, window.localStorage.getItem(key) ])
resolve(values)
} catch (error) {
reject(error)
}
}),
multiSet: (keyValuePairs: string[][]) => new Promise((resolve, reject) => {
try {
keyValuePairs.forEach(keyValuePair => window.localStorage.setItem(keyValuePair[0], keyValuePair[1]))
const newKeyValuePairs = keyValuePairs.map(keyValuePair => [ keyValuePair[0], window.localStorage.getItem(keyValuePair[0]) ])
resolve(newKeyValuePairs)
} catch (error) {
reject(error)
}
}),
}
export default AsyncLocalStorage