fix: Get online status from db when not present in cache [CW-3233] (#9477)
Previously, we returned the static value 'online' when the status was not present in the Redis cache. This PR changes it to fall back to the DB value and updates the cache in such cases. fixes: https://linear.app/chatwoot/issue/CW-3233/write-a-back-up-for-online-status-in-case-if-redis-keys-are-not
This commit is contained in:
@@ -57,7 +57,13 @@ class OnlineStatusTracker
|
||||
return {} if user_ids.blank?
|
||||
|
||||
user_availabilities = ::Redis::Alfred.hmget(status_key(account_id), user_ids)
|
||||
user_ids.map.with_index { |id, index| [id, (user_availabilities[index] || 'online')] }.to_h
|
||||
user_ids.map.with_index { |id, index| [id, (user_availabilities[index] || get_availability_from_db(account_id, id))] }.to_h
|
||||
end
|
||||
|
||||
def self.get_availability_from_db(account_id, user_id)
|
||||
availability = Account.find(account_id).account_users.find_by(user_id: user_id).availability
|
||||
set_status(account_id, user_id, availability)
|
||||
availability
|
||||
end
|
||||
|
||||
def self.get_available_user_ids(account_id)
|
||||
|
||||
Reference in New Issue
Block a user