const _ = require('lodash') const path = require('path') const resolveStorageData = require('./resolveStorageData') const resolveStorageNotes = require('./resolveStorageNotes') const CSON = require('@rokt33r/season') const { findStorage } = require('browser/lib/findStorage') const deleteSingleNote = require('./deleteNote') /** * @param {String} storageKey * @param {String} folderKey * * @return {Object} * ``` * { * storage: Object, * folderKey: String * } * ``` */ function deleteFolder (storageKey, folderKey) { let targetStorage try { targetStorage = findStorage(storageKey) } catch (e) { return Promise.reject(e) } return resolveStorageData(targetStorage) .then(function assignNotes (storage) { return resolveStorageNotes(storage) .then((notes) => { return { storage, notes } }) }) .then(function deleteFolderAndNotes (data) { const { storage, notes } = data storage.folders = storage.folders .filter(function excludeTargetFolder (folder) { return folder.key !== folderKey }) const targetNotes = notes.filter(function filterTargetNotes (note) { return note.folder === folderKey }) const deleteAllNotes = targetNotes .map(function deleteNote (note) { return deleteSingleNote(storageKey, note.key) }) return Promise.all(deleteAllNotes) .then(() => storage) }) .then(function (storage) { CSON.writeFileSync(path.join(storage.path, 'boostnote.json'), _.pick(storage, ['folders', 'version'])) return { storage, folderKey } }) } module.exports = deleteFolder