feat: pr tab switching btwn body/diff

This commit is contained in:
2026-05-25 23:49:33 +01:00
parent 91a57cbc0f
commit 231353bea4
13 changed files with 500 additions and 352 deletions

View File

@@ -137,13 +137,13 @@ where
})?;
match wait_state {
| WaitState::Cached => {
return Ok(ent);
}
| WaitState::Waiting { rx, sub } => {
_ = sub;
_ = rx.await;
}
| WaitState::Cached => {
return Ok(ent);
}
| WaitState::Waiting { rx, sub } => {
_ = sub;
_ = rx.await;
}
}
}
}
@@ -181,13 +181,17 @@ where
let state = query.raw.read(cx);
match &state.data {
| QueryData::Loading | QueryData::Pending | QueryData::Stale => QueryStatus::Loading,
| QueryData::Some(data) => QueryStatus::Loaded(data.downcast_ref::<F::Data>().unwrap()),
| QueryData::Err(error) => QueryStatus::Err(error.downcast_ref::<F::Error>().unwrap()),
| QueryData::Loading | QueryData::Pending | QueryData::Stale => QueryStatus::Loading,
| QueryData::Some(data) => QueryStatus::Loaded(data.downcast_ref::<F::Data>().unwrap()),
| QueryData::Err(error) => QueryStatus::Err(error.downcast_ref::<F::Error>().unwrap()),
}
}
pub fn watch_query<E, F, H>(query: &Entity<F>, on_notify: H, cx: &mut gpui::Context<E>) -> gpui::Subscription
pub fn watch_query<E, F, H>(
query: &Entity<F>,
on_notify: H,
cx: &mut gpui::Context<E>,
) -> gpui::Subscription
where
E: 'static,
F: QueryFn,
@@ -308,14 +312,14 @@ where
entity.raw.update(cx, |state, cx| {
state.data = match result {
| Ok(data) => {
println!("[query] OK {}", q.key());
QueryData::Some(Box::new(data))
}
| Err(err) => {
println!("[query] ERR {:?}: {:?}", q.key(), err);
QueryData::Err(Box::new(err))
}
| Ok(data) => {
println!("[query] OK {}", q.key());
QueryData::Some(Box::new(data))
}
| Err(err) => {
println!("[query] ERR {:?}: {:?}", q.key(), err);
QueryData::Err(Box::new(err))
}
};
cx.notify();
})?;
@@ -341,8 +345,8 @@ where
.raw
.update(cx, |query, cx| {
query.data = match result {
| Ok(data) => QueryData::Some(Box::new(data)),
| Err(err) => QueryData::Err(Box::new(err)),
| Ok(data) => QueryData::Some(Box::new(data)),
| Err(err) => QueryData::Err(Box::new(err)),
};
cx.notify();
true