From ea663cf7c792ed7caef5440203ef58fa58246c00 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 7 Nov 2025 11:02:25 +0100 Subject: [PATCH] Fix `/api/v1/statuses/:id/context` sometimes returing `Mastodon-Async-Refresh` without `result_count` (#36779) --- app/controllers/api/v1/statuses_controller.rb | 2 +- spec/requests/api/v1/statuses_spec.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 0627acc30..5301a94d0 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -66,7 +66,7 @@ class Api::V1::StatusesController < Api::BaseController if async_refresh.running? add_async_refresh_header(async_refresh) elsif !current_account.nil? && @status.should_fetch_replies? - add_async_refresh_header(AsyncRefresh.create(refresh_key)) + add_async_refresh_header(AsyncRefresh.create(refresh_key, count_results: true)) WorkerBatch.new.within do |batch| batch.connect(refresh_key, threshold: 1.0) diff --git a/spec/requests/api/v1/statuses_spec.rb b/spec/requests/api/v1/statuses_spec.rb index d3def6104..1f431f79d 100644 --- a/spec/requests/api/v1/statuses_spec.rb +++ b/spec/requests/api/v1/statuses_spec.rb @@ -133,6 +133,21 @@ RSpec.describe '/api/v1/statuses' do expect(response).to have_http_status(200) expect(response.content_type) .to start_with('application/json') + expect(response.headers['Mastodon-Async-Refresh']).to be_nil + end + + context 'with a remote status' do + let(:status) { Fabricate(:status, account: Fabricate(:account, domain: 'example.com'), created_at: 1.hour.ago, updated_at: 1.hour.ago) } + + it 'returns http success and queues discovery of new posts' do + expect { get "/api/v1/statuses/#{status.id}/context", headers: headers } + .to enqueue_sidekiq_job(ActivityPub::FetchAllRepliesWorker) + + expect(response).to have_http_status(200) + expect(response.content_type) + .to start_with('application/json') + expect(response.headers['Mastodon-Async-Refresh']).to match(/result_count=0/) + end end end