From 456a4e02064efe4691e2f116c67002bc9e887055 Mon Sep 17 00:00:00 2001 From: Muhsin Date: Wed, 18 Mar 2026 13:09:27 +0400 Subject: [PATCH] chore: fix rubocop issues --- .../app/services/voice/call_status/manager.rb | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/enterprise/app/services/voice/call_status/manager.rb b/enterprise/app/services/voice/call_status/manager.rb index 276d129f5..2710a526e 100644 --- a/enterprise/app/services/voice/call_status/manager.rb +++ b/enterprise/app/services/voice/call_status/manager.rb @@ -43,24 +43,10 @@ class Voice::CallStatus::Manager end def update_message(status) - message = conversation.messages - .where(content_type: 'voice_call') - .order(created_at: :desc) - .first + message = latest_voice_call_message return unless message - data = (message.content_attributes || {}).deep_dup - data['data'] ||= {} - data['data']['status'] = status - data['data']['meta'] ||= {} - - if status == 'completed' && conversation.additional_attributes['call_duration'].present? - data['data']['meta']['duration'] = conversation.additional_attributes['call_duration'] - else - data['data']['meta'].delete('duration') - end - - message.update!(content_attributes: data) + message.update!(content_attributes: updated_message_attributes(message, status)) end def now_seconds @@ -70,4 +56,34 @@ class Voice::CallStatus::Manager def current_time @current_time ||= Time.zone.now end + + def latest_voice_call_message + conversation.messages + .where(content_type: 'voice_call') + .order(created_at: :desc) + .first + end + + def updated_message_attributes(message, status) + data = (message.content_attributes || {}).deep_dup + call_data = data['data'] ||= {} + call_data['status'] = status + update_duration_meta(call_data, status) + data + end + + def update_duration_meta(call_data, status) + meta = call_data['meta'] ||= {} + duration = completed_call_duration(status) + + return meta['duration'] = duration if duration.present? + + meta.delete('duration') + end + + def completed_call_duration(status) + return unless status == 'completed' + + conversation.additional_attributes&.dig('call_duration') + end end