From 9c525bb19ec9a23beb61b27b74dc42b1296c8235 Mon Sep 17 00:00:00 2001 From: Pascal Wengerter Date: Thu, 20 May 2021 14:58:52 +0100 Subject: [PATCH] Introduce UPSERT_RESOURCE to files mutations --- .../unreleased/bugfix-upsert-resource-in-filestable | 7 +++++++ packages/web-app-files/src/components/AppBar.vue | 8 ++++---- packages/web-app-files/src/store/actions.js | 4 ++-- packages/web-app-files/src/store/mutations.js | 12 ++++-------- packages/web-app-files/src/views/SharedWithMe.vue | 6 +++--- .../web-app-files/src/views/SharedWithOthers.vue | 4 ++-- .../web-app-files/tests/views/SharedWithMe.setup.js | 2 +- 7 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 changelog/unreleased/bugfix-upsert-resource-in-filestable diff --git a/changelog/unreleased/bugfix-upsert-resource-in-filestable b/changelog/unreleased/bugfix-upsert-resource-in-filestable new file mode 100644 index 00000000000..de7b958c6d3 --- /dev/null +++ b/changelog/unreleased/bugfix-upsert-resource-in-filestable @@ -0,0 +1,7 @@ +Bugfix: Upsert resource in filestable + +When uploading an already existing resource in the filestable, we sometimes displayed both +files in the filestable until the page got refreshed. We now check when uploading a file if +it exists in the filestable and replace it there if that is the case. + +https://github.com/owncloud/web/pull/5130 diff --git a/packages/web-app-files/src/components/AppBar.vue b/packages/web-app-files/src/components/AppBar.vue index 97e78562b75..e4b1d7060af 100644 --- a/packages/web-app-files/src/components/AppBar.vue +++ b/packages/web-app-files/src/components/AppBar.vue @@ -252,7 +252,7 @@ export default { 'loadIndicators' ]), ...mapActions(['openFile', 'showMessage', 'createModal', 'setModalInputErrorMessage']), - ...mapMutations('Files', ['PUSH_NEW_RESOURCE']), + ...mapMutations('Files', ['UPSERT_RESOURCE']), ...mapMutations(['SET_QUOTA']), showCreateResourceModal(isFolder = true, ext = 'txt', openAction = null) { @@ -313,7 +313,7 @@ export default { } resource = buildResource(resource) - this.PUSH_NEW_RESOURCE(resource) + this.UPSERT_RESOURCE(resource) this.hideModal() if (this.isPersonalRoute) { @@ -405,7 +405,7 @@ export default { resource = buildResource(resource) - this.PUSH_NEW_RESOURCE(resource) + this.UPSERT_RESOURCE(resource) this.hideModal() if (this.isPersonalRoute) { @@ -481,7 +481,7 @@ export default { ) resource = buildResource(resource) - this.PUSH_NEW_RESOURCE(resource) + this.UPSERT_RESOURCE(resource) if (this.isPersonalRoute) { await this.loadIndicators({ diff --git a/packages/web-app-files/src/store/actions.js b/packages/web-app-files/src/store/actions.js index b4fa3adf049..a498e54ff3e 100644 --- a/packages/web-app-files/src/store/actions.js +++ b/packages/web-app-files/src/store/actions.js @@ -561,7 +561,7 @@ export default { } resource.preview = previewUrl - commit('UPDATE_RESOURCE', resource) + commit('UPSERT_RESOURCE', resource) continue } catch (ignored) {} @@ -570,7 +570,7 @@ export default { const previewUrl = davUrl + encodePath(resource.path) + '?' + queryString.stringify(query) try { resource.preview = await mediaSource(previewUrl, 'url') - commit('UPDATE_RESOURCE', resource) + commit('UPSERT_RESOURCE', resource) } catch (ignored) {} } } diff --git a/packages/web-app-files/src/store/mutations.js b/packages/web-app-files/src/store/mutations.js index b65ba11792f..c8458da2127 100644 --- a/packages/web-app-files/src/store/mutations.js +++ b/packages/web-app-files/src/store/mutations.js @@ -302,23 +302,19 @@ export default { state.files = files }, - PUSH_NEW_RESOURCE(state, resource) { - const files = [...state.files] - files.push(resource) - state.files = files - }, - SELECT_RESOURCES(state, resources) { state.selected = resources }, - UPDATE_RESOURCE(state, resource) { + UPSERT_RESOURCE(state, resource) { const files = [...state.files] const index = files.findIndex(r => r.id === resource.id) if (index > -1) { files.splice(index, 1, resource) - state.files = files + } else { + files.push(resource) } + state.files = files } } diff --git a/packages/web-app-files/src/views/SharedWithMe.vue b/packages/web-app-files/src/views/SharedWithMe.vue index 26d5577665e..e5aba5e27e3 100644 --- a/packages/web-app-files/src/views/SharedWithMe.vue +++ b/packages/web-app-files/src/views/SharedWithMe.vue @@ -159,7 +159,7 @@ export default { 'LOAD_FILES', 'SELECT_RESOURCES', 'CLEAR_CURRENT_FILES_LIST', - 'UPDATE_RESOURCE' + 'UPSERT_RESOURCE' ]), ...mapMutations(['SET_QUOTA']), @@ -192,7 +192,7 @@ export default { this.configuration.server, this.getToken, this.$client, - this.UPDATE_RESOURCE + this.UPSERT_RESOURCE ) this.LOAD_FILES({ currentFolder: rootFolder, files: resources }) @@ -263,7 +263,7 @@ export default { this.configuration.server, this.getToken ) - this.UPDATE_RESOURCE(sharedResource) + this.UPSERT_RESOURCE(sharedResource) } } catch (error) { this.showMessage({ diff --git a/packages/web-app-files/src/views/SharedWithOthers.vue b/packages/web-app-files/src/views/SharedWithOthers.vue index af4221d617e..6ad8db1e423 100644 --- a/packages/web-app-files/src/views/SharedWithOthers.vue +++ b/packages/web-app-files/src/views/SharedWithOthers.vue @@ -132,7 +132,7 @@ export default { 'LOAD_FILES', 'SELECT_RESOURCES', 'CLEAR_CURRENT_FILES_LIST', - 'UPDATE_RESOURCE' + 'UPSERT_RESOURCE' ]), ...mapMutations(['SET_QUOTA']), @@ -165,7 +165,7 @@ export default { this.configuration.server, this.getToken, this.$client, - this.UPDATE_RESOURCE + this.UPSERT_RESOURCE ) this.LOAD_FILES({ currentFolder: rootFolder, files: resources }) diff --git a/packages/web-app-files/tests/views/SharedWithMe.setup.js b/packages/web-app-files/tests/views/SharedWithMe.setup.js index 25dad44813c..f91b9aa91ac 100644 --- a/packages/web-app-files/tests/views/SharedWithMe.setup.js +++ b/packages/web-app-files/tests/views/SharedWithMe.setup.js @@ -47,7 +47,7 @@ export const store = createStore(Vuex.Store, { highlightedFile: () => null }, mutations: { - UPDATE_RESOURCE: (state, resource) => { + UPSERT_RESOURCE: (state, resource) => { state.resource = resource } },