diff --git a/changes/changelog.d/606.bugfix b/changes/changelog.d/606.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..95db711975d8e37affe5ca6b127f1b5f48598eef --- /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 ec3b8f994d2abfdebf845e07c47063bc886c2dae..0c27d9a9aecabdf9d20cc59db473e11096f5a58b 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 7551f444907f97d2a06f890908adb788e8f53786..70dbe26babe36933a111f286dc257a8236bb2dea 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')