Merge branch 'develop' into feat/context-menu-snooze

This commit is contained in:
Muhsin Keloth
2024-02-21 22:02:01 +05:30
committed by GitHub
28 changed files with 344 additions and 22 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ class ContactIdentifyAction
def existing_email_contact
return if params[:email].blank?
@existing_email_contact ||= account.contacts.find_by(email: params[:email])
@existing_email_contact ||= account.contacts.from_email(params[:email])
end
def existing_phone_number_contact
+1 -1
View File
@@ -27,7 +27,7 @@ class AgentBuilder
# Finds a user by email or creates a new one with a temporary password.
# @return [User] the found or created user.
def find_or_create_user
user = User.find_by(email: email)
user = User.from_email(email)
return user if user
temp_password = "1!aA#{SecureRandom.alphanumeric(12)}"
@@ -75,7 +75,7 @@ class ContactInboxWithContactBuilder
def find_contact_by_email(email)
return if email.blank?
account.contacts.find_by(email: email.downcase)
account.contacts.from_email(email)
end
def find_contact_by_phone_number(phone_number)
@@ -5,7 +5,7 @@ class DeviseOverrides::PasswordsController < Devise::PasswordsController
skip_before_action :authenticate_user!, raise: false
def create
@user = User.find_by(email: params[:email])
@user = User.from_email(params[:email])
if @user
@user.send_reset_password_instructions
build_response(I18n.t('messages.reset_password_success'), 200)
@@ -33,7 +33,7 @@ class DeviseOverrides::SessionsController < DeviseTokenAuth::SessionsController
def process_sso_auth_token
return if params[:email].blank?
user = User.find_by(email: params[:email])
user = User.from_email(params[:email])
@resource = user if user&.valid_sso_auth_token?(params[:sso_auth_token])
end
end
@@ -8,7 +8,7 @@ class Platform::Api::V1::UsersController < PlatformController
def show; end
def create
@resource = (User.find_by(email: user_params[:email]) || User.new(user_params))
@resource = (User.from_email(user_params[:email]) || User.new(user_params))
@resource.skip_confirmation!
@resource.save!
@platform_app.platform_app_permissibles.find_or_create_by!(permissible: @resource)
@@ -1,15 +1,31 @@
class Public::Api::V1::Inboxes::ConversationsController < Public::Api::V1::InboxesController
include Events::Types
before_action :set_conversation, only: [:toggle_typing, :update_last_seen]
before_action :set_conversation, only: [:toggle_typing, :update_last_seen, :show, :toggle_status]
def index
@conversations = @contact_inbox.hmac_verified? ? @contact.conversations : @contact_inbox.conversations
end
def show; end
def create
@conversation = create_conversation
end
def toggle_status
# Check if the conversation is already resolved to prevent redundant operations
return if @conversation.resolved?
# Assign the conversation's contact as the resolver
# This step attributes the resolution action to the contact involved in the conversation
# If this assignment is not made, the system implicitly becomes the resolver by default
Current.contact = @conversation.contact
# Update the conversation's status to 'resolved' to reflect its closure
@conversation.status = :resolved
@conversation.save!
end
def toggle_typing
case params[:typing_status]
when 'on'
@@ -30,7 +46,11 @@ class Public::Api::V1::Inboxes::ConversationsController < Public::Api::V1::Inbox
private
def set_conversation
@conversation = @contact_inbox.contact.conversations.find_by!(display_id: params[:id])
@conversation = if @contact_inbox.hmac_verified?
@contact_inbox.contact.conversations.find_by!(display_id: params[:id])
else
@contact_inbox.conversations.find_by!(display_id: params[:id])
end
end
def create_conversation
+1 -1
View File
@@ -91,7 +91,7 @@ class Imap::ImapMailbox
end
def find_or_create_contact
@contact = @inbox.contacts.find_by(email: @processed_mail.original_sender)
@contact = @inbox.contacts.from_email(@processed_mail.original_sender)
if @contact.present?
@contact_inbox = ContactInbox.find_by(inbox: @inbox, contact: @contact)
else
+1 -1
View File
@@ -86,7 +86,7 @@ class SupportMailbox < ApplicationMailbox
end
def find_or_create_contact
@contact = @inbox.contacts.find_by(email: original_sender_email)
@contact = @inbox.contacts.from_email(original_sender_email)
if @contact.present?
@contact_inbox = ContactInbox.find_by(inbox: @inbox, contact: @contact)
else
+6
View File
@@ -165,6 +165,12 @@ class Contact < ApplicationRecord
email_format
end
def self.from_email(email)
# rubocop:disable UseFromEmail,Migration/DepartmentName
find_by(email: email.downcase)
# rubocop:enable UseFromEmail,Migration/DepartmentName
end
private
def ip_lookup
+6
View File
@@ -156,6 +156,12 @@ class User < ApplicationRecord
mutations_from_database.changed?('email')
end
def self.from_email(email)
# rubocop:disable UseFromEmail,Migration/DepartmentName
find_by(email: email.downcase)
# rubocop:enable UseFromEmail,Migration/DepartmentName
end
private
def remove_macros
+1 -1
View File
@@ -35,7 +35,7 @@ class DataImport::ContactManager
def find_contact_by_email(params)
return unless params[:email]
@account.contacts.find_by(email: params[:email])
@account.contacts.from_email(params[:email])
end
def find_contact_by_phone_number(params)
@@ -0,0 +1 @@
json.partial! 'public/api/v1/models/conversation', formats: [:json], resource: @conversation
@@ -0,0 +1 @@
json.partial! 'public/api/v1/models/conversation', formats: [:json], resource: @conversation