From bfcfac61e874f8b6774efb35eacd5a889c617eea Mon Sep 17 00:00:00 2001 From: Kenneth Date: Mon, 11 May 2026 02:34:09 +0800 Subject: [PATCH] fix: pr view not updating for cached query --- src/screen/dashboard/pull_request_view.rs | 35 ++++++++++++++++------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/screen/dashboard/pull_request_view.rs b/src/screen/dashboard/pull_request_view.rs index 981ddbb..10a9325 100644 --- a/src/screen/dashboard/pull_request_view.rs +++ b/src/screen/dashboard/pull_request_view.rs @@ -39,20 +39,33 @@ impl PullRequestView { _ = cx .observe(&query.clone(), move |this, _, cx| { - let maybe_content = { - let data = read_query(&query, cx); - if let QueryStatus::Loaded(pr) = data { - Some(gpui::SharedString::new(pr.body.as_str())) - } else { - None - } - }; - - this.markdown_viewer = - maybe_content.map(|content| cx.new(|cx| markdown::new(content, cx))) + this.load_markdown_content(cx); }) .detach(); + // cached query will not trigger observe callback + // this is required so that content is loaded immediately for cached query + self.load_markdown_content(cx); + + cx.notify(); + } + + fn load_markdown_content(&mut self, cx: &mut gpui::Context) { + let Some(query) = &self.pull_request_query else { + return; + }; + + let maybe_content = { + let data = read_query(&query, cx); + if let QueryStatus::Loaded(pr) = data { + Some(gpui::SharedString::new(pr.body.as_str())) + } else { + None + } + }; + + self.markdown_viewer = maybe_content.map(|content| cx.new(|cx| markdown::new(content, cx))); + cx.notify(); }