Skip to content

Instantly share code, notes, and snippets.

@bruno2ms
Created January 19, 2021 18:01
Show Gist options
  • Save bruno2ms/0d9d9d01983eaa654e531463cf26adaa to your computer and use it in GitHub Desktop.
Save bruno2ms/0d9d9d01983eaa654e531463cf26adaa to your computer and use it in GitHub Desktop.
// https://github.com/miragejs/site/blob/master/src/lib/persist.js
// secret stuff in here.
// increase this number to bust all locally stored mirage
// databases
let currentVersion = 1
let initialData: object
function saveDb(server: any) {
localStorage.setItem('mirage:db:version', String(currentVersion))
localStorage.setItem('mirage:db:data', JSON.stringify(server.db.dump()))
}
export function addPersist(server: any) {
if (typeof window !== 'undefined') {
initialData = server.db.dump()
let version = localStorage.getItem('mirage:db:version')
let dataString = localStorage.getItem('mirage:db:data')
if (dataString && version === currentVersion.toString()) {
try {
resetDb(server, JSON.parse(dataString))
} catch (e) {
console.log('Error while addPersist: ', e)
}
}
let originalHandled = server.pretender.handledRequest
server.pretender.handledRequest = function() {
// eslint-disable-next-line prefer-rest-params
originalHandled.call(server.pretender, ...arguments)
saveDb(server)
}
}
}
export function resetDb(server: any, data = initialData) {
server.db.emptyData()
server.db.loadData(data)
saveDb(server)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment