# frozen_string_literal: true class HomeFeed < Feed def initialize(account) @account = account super(:home, account.id) end def async_refresh @async_refresh ||= AsyncRefresh.new(redis_regeneration_key) end def regenerating? async_refresh.running? rescue Redis::CommandError retry if upgrade_redis_key! end def regeneration_in_progress! @async_refresh = AsyncRefresh.create(redis_regeneration_key) rescue Redis::CommandError upgrade_redis_key! end def regeneration_finished! async_refresh.finish! rescue Redis::CommandError retry if upgrade_redis_key! end private def redis_regeneration_key @redis_regeneration_key = "account:#{@account.id}:regeneration" end def upgrade_redis_key! if redis.type(redis_regeneration_key) == 'string' redis.del(redis_regeneration_key) regeneration_in_progress! true end end end