From 3d3175f3c9dba810760a707987971db4538ce4b8 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Fri, 9 Nov 2018 20:41:40 +0100 Subject: [PATCH] Fix #606: Refresh profile after user settings update to avoid cache issues --- changes/changelog.d/606.bugfix | 1 + front/src/components/auth/Settings.vue | 3 +++ front/src/store/auth.js | 21 +++++++++++++-------- 3 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 changes/changelog.d/606.bugfix diff --git a/changes/changelog.d/606.bugfix b/changes/changelog.d/606.bugfix new file mode 100644 index 000000000..95db71197 --- /dev/null +++ b/changes/changelog.d/606.bugfix @@ -0,0 +1 @@ +Refresh profile after user settings update to avoid cache issues (#606) diff --git a/front/src/components/auth/Settings.vue b/front/src/components/auth/Settings.vue index ec3b8f994..0c27d9a9a 100644 --- a/front/src/components/auth/Settings.vue +++ b/front/src/components/auth/Settings.vue @@ -170,6 +170,9 @@ export default { return axios.patch(url, payload).then(response => { logger.default.info('Updated settings successfully') self.settings.success = true + return axios.get('users/users/me/').then((response) => { + self.$store.dispatch('auth/updateProfile', response.data) + }) }, error => { logger.default.error('Error while updating settings') self.isLoading = false diff --git a/front/src/store/auth.js b/front/src/store/auth.js index 7551f4449..70dbe26ba 100644 --- a/front/src/store/auth.js +++ b/front/src/store/auth.js @@ -119,22 +119,27 @@ export default { return axios.get('users/users/me/').then((response) => { logger.default.info('Successfully fetched user profile') - let data = response.data - commit('authenticated', true) - commit('profile', data) - commit('username', data.username) + dispatch('updateProfile', response.data) dispatch('ui/fetchUnreadNotifications', null, { root: true }) dispatch('favorites/fetch', null, { root: true }) dispatch('playlists/fetchOwn', null, { root: true }) - Object.keys(data.permissions).forEach(function (key) { - // this makes it easier to check for permissions in templates - commit('permission', {key, status: data.permissions[String(key)]}) - }) return response.data }, (response) => { logger.default.info('Error while fetching user profile') }) }, + updateProfile({ commit }, data) { + commit("authenticated", true) + commit("profile", data) + commit("username", data.username) + Object.keys(data.permissions).forEach(function(key) { + // this makes it easier to check for permissions in templates + commit("permission", { + key, + status: data.permissions[String(key)] + }) + }) + }, refreshToken ({commit, dispatch, state}) { return axios.post('token/refresh/', {token: state.token}).then(response => { logger.default.info('Refreshed auth token')