// Functions for manual storage backup and restoration
function dumpStorage({asFile=true}={}) {
    let dump = JSON.stringify(store.getState().storage, null, 2)
    if (asFile) {
        const dataUrl = "data:text/json;charset=utf-8," + window.escape(dump)
        var link = document.createElement("a")
        link.download = 'webmemex-backup.json'
        link.href = dataUrl
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link)
    }
    else {
        return dump
    }
}
function importFromDump({storageDump, deleteCurrent=false}={}) {
    if (storageDump === undefined)
        storageDump = prompt('Paste your JSON storage dump here (obtained from dumpStorage())')
    if (typeof storageDump === 'string') {
        if (storageDump === '') {
            storageDump = '{"docs": {}, "links": {}}'
        }
        storageDump = JSON.parse(storageDump)
    }

    let docCount = Object.keys(storageDump.docs).length
    let message = deleteCurrent
        ? 'Delete all, then import ' + docCount + ' docs?'
        : 'Load ' + docCount + ' docs?'
    if (confirm(message)) {
        store.dispatch(storage.importFromDump({storageDump, deleteCurrent}))
    }
}
function deleteAllDocs() {
    const cleanState = {docs: {}, links: {}}
    importFromDump({storageDump: cleanState, deleteCurrent: true})
}
window.dumpStorage = dumpStorage
window.importFromDump = importFromDump
window.deleteAllDocs = deleteAllDocs