diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js
index a0fd3cbd..f5509c08 100644
--- a/browser/components/MarkdownEditor.js
+++ b/browser/components/MarkdownEditor.js
@@ -4,6 +4,7 @@ import styles from './MarkdownEditor.styl'
import CodeEditor from 'browser/components/CodeEditor'
import MarkdownPreview from 'browser/components/MarkdownPreview'
import eventEmitter from 'browser/main/lib/eventEmitter'
+import { findStorage } from 'browser/lib/findStorage'
const _ = require('lodash')
class MarkdownEditor extends React.Component {
@@ -214,10 +215,7 @@ class MarkdownEditor extends React.Component {
let previewStyle = {}
if (this.props.ignorePreviewPointerEvents) previewStyle.pointerEvents = 'none'
- const cachedStorageList = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(cachedStorageList)) throw new Error('Target storage doesn\'t exist.')
- const storage = _.find(cachedStorageList, {key: storageKey})
- if (storage === undefined) throw new Error('Target storage doesn\'t exist.')
+ const storage = findStorage(storageKey)
return (
0 && editorFontSize < 132)) editorIndentSize = 4
- const cachedStorageList = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(cachedStorageList)) throw new Error('Target storage doesn\'t exist.')
- const storage = _.find(cachedStorageList, {key: note.storage})
- if (storage === undefined) throw new Error('Target storage doesn\'t exist.')
+ const storage = findStorage(note.storage)
if (note.type === 'SNIPPET_NOTE') {
let tabList = note.snippets.map((snippet, index) => {
diff --git a/browser/lib/findStorage.js b/browser/lib/findStorage.js
new file mode 100644
index 00000000..98d48236
--- /dev/null
+++ b/browser/lib/findStorage.js
@@ -0,0 +1,14 @@
+const _ = require('lodash')
+
+export function findStorage (storageKey) {
+ const cachedStorageList = JSON.parse(localStorage.getItem('storages'))
+ if (!_.isArray(cachedStorageList)) throw new Error('Target storage doesn\'t exist.')
+ const storage = _.find(cachedStorageList, {key: storageKey})
+ if (storage === undefined) throw new Error('Target storage doesn\'t exist.')
+
+ return storage
+}
+
+export default {
+ findStorage
+}
diff --git a/browser/main/lib/dataApi/copyImage.js b/browser/main/lib/dataApi/copyImage.js
index a9d9b638..8f7fa656 100644
--- a/browser/main/lib/dataApi/copyImage.js
+++ b/browser/main/lib/dataApi/copyImage.js
@@ -2,6 +2,7 @@ const fs = require('fs')
const path = require('path')
const _ = require('lodash')
const sander = require('sander')
+const { findStorage } = require('browser/lib/findStorage')
/**
* @description To copy an image and return the path.
@@ -12,11 +13,7 @@ const sander = require('sander')
function copyImage (filePath, storageKey) {
return new Promise((resolve, reject) => {
try {
- const cachedStorageList = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(cachedStorageList)) throw new Error('Target storage doesn\'t exist.')
- const storage = _.find(cachedStorageList, {key: storageKey})
- if (storage === undefined) throw new Error('Target storage doesn\'t exist.')
- const targetStorage = storage
+ const targetStorage = findStorage(storageKey)
const inputImage = fs.createReadStream(filePath)
const imageExt = path.extname(filePath)
diff --git a/browser/main/lib/dataApi/createFolder.js b/browser/main/lib/dataApi/createFolder.js
index f0b4ff28..9357e17c 100644
--- a/browser/main/lib/dataApi/createFolder.js
+++ b/browser/main/lib/dataApi/createFolder.js
@@ -3,6 +3,7 @@ const keygen = require('browser/lib/keygen')
const path = require('path')
const resolveStorageData = require('./resolveStorageData')
const CSON = require('@rokt33r/season')
+const { findStorage } = require('browser/lib/findStorage')
/**
* @param {String} storageKey
@@ -29,11 +30,7 @@ function createFolder (storageKey, input) {
if (!_.isString(input.name)) throw new Error('Name must be a string.')
if (!_.isString(input.color)) throw new Error('Color must be a string.')
- rawStorages = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(rawStorages)) throw new Error('Target storage doesn\'t exist.')
-
- targetStorage = _.find(rawStorages, {key: storageKey})
- if (targetStorage == null) throw new Error('Target storage doesn\'t exist.')
+ targetStorage = findStorage(storageKey)
} catch (e) {
return Promise.reject(e)
}
diff --git a/browser/main/lib/dataApi/createNote.js b/browser/main/lib/dataApi/createNote.js
index e0acc74e..29544ea6 100644
--- a/browser/main/lib/dataApi/createNote.js
+++ b/browser/main/lib/dataApi/createNote.js
@@ -4,6 +4,7 @@ const _ = require('lodash')
const keygen = require('browser/lib/keygen')
const path = require('path')
const CSON = require('@rokt33r/season')
+const { findStorage } = require('browser/lib/findStorage')
function validateInput (input) {
if (!_.isArray(input.tags)) input.tags = []
@@ -38,11 +39,7 @@ function createNote (storageKey, input) {
input = Object.assign({}, input)
validateInput(input)
- let cachedStorageList = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(cachedStorageList)) throw new Error('Target storage doesn\'t exist.')
-
- targetStorage = _.find(cachedStorageList, {key: storageKey})
- if (targetStorage == null) throw new Error('Target storage doesn\'t exist.')
+ targetStorage = findStorage(storageKey)
} catch (e) {
return Promise.reject(e)
}
diff --git a/browser/main/lib/dataApi/deleteFolder.js b/browser/main/lib/dataApi/deleteFolder.js
index 78e5747b..c687382d 100644
--- a/browser/main/lib/dataApi/deleteFolder.js
+++ b/browser/main/lib/dataApi/deleteFolder.js
@@ -4,6 +4,7 @@ const resolveStorageData = require('./resolveStorageData')
const resolveStorageNotes = require('./resolveStorageNotes')
const CSON = require('@rokt33r/season')
const sander = require('sander')
+const { findStorage } = require('browser/lib/findStorage')
/**
* @param {String} storageKey
@@ -21,11 +22,7 @@ function deleteFolder (storageKey, folderKey) {
let rawStorages
let targetStorage
try {
- rawStorages = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(rawStorages)) throw new Error('Target storage doesn\'t exist.')
-
- targetStorage = _.find(rawStorages, {key: storageKey})
- if (targetStorage == null) throw new Error('Target storage doesn\'t exist.')
+ targetStorage = findStorage(storageKey)
} catch (e) {
return Promise.reject(e)
}
diff --git a/browser/main/lib/dataApi/deleteNote.js b/browser/main/lib/dataApi/deleteNote.js
index 119e1952..52af55ab 100644
--- a/browser/main/lib/dataApi/deleteNote.js
+++ b/browser/main/lib/dataApi/deleteNote.js
@@ -2,15 +2,12 @@ const resolveStorageData = require('./resolveStorageData')
const _ = require('lodash')
const path = require('path')
const sander = require('sander')
+const { findStorage } = require('browser/lib/findStorage')
function deleteNote (storageKey, noteKey) {
let targetStorage
try {
- let cachedStorageList = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(cachedStorageList)) throw new Error('Target storage doesn\'t exist.')
-
- targetStorage = _.find(cachedStorageList, {key: storageKey})
- if (targetStorage == null) throw new Error('Target storage doesn\'t exist.')
+ targetStorage = findStorage(storageKey)
} catch (e) {
return Promise.reject(e)
}
diff --git a/browser/main/lib/dataApi/moveNote.js b/browser/main/lib/dataApi/moveNote.js
index c9e7592a..da44211d 100644
--- a/browser/main/lib/dataApi/moveNote.js
+++ b/browser/main/lib/dataApi/moveNote.js
@@ -4,17 +4,13 @@ const path = require('path')
const CSON = require('@rokt33r/season')
const keygen = require('browser/lib/keygen')
const sander = require('sander')
+const { findStorage } = require('browser/lib/findStorage')
function moveNote (storageKey, noteKey, newStorageKey, newFolderKey) {
let oldStorage, newStorage
try {
- let cachedStorageList = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(cachedStorageList)) throw new Error('Storage doesn\'t exist.')
-
- oldStorage = _.find(cachedStorageList, {key: storageKey})
- if (oldStorage == null) throw new Error('Storage doesn\'t exist.')
-
- newStorage = _.find(cachedStorageList, {key: newStorageKey})
+ oldStorage = findStorage(storageKey)
+ newStorage = findStorage(newStorageKey)
if (newStorage == null) throw new Error('Target storage doesn\'t exist.')
} catch (e) {
return Promise.reject(e)
diff --git a/browser/main/lib/dataApi/renameStorage.js b/browser/main/lib/dataApi/renameStorage.js
index 817a3800..3c82130d 100644
--- a/browser/main/lib/dataApi/renameStorage.js
+++ b/browser/main/lib/dataApi/renameStorage.js
@@ -1,5 +1,7 @@
const _ = require('lodash')
const resolveStorageData = require('./resolveStorageData')
+const { findStorage } = require('browser/lib/findStorage')
+
/**
* @param {String} key
* @param {String} name
diff --git a/browser/main/lib/dataApi/updateNote.js b/browser/main/lib/dataApi/updateNote.js
index f1b1f232..4bf5ca29 100644
--- a/browser/main/lib/dataApi/updateNote.js
+++ b/browser/main/lib/dataApi/updateNote.js
@@ -2,6 +2,7 @@ const resolveStorageData = require('./resolveStorageData')
const _ = require('lodash')
const path = require('path')
const CSON = require('@rokt33r/season')
+const { findStorage } = require('browser/lib/findStorage')
function validateInput (input) {
let validatedInput = {}
@@ -68,11 +69,7 @@ function updateNote (storageKey, noteKey, input) {
if (input == null) throw new Error('No input found.')
input = validateInput(input)
- let cachedStorageList = JSON.parse(localStorage.getItem('storages'))
- if (!_.isArray(cachedStorageList)) throw new Error('Target storage doesn\'t exist.')
-
- targetStorage = _.find(cachedStorageList, {key: storageKey})
- if (targetStorage == null) throw new Error('Target storage doesn\'t exist.')
+ targetStorage = findStorage(storageKey)
} catch (e) {
return Promise.reject(e)
}
diff --git a/tests/lib/find-storage-test.js b/tests/lib/find-storage-test.js
new file mode 100644
index 00000000..3d7fdc63
--- /dev/null
+++ b/tests/lib/find-storage-test.js
@@ -0,0 +1,32 @@
+const test = require('ava')
+const { findStorage } = require('browser/lib/findStorage')
+
+global.document = require('jsdom').jsdom('')
+global.window = document.defaultView
+global.navigator = window.navigator
+
+const Storage = require('dom-storage')
+const localStorage = window.localStorage = global.localStorage = new Storage(null, { strict: true })
+const path = require('path')
+const TestDummy = require('../fixtures/TestDummy')
+const sander = require('sander')
+const os = require('os')
+const storagePath = path.join(os.tmpdir(), 'test/find-storage')
+
+test.beforeEach((t) => {
+ t.context.storage = TestDummy.dummyStorage(storagePath)
+ localStorage.setItem('storages', JSON.stringify([t.context.storage.cache]))
+})
+
+// Unit test
+test('findStorage() should return a correct storage path(string)', t => {
+ const storageKey = t.context.storage.cache.key
+
+ t.is(findStorage(storageKey).key, storageKey)
+ t.is(findStorage(storageKey).path, storagePath)
+})
+
+test.after(function after () {
+ localStorage.clear()
+ sander.rimrafSync(storagePath)
+})