diff --git a/internal/conversation/conversation.go b/internal/conversation/conversation.go index d8d878a9..b2283337 100644 --- a/internal/conversation/conversation.go +++ b/internal/conversation/conversation.go @@ -574,13 +574,6 @@ func (c *Manager) UpdateConversationStatus(uuid string, statusID int, status, sn // Broadcast updates using websocket. c.BroadcastConversationUpdate(uuid, "status", status) - if status == models.StatusResolved { - c.BroadcastConversationUpdate(uuid, "resolved_at", time.Now().Format(time.RFC3339)) - } - if status == models.StatusClosed { - c.BroadcastConversationUpdate(uuid, "closed_at", time.Now().Format(time.RFC3339)) - c.BroadcastConversationUpdate(uuid, "resolved_at", time.Now().Format(time.RFC3339)) - } return nil } diff --git a/internal/conversation/queries.sql b/internal/conversation/queries.sql index 65c725f2..dd366bce 100644 --- a/internal/conversation/queries.sql +++ b/internal/conversation/queries.sql @@ -197,9 +197,9 @@ WHERE uuid = $1; -- name: update-conversation-status UPDATE conversations SET status_id = (SELECT id FROM conversation_statuses WHERE name = $2), - resolved_at = CASE WHEN $2 IN ('Resolved', 'Closed') THEN NOW() ELSE resolved_at END, - closed_at = CASE WHEN $2 = 'Closed' THEN NOW() ELSE closed_at END, - snoozed_until = CASE WHEN $2 = 'Snoozed' THEN $3::timestamptz ELSE NULL END, + resolved_at = COALESCE(resolved_at, CASE WHEN $2 IN ('Resolved', 'Closed') THEN NOW() END), + closed_at = COALESCE(closed_at, CASE WHEN $2 = 'Closed' THEN NOW() END), + snoozed_until = CASE WHEN $2 = 'Snoozed' THEN $3::timestamptz ELSE snoozed_until END, updated_at = NOW() WHERE uuid = $1;