Skip to content

Instantly share code, notes, and snippets.

@futhr
Created December 11, 2017 01:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save futhr/7458e8fad11a7fbd5bd16bcc822631e2 to your computer and use it in GitHub Desktop.
Save futhr/7458e8fad11a7fbd5bd16bcc822631e2 to your computer and use it in GitHub Desktop.
Vue: Forage Adapter
// -----------------------------------------------------------------------------
// Vue: Forage Adapter
//
// @example
//
// import VueForage from "services/vueforage"
//
// Vue.use(VueForage)
//
// this.$vueForage.creageInstance({
// storeName: "user"
// }).then(store => {
// store.setItem("key", [])
// store.length().then(keys => console.log(keys))
// store.iterate((value, key, num) => {
// return [key, value]
// }).then(result => console.log(result))
// })
//
// -----------------------------------------------------------------------------
import localForage from "localforage"
const vueForage = {
install(Vue, options) {
Vue.prototype.$vueForage = new Vue({
name: "vueForage",
methods: {
getItem(key) {
return new Promise((resolve, reject) => {
localForage.getItem(key)
.then(value => resolve(value))
.catch(err => reject(err))
})
},
setItem(key, value) {
return new Promise((resolve, reject) => {
localForage.setItem(key, value)
.then(value => resolve(value))
.catch(err => reject(err))
})
},
removeItem(key) {
return new Promise((resolve, reject) => {
localForage.removeItem(key)
.then(() => resolve())
.catch(err => reject(err))
})
},
clear() {
return new Promise((resolve, reject) => {
localForage.clear()
.then(() => resolve())
.catch(err => reject(err))
})
},
length() {
return new Promise((resolve, reject) => {
localForage.length()
.then(numberOfKeys => resolve(numberOfKeys))
.catch(err => reject(err))
})
},
key(keyIndex) {
return new Promise((resolve, reject) => {
localForage.key(keyIndex)
.then(keyName => resolve(keyName))
.catch(err => reject(err))
})
},
keys() {
return new Promise((resolve, reject) => {
localForage.keys()
.then(keys => resolve(keys))
.catch(err => reject(err))
})
},
iterate() {
return new Promise((resolve, reject) => {
localForage.iterate((value, key, iterationNumber) => {
resolve([value, key, iterationNumber])
})
.then(result => resolve(result))
.catch(err => {
// This code runs if there were any errors
console.log(err)
reject(err)
})
})
},
setDriver(drivreName) {
return new Promise((resolve, reject) => {
resolve(localForage.setDriver(driverName))
})
},
config(options) {
return new Promise((resolve, reject) => {
resolve(localForage.config(options))
})
},
createInstance(options) {
return new Promise((resolve, reject) => {
resolve(localForage.createInstance(options))
})
}
}
})
}
}
export default vueForage
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment