a0886d37bc
Expose widget config via an API so that the UI could be detached from the rails Application.
41 lines
1,003 B
Ruby
41 lines
1,003 B
Ruby
class Api::V1::Widget::ConfigsController < Api::V1::Widget::BaseController
|
|
before_action :set_global_config
|
|
|
|
def create
|
|
build_contact
|
|
set_token
|
|
end
|
|
|
|
private
|
|
|
|
def set_global_config
|
|
@global_config = GlobalConfig.get('LOGO_THUMBNAIL', 'BRAND_NAME', 'WIDGET_BRAND_URL')
|
|
end
|
|
|
|
def set_contact
|
|
@contact_inbox = @web_widget.inbox.contact_inboxes.find_by(
|
|
source_id: auth_token_params[:source_id]
|
|
)
|
|
@contact = @contact_inbox&.contact
|
|
end
|
|
|
|
def build_contact
|
|
return if @contact.present?
|
|
|
|
@contact_inbox = @web_widget.create_contact_inbox(additional_attributes)
|
|
@contact = @contact_inbox.contact
|
|
end
|
|
|
|
def set_token
|
|
payload = { source_id: @contact_inbox.source_id, inbox_id: @web_widget.inbox.id }
|
|
@token = ::Widget::TokenService.new(payload: payload).generate_token
|
|
end
|
|
|
|
def additional_attributes
|
|
if @web_widget.inbox.account.feature_enabled?('ip_lookup')
|
|
{ created_at_ip: request.remote_ip }
|
|
else
|
|
{}
|
|
end
|
|
end
|
|
end
|