Skip to content

Commit cded9dc

Browse files
committed
refactor doAction to take an object
1 parent 9831cca commit cded9dc

File tree

3 files changed

+15
-12
lines changed

3 files changed

+15
-12
lines changed

.eslintrc

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"extends": "eslint-config-cycle",
33
"env": {
4-
"browser": true
4+
"browser": true,
5+
"node": true
56
}
67
}

index.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ import responseCollection from './lib/responseCollection'
33

44
export default function storageDriver(request$) {
55
// Execute writing actions.
6-
request$.subscribe((req) => {
7-
doAction(req.target, req.action, req.key, req.value)
8-
})
6+
request$.subscribe((request) => doAction(request))
97

108
// Return reading functions.
119
return responseCollection

lib/doAction.js

+12-8
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,21 @@
22
* @function doAction
33
* @description
44
* A universal write function for localStorage and sessionStorage.
5-
* @param {string} [target=local] - a string determines which storage to use
6-
* @param {string} [action=setItem] - a string determines the write action
7-
* @param {string} key - the key of a storage item
8-
* @param {string} value - the value of a storage item
5+
* @param {object} request - the storage request object
6+
* @param {string} request.target - a string determines which storage to use
7+
* @param {string} request.action - a string determines the write action
8+
* @param {string} request.key - the key of a storage item
9+
* @param {string} request.value - the value of a storage item
910
*/
10-
export default function doAction(target = 'local', action = 'setItem', key = undefined, value = undefined) { // eslint-disable-line
11+
function doAction(request) {
12+
const args = [request.target, request.action, request.key, request.value]
1113
// Store the third and the fourth parameter in a new array, if defined.
12-
const storageArgs = Array.prototype.slice.call(arguments, 2)
14+
const storageArgs = args.slice(2)
1315
// Determine the storage target.
14-
const storage = target === `local` ? localStorage : sessionStorage
16+
const storage = request.target === `local` ? localStorage : sessionStorage
1517

1618
// Execute the storage action and pass arguments if they were defined.
17-
storage[action](...storageArgs)
19+
storage[request.action](...storageArgs)
1820
}
21+
22+
export default doAction

0 commit comments

Comments
 (0)