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(); }