mirror of
https://dev.azure.com/globalhealthx/EMR/_git/helix-engage
synced 2026-05-18 20:08:19 +00:00
feat: call-desk refresh — disposition modal, active-call UI, worklist + perf updates
- Call-desk: active-call-card supervisor presence badges, incoming-call-card polish, transfer-dialog, call-log - Disposition modal: auto-lock based on actions taken, not-interested split - Forms: appointment-form + enquiry-form improvements (placeholder handling, phone format) - Worklist-panel: pagination awareness, filter chips - Pages: all-leads/patients/patient-360/missed-calls/team-performance/call-history/appointments polish - SIP: sip-client reconnect, sip-provider + sip-manager state, agent-status-toggle spinner - Hooks: use-agent-state supervisor SSE events, use-worklist, use-performance-alerts - Types: entities.ts extended Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -83,6 +83,7 @@ export function connectSip(config: SIPConfig): void {
|
||||
if (ucid) stateUpdater?.setCallUcid(ucid);
|
||||
|
||||
if (state === 'ended' || state === 'failed') {
|
||||
sipClient?.unmute(); // clear any mute state so it doesn't persist to next call
|
||||
outboundActive = false;
|
||||
outboundPending = false;
|
||||
}
|
||||
@@ -92,16 +93,16 @@ export function connectSip(config: SIPConfig): void {
|
||||
sipClient.connect();
|
||||
}
|
||||
|
||||
export function disconnectSip(force = false): void {
|
||||
export function disconnectSip(force = false, reason = 'unspecified'): void {
|
||||
// Guard: don't disconnect SIP during an active or pending call
|
||||
// unless explicitly forced (e.g., logout, page unload).
|
||||
// This prevents React re-render cycles from killing the
|
||||
// SIP WebSocket mid-dial.
|
||||
if (!force && (outboundPending || outboundActive)) {
|
||||
console.log('[SIP-MGR] Disconnect blocked — call in progress');
|
||||
console.log(`[SIP-MGR] Disconnect blocked — call in progress (reason=${reason})`);
|
||||
return;
|
||||
}
|
||||
console.log(`[SIP] Disconnecting agent=${activeAgentId}` + (force ? ' (forced)' : ''));
|
||||
console.log(`[SIP] Disconnecting agent=${activeAgentId} reason=${reason}` + (force ? ' (forced)' : ''));
|
||||
sipClient?.disconnect();
|
||||
sipClient = null;
|
||||
connected = false;
|
||||
|
||||
Reference in New Issue
Block a user