function shareSOSQR(sosUrl, roomName) { document.getElementById('sos-share-modal')?.remove(); var overlay = document.createElement('div'); overlay.id = 'sos-share-modal'; overlay.dataset.sosUrl = sosUrl; overlay.dataset.roomName = roomName; overlay.style.cssText = 'position:fixed;inset:0;z-index:10001;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0.7);padding:20px;'; var card = document.createElement('div'); card.style.cssText = 'background:white;border-radius:20px;padding:28px 24px;max-width:400px;width:100%;box-shadow:0 24px 64px rgba(0,0,0,0.4);'; card.innerHTML = '
' + '
' + '
Text Help Link
' + '
Send the SOS QR link via SMS through the platform Twilio account.
' + '
' + '' + '
' + '
' + '' + '' + '
' + '' + '' + '
' + '' + '' + '
'; overlay.appendChild(card); document.body.appendChild(overlay); document.getElementById('sos-sms-close').onclick = function() { overlay.remove(); }; document.getElementById('sos-sms-cancel').onclick = function() { overlay.remove(); }; document.getElementById('sos-sms-btn').onclick = function() { sendSOSTextLink(); }; document.getElementById('sos-sms-phone').onkeydown = function(e) { if (e.key === 'Enter') sendSOSTextLink(); }; document.getElementById('sos-sms-phone').onfocus = function() { this.style.borderColor = '#3b5ef6'; }; document.getElementById('sos-sms-phone').onblur = function() { this.style.borderColor = '#e5e7eb'; }; overlay.onclick = function(e) { if (e.target === overlay) overlay.remove(); }; setTimeout(function() { var p = document.getElementById('sos-sms-phone'); if(p) p.focus(); }, 60); } async function sendSOSTextLink() { var overlay = document.getElementById('sos-share-modal'); var sosUrl = overlay ? overlay.dataset.sosUrl : ''; var roomName = overlay ? overlay.dataset.roomName : ''; var phoneEl = document.getElementById('sos-sms-phone'); var phone = phoneEl ? phoneEl.value.trim() : ''; var errEl = document.getElementById('sos-sms-err'); var okEl = document.getElementById('sos-sms-ok'); var btn = document.getElementById('sos-sms-btn'); if (!errEl || !btn) return; errEl.style.display = 'none'; okEl.style.display = 'none'; if (!phone) { errEl.textContent = 'Please enter a phone number.'; errEl.style.display = 'block'; return; } btn.disabled = true; btn.textContent = 'Sending...'; try { var res = await fetch('/api/rooms/sos-text', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + (state.token || '') }, body: JSON.stringify({ phone: phone, sos_url: sosUrl, room_name: roomName }) }); var data = await res.json(); if (!res.ok) throw new Error(data.error || 'Send failed'); okEl.textContent = 'Text sent to ' + phone; okEl.style.display = 'block'; btn.textContent = 'Sent!'; setTimeout(function() { var m = document.getElementById('sos-share-modal'); if(m) m.remove(); }, 1800); } catch(e) { errEl.textContent = e.message; errEl.style.display = 'block'; btn.disabled = false; btn.textContent = 'Send Text'; } }