From 0348d0b25ade96967822c217f5bddf9f3ff7caa7 Mon Sep 17 00:00:00 2001 From: gabrieljablonski Date: Tue, 1 Apr 2025 23:59:07 -0300 Subject: [PATCH] chore: add support for external frontend URL in environment configuration --- .env.example | 3 +++ app/helpers/frontend_urls_helper.rb | 3 ++- spec/helpers/frontend_urls_helper_spec.rb | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index cd20ca72a..443baeb57 100644 --- a/.env.example +++ b/.env.example @@ -258,6 +258,9 @@ AZURE_APP_SECRET= # contact_inboxes with no conversation older than 90 days will be removed # REMOVE_STALE_CONTACT_INBOX_JOB_STATUS=false +# NOTE: Useful when running inside docker-compose network to link to external domain +FRONTEND_URL_EXTERNAL= + # Baileys API Whatsapp provider BAILEYS_PROVIDER_DEFAULT_CLIENT_NAME=Chatwoot BAILEYS_PROVIDER_DEFAULT_URL=http://localhost:3025 diff --git a/app/helpers/frontend_urls_helper.rb b/app/helpers/frontend_urls_helper.rb index 1867c77ea..281c8bcc3 100644 --- a/app/helpers/frontend_urls_helper.rb +++ b/app/helpers/frontend_urls_helper.rb @@ -1,6 +1,7 @@ module FrontendUrlsHelper def frontend_url(path, **query_params) url_params = query_params.blank? ? '' : "?#{query_params.to_query}" - "#{root_url}app/#{path}#{url_params}" + host = ENV.fetch('FRONTEND_URL_EXTERNAL', root_url) + "#{host}app/#{path}#{url_params}" end end diff --git a/spec/helpers/frontend_urls_helper_spec.rb b/spec/helpers/frontend_urls_helper_spec.rb index c522d0ee9..beefd23e6 100644 --- a/spec/helpers/frontend_urls_helper_spec.rb +++ b/spec/helpers/frontend_urls_helper_spec.rb @@ -13,5 +13,13 @@ describe FrontendUrlsHelper do expect(helper.frontend_url('dashboard', p1: 'p1', p2: 'p2')).to eq 'http://test.host/app/dashboard?p1=p1&p2=p2' end end + + context 'with set FRONTEND_URL_EXTERNAL' do + it 'creates path correctly' do + with_modified_env 'FRONTEND_URL_EXTERNAL' => 'http://external.url/' do + expect(helper.frontend_url('dashboard')).to eq 'http://external.url/app/dashboard' + end + end + end end end