## Description Reduces the frequency of update_presence WebSocket calls from the live chat widget and fixes agents appearing offline when the dashboard is in a background tab. ## Fixes # (issue) https://github.com/chatwoot/chatwoot/issues/13720 ## Type of change - [ ] Bug fix (non-breaking change which fixes an issue) ## Checklist: - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules
16 lines
549 B
Ruby
16 lines
549 B
Ruby
class Internal::RemoveStaleRedisKeysService
|
|
pattr_initialize [:account_id!]
|
|
|
|
def perform
|
|
Rails.logger.info "Removing redis stale keys for account #{@account_id}"
|
|
range_start = (Time.zone.now - OnlineStatusTracker::CONTACT_PRESENCE_DURATION).to_i
|
|
# exclusive minimum score is specified by prefixing (
|
|
# we are clearing old records because this could clogg up the sorted set
|
|
::Redis::Alfred.zremrangebyscore(
|
|
OnlineStatusTracker.presence_key(@account_id, 'Contact'),
|
|
'-inf',
|
|
"(#{range_start}"
|
|
)
|
|
end
|
|
end
|