From 7404d8111ff1ae122363157d5409109d1eb14aa9 Mon Sep 17 00:00:00 2001 From: Phillip Davis Date: Mon, 9 Mar 2026 14:17:17 -0400 Subject: [PATCH] fix: `.then` and early-return stream events - previous code used `.then` on a non-promise, which doesn't work on ruby 2.7 - also, early-return case failed to consider resend events, fixed that --- sgx-bwmsgsv2.rb | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/sgx-bwmsgsv2.rb b/sgx-bwmsgsv2.rb index 0eebd4d2adbd1f6885b110b23f23f1d9de4104b4..0a8f53b36a386b07d06b093de12e482a8d5a45d8 100755 --- a/sgx-bwmsgsv2.rb +++ b/sgx-bwmsgsv2.rb @@ -1087,7 +1087,7 @@ class WebhookHandler < Goliath::API puts "RESPONSE9: #{msg.inspect}" end - done = Array(jparams['media']).map { |media_url| + media_urls = Array(jparams['media']).filter_map { |media_url| unless media_url.end_with?( '.smil', '.txt', '.xml' ) @@ -1097,29 +1097,31 @@ class WebhookHandler < Goliath::API bare_jid, media_url, nil, nil, msg ) + media_url end - - media_url - }.empty?.then { |no_media| - next if no_media - next unless text&.empty? - next unless jparams['to'].length > 1 - - MessageEvent::In.new( - timestamp: jparams['time'], - from: jparams['from'], - to: jparams['to'], - owner: jparams['owner'], - bandwidth_id: jparams['id'], - body: jparams['text'].to_s, - media_urls: media_urls - ).emit(REDIS) - - - next [200, {}, "OK"] } - return done unless done.nil? + if text&.empty? || (media_urls.any? && jparams['to'].length > 1) + if !env['HTTP_X_JMP_RESEND_OF'].to_s.empty? + MessageEvent::ResendIn.new( + original_stream_id: env['HTTP_X_JMP_RESEND_OF'], + original_bandwidth_id: jparams['id'], + owner: jparams['owner'] + ).emit(REDIS) + else + MessageEvent::In.new( + timestamp: jparams['time'], + from: jparams['from'], + to: jparams['to'], + owner: jparams['owner'], + bandwidth_id: jparams['id'], + body: jparams['text'].to_s, + media_urls: media_urls + ).emit(REDIS) + end + + return [200, {}, "OK"] + end else text = "unknown type (#{type})"\ " with text: " + jparams['text']