diff --git a/app/controllers/google/callbacks_controller.rb b/app/controllers/google/callbacks_controller.rb index 391e1de0f..766d984df 100644 --- a/app/controllers/google/callbacks_controller.rb +++ b/app/controllers/google/callbacks_controller.rb @@ -1,6 +1,15 @@ class Google::CallbacksController < OauthCallbackController include GoogleConcern + def find_channel_by_email + # find by imap_login first, and then by email + # this ensures the legacy users can migrate correctly even if inbox email address doesn't match + imap_channel = Channel::Email.find_by(imap_login: users_data['email'], account: account) + return imap_channel if imap_channel + + Channel::Email.find_by(email: users_data['email'], account: account) + end + private def provider_name diff --git a/app/controllers/oauth_callback_controller.rb b/app/controllers/oauth_callback_controller.rb index 309160f1f..4cb02d266 100644 --- a/app/controllers/oauth_callback_controller.rb +++ b/app/controllers/oauth_callback_controller.rb @@ -25,7 +25,7 @@ class OauthCallbackController < ApplicationController end def find_or_create_inbox - channel_email = Channel::Email.find_by(email: users_data['email'], account: account) + channel_email = find_channel_by_email # we need this value to know where to redirect on sucessful processing of the callback channel_exists = channel_email.present? @@ -39,6 +39,10 @@ class OauthCallbackController < ApplicationController [channel_email.inbox, channel_exists] end + def find_channel_by_email + Channel::Email.find_by(email: users_data['email'], account: account) + end + def update_channel(channel_email) channel_email.update!({ imap_login: users_data['email'], imap_address: imap_address, diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Email.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Email.vue index 981f148d4..c356f7bbc 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Email.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Email.vue @@ -47,7 +47,7 @@ const emailProviderList = computed(() => { function onClick(emailProvider) { if (emailProvider.isEnabled) { - this.provider = emailProvider.key; + provider.value = emailProvider.key; } } diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/google/Reauthorize.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/google/Reauthorize.vue index bc4df68d1..de9047ca7 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/google/Reauthorize.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/google/Reauthorize.vue @@ -1,5 +1,5 @@