Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Wurst <ChristophWurst@users.noreply.github.com>2018-11-09 12:22:26 +0300
committerGitHub <noreply@github.com>2018-11-09 12:22:26 +0300
commitaa829b84fbdfed64bde77f32904f36627c7bb27d (patch)
tree961b3bdb2b87c99ed8083c5682be6b0bfbee0698
parentfaacc2bbc0a43fa6122fc15ae650e0cccb9fb19d (diff)
parentb8536157f6ccc406370dd5e53c35138988cb2063 (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.js56
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]
},