From 9f7c3b75eb5b0001742582d0777e950dde68139d Mon Sep 17 00:00:00 2001 From: Brian Clifton Date: Fri, 2 Jun 2017 16:02:39 -0700 Subject: [PATCH] Merge pull request #9187 from brave/fix/sync-hierarchy fix sync duplicating folders --- app/browser/reducers/sitesReducer.js | 24 ++++++++++++++---------- js/state/siteUtil.js | 16 ---------------- js/stores/appStore.js | 4 ++++ 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/app/browser/reducers/sitesReducer.js b/app/browser/reducers/sitesReducer.js index 65f412c592b..8c7c9709e16 100644 --- a/app/browser/reducers/sitesReducer.js +++ b/app/browser/reducers/sitesReducer.js @@ -49,9 +49,13 @@ const sitesReducer = (state, action, immutableAction) => { } break case appConstants.APP_ADD_SITE: + const isSyncEnabled = syncEnabled() if (Immutable.List.isList(action.siteDetail)) { action.siteDetail.forEach((s) => { state = siteUtil.addSite(state, s, action.tag, undefined, action.skipSync) + if (isSyncEnabled) { + state = syncUtil.updateSiteCache(state, s) + } }) } else { let sites = state.get('sites') @@ -59,18 +63,18 @@ const sitesReducer = (state, action, immutableAction) => { action.siteDetail = action.siteDetail.set('folderId', siteUtil.getNextFolderId(sites)) } state = siteUtil.addSite(state, action.siteDetail, action.tag, action.originalSiteDetail, action.skipSync) - } - if (action.destinationDetail) { - const sourceKey = siteUtil.getSiteKey(action.siteDetail) - const destinationKey = siteUtil.getSiteKey(action.destinationDetail) + if (action.destinationDetail) { + const sourceKey = siteUtil.getSiteKey(action.siteDetail) + const destinationKey = siteUtil.getSiteKey(action.destinationDetail) - if (sourceKey != null) { - state = siteUtil.moveSite(state, - sourceKey, destinationKey, false, false, true) + if (sourceKey != null) { + state = siteUtil.moveSite(state, + sourceKey, destinationKey, false, false, true) + } + } + if (isSyncEnabled) { + state = syncUtil.updateSiteCache(state, action.destinationDetail || action.siteDetail) } - } - if (syncEnabled()) { - state = syncUtil.updateSiteCache(state, action.destinationDetail || action.siteDetail) } state = updateActiveTabBookmarked(state) break diff --git a/js/state/siteUtil.js b/js/state/siteUtil.js index ea15bbf0578..7237b9af77c 100644 --- a/js/state/siteUtil.js +++ b/js/state/siteUtil.js @@ -853,19 +853,3 @@ module.exports.getOrigin = function (location) { return null } } - -/** - * Sets object id on a state entry. - * @param {Immutable.Map} item - * @returns {Immutable.map} - */ -module.exports.setObjectId = (item) => { - if (!item || !item.toJS) { - return - } - if (item.get('objectId')) { - return item - } - const crypto = require('crypto') - return item.set('objectId', new Immutable.List(crypto.randomBytes(16))) -} diff --git a/js/stores/appStore.js b/js/stores/appStore.js index 1e3a040fcef..9033dbba466 100644 --- a/js/stores/appStore.js +++ b/js/stores/appStore.js @@ -813,6 +813,10 @@ const handleAppAction = (action) => { if (obj && obj.constructor === Immutable.Map) { appState = appState.setIn(action.objectPath.concat(['objectId']), action.objectId) + // Update the site cache if this is a site + if (action.objectPath[0] === 'sites') { + appState = syncUtil.updateSiteCache(appState, obj) + } } break case appConstants.APP_SAVE_SYNC_DEVICES: