From a501ac3c34a048d431f6f0c02f76e083da855848 Mon Sep 17 00:00:00 2001 From: Bartosz Kaszubowski Date: Fri, 19 Jun 2020 14:06:02 +0200 Subject: [PATCH 1/2] remove deep-assign dependency --- package.json | 3 --- src/AsyncStorage.js | 11 +++++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d942fb30..89c1ea0d 100644 --- a/package.json +++ b/package.json @@ -57,9 +57,6 @@ "react": "^16.8", "react-native": ">=0.59" }, - "dependencies": { - "deep-assign": "^3.0.0" - }, "devDependencies": { "@babel/core": "^7.6.2", "@babel/runtime": "^7.6.2", diff --git a/src/AsyncStorage.js b/src/AsyncStorage.js index 020d16ef..55847901 100644 --- a/src/AsyncStorage.js +++ b/src/AsyncStorage.js @@ -8,13 +8,20 @@ * @flow */ -import merge from 'deep-assign'; +const merge = (target, source) => { + for (const key of Object.keys(source)) { + if (source[key] instanceof Object) { + Object.assign(source[key], merge(target[key], source[key])); + } + } + return Object.assign({}, target || {}, source); +}; const mergeLocalStorageItem = (key, value) => { const oldValue = window.localStorage.getItem(key); const oldObject = JSON.parse(oldValue); const newObject = JSON.parse(value); - const nextValue = JSON.stringify(merge({}, oldObject, newObject)); + const nextValue = JSON.stringify(merge(oldObject, newObject)); window.localStorage.setItem(key, nextValue); }; From ba7b4202e6f76e60c23cd3fd02e6e1bfbae7335f Mon Sep 17 00:00:00 2001 From: Bartosz Kaszubowski Date: Fri, 19 Jun 2020 23:16:58 +0200 Subject: [PATCH 2/2] fix two cases with different output --- src/AsyncStorage.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/AsyncStorage.js b/src/AsyncStorage.js index 55847901..db88a4bf 100644 --- a/src/AsyncStorage.js +++ b/src/AsyncStorage.js @@ -8,13 +8,15 @@ * @flow */ -const merge = (target, source) => { +const merge = (target = {}, source = {}) => { for (const key of Object.keys(source)) { if (source[key] instanceof Object) { Object.assign(source[key], merge(target[key], source[key])); + } else { + source[key] = target[key] || source[key]; } } - return Object.assign({}, target || {}, source); + return Object.assign(target, source); }; const mergeLocalStorageItem = (key, value) => {