diff options
author | Christoph Wurst <ChristophWurst@users.noreply.github.com> | 2018-11-09 12:22:26 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-09 12:22:26 +0300 |
commit | aa829b84fbdfed64bde77f32904f36627c7bb27d (patch) | |
tree | 961b3bdb2b87c99ed8083c5682be6b0bfbee0698 | |
parent | faacc2bbc0a43fa6122fc15ae650e0cccb9fb19d (diff) | |
parent | b8536157f6ccc406370dd5e53c35138988cb2063 (diff) |
Merge pull request #1292 from nextcloud/fix/vue-new-synced-envelopesv0.12.0-alpha2
Fix missing incoming envelopes from background sync
-rw-r--r-- | src/store.js | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/src/store.js b/src/store.js index 0d7aa4c77..97a880cab 100644 --- a/src/store.js +++ b/src/store.js @@ -51,25 +51,34 @@ export const mutations = { }, addEnvelope (state, {accountId, folder, envelope}) { const uid = accountId + '-' + folder.id + '-' + envelope.id - const insert = folder => { - Vue.set( - folder, - 'envelopes', - _.sortedUniq( - _.orderBy( - folder.envelopes.concat([uid]), - id => state.envelopes[id].dateInt, - 'desc' - ) - ) - ) - } - envelope.accountId = accountId envelope.folderId = folder.id envelope.uid = uid Vue.set(state.envelopes, uid, envelope) - insert(folder) + Vue.set( + folder, + 'envelopes', + _.sortedUniq( + _.orderBy( + folder.envelopes.concat([uid]), + id => state.envelopes[id].dateInt, + 'desc' + ) + ) + ) + }, + addUnifiedEnvelope (state, {folder, envelope}) { + Vue.set( + folder, + 'envelopes', + _.sortedUniq( + _.orderBy( + folder.envelopes.concat([envelope.uid]), + id => state.envelopes[id].dateInt, + 'desc' + ) + ) + ) }, addUnifiedEnvelopes (state, {folder, uids}) { Vue.set(folder, 'envelopes', uids) @@ -319,12 +328,20 @@ export const actions = { const uids = getters.getEnvelopes(accountId, folderId).map(env => env.id) return syncEnvelopes(accountId, folderId, syncToken, uids).then(syncData => { + const unifiedFolder = getters.getUnifiedFolder(folder.specialRole) + syncData.newMessages.concat(syncData.changedMessages).forEach(envelope => { commit('addEnvelope', { accountId, folder, envelope }) + if (unifiedFolder) { + commit('addUnifiedEnvelope', { + folder: unifiedFolder, + envelope + }) + } }) syncData.vanishedMessages.forEach(id => { commit('removeEnvelope', { @@ -332,6 +349,7 @@ export const actions = { folder, id }) + // Already removed from unified inbox }) commit('updateFolderSyncToken', { folder, @@ -474,6 +492,14 @@ export const getters = { getFolders: (state) => (accountId) => { return state.accounts[accountId].folders.map(folderId => state.folders[folderId]) }, + getUnifiedFolder: (state) => (specialRole) => { + return _.head( + state.accounts[UNIFIED_ACCOUNT_ID] + .folders + .map(folderId => state.folders[folderId]) + .filter(folder => folder.specialRole === specialRole) + ) + }, getEnvelope: (state) => (accountId, folderId, id) => { return state.envelopes[accountId + '-' + folderId + '-' + id] }, |