From 138afd9af6a55888a3e8e081de47d8d8024f24fb Mon Sep 17 00:00:00 2001 From: Tejaswini Chile Date: Mon, 10 Apr 2023 14:44:27 +0530 Subject: [PATCH] Feat: Fetch whatsapp templates till next cursor (#6835) --- .../providers/whatsapp_cloud_service.rb | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/app/services/whatsapp/providers/whatsapp_cloud_service.rb b/app/services/whatsapp/providers/whatsapp_cloud_service.rb index 04ddc8f02..aac2eab6c 100644 --- a/app/services/whatsapp/providers/whatsapp_cloud_service.rb +++ b/app/services/whatsapp/providers/whatsapp_cloud_service.rb @@ -24,7 +24,12 @@ class Whatsapp::Providers::WhatsappCloudService < Whatsapp::Providers::BaseServi def sync_templates response = HTTParty.get("#{business_account_path}/message_templates?access_token=#{whatsapp_channel.provider_config['api_key']}") - whatsapp_channel.update(message_templates: response['data'], message_templates_last_updated: Time.now.utc) if response.success? + + return unless response.success? + + @templates = response['data'] + fetch_next_templates(response) + save_templates end def validate_provider_config? @@ -40,8 +45,25 @@ class Whatsapp::Providers::WhatsappCloudService < Whatsapp::Providers::BaseServi "#{api_base_path}/v13.0/#{media_id}" end + def fetch_next_templates(response) + loop do + break unless response['paging'] && response['paging']['next'] + + response = HTTParty.get(response['paging']['next']) + push_templates(response) + end + end + private + def push_templates(response) + @templates << response['data'] if response.success? && response['data'].any? + end + + def save_templates + whatsapp_channel.update(message_templates: @templates, message_templates_last_updated: Time.now.utc) + end + def api_base_path ENV.fetch('WHATSAPP_CLOUD_BASE_URL', 'https://graph.facebook.com') end