From b668723313be091d32b1200392d65946774355f1 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Thu, 6 Oct 2022 06:01:12 +0530 Subject: [PATCH] chore: Ability to change default account (#5393) Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Tejaswini Chile --- app/controllers/api/v1/profiles_controller.rb | 6 ++ app/javascript/dashboard/App.vue | 3 + app/javascript/dashboard/api/auth.js | 9 +++ app/javascript/dashboard/api/endPoints.js | 4 + .../sidebarComponents/AccountSelector.vue | 79 ++++++++++++++----- app/javascript/dashboard/helper/URLHelper.js | 6 +- .../dashboard/store/modules/auth.js | 8 ++ .../store/modules/specs/auth/actions.spec.js | 11 +++ config/routes.rb | 1 + .../api/v1/profiles_controller_spec.rb | 23 ++++++ 10 files changed, 130 insertions(+), 20 deletions(-) diff --git a/app/controllers/api/v1/profiles_controller.rb b/app/controllers/api/v1/profiles_controller.rb index fb9c3b62c..20b8e7ae8 100644 --- a/app/controllers/api/v1/profiles_controller.rb +++ b/app/controllers/api/v1/profiles_controller.rb @@ -22,6 +22,11 @@ class Api::V1::ProfilesController < Api::BaseController @user.account_users.find_by!(account_id: availability_params[:account_id]).update!(availability: availability_params[:availability]) end + def set_active_account + @user.account_users.find_by(account_id: profile_params[:account_id]).update(active_at: Time.now.utc) + head :ok + end + private def set_user @@ -39,6 +44,7 @@ class Api::V1::ProfilesController < Api::BaseController :display_name, :avatar, :message_signature, + :account_id, ui_settings: {} ) end diff --git a/app/javascript/dashboard/App.vue b/app/javascript/dashboard/App.vue index 7243e566e..0ff94efa5 100644 --- a/app/javascript/dashboard/App.vue +++ b/app/javascript/dashboard/App.vue @@ -87,6 +87,9 @@ export default { }, async initializeAccount() { await this.$store.dispatch('accounts/get'); + this.$store.dispatch('setActiveAccount', { + accountId: this.currentAccountId, + }); const { locale, latest_chatwoot_version: latestChatwootVersion, diff --git a/app/javascript/dashboard/api/auth.js b/app/javascript/dashboard/api/auth.js index 76042103f..ef1762f46 100644 --- a/app/javascript/dashboard/api/auth.js +++ b/app/javascript/dashboard/api/auth.js @@ -147,4 +147,13 @@ export default { deleteAvatar() { return axios.delete(endPoints('deleteAvatar').url); }, + + setActiveAccount({ accountId }) { + const urlData = endPoints('setActiveAccount'); + return axios.put(urlData.url, { + profile: { + account_id: accountId, + }, + }); + }, }; diff --git a/app/javascript/dashboard/api/endPoints.js b/app/javascript/dashboard/api/endPoints.js index c9d0955ef..8deb8d56a 100644 --- a/app/javascript/dashboard/api/endPoints.js +++ b/app/javascript/dashboard/api/endPoints.js @@ -40,6 +40,10 @@ const endPoints = { deleteAvatar: { url: '/api/v1/profile/avatar', }, + + setActiveAccount: { + url: '/api/v1/profile/set_active_account', + }, }; export default page => { diff --git a/app/javascript/dashboard/components/layout/sidebarComponents/AccountSelector.vue b/app/javascript/dashboard/components/layout/sidebarComponents/AccountSelector.vue index e6e7df48e..ad432f42a 100644 --- a/app/javascript/dashboard/components/layout/sidebarComponents/AccountSelector.vue +++ b/app/javascript/dashboard/components/layout/sidebarComponents/AccountSelector.vue @@ -8,25 +8,33 @@ :header-title="$t('SIDEBAR_ITEMS.CHANGE_ACCOUNTS')" :header-content="$t('SIDEBAR_ITEMS.SELECTOR_SUBTITLE')" /> -