feat: clean up the titlebar

This commit is contained in:
2026-06-07 23:34:33 +01:00
parent ee427b466c
commit 88c17a2892

View File

@@ -1,24 +1,19 @@
use gpui::{ParentElement, Styled, div}; use gpui::{ParentElement, Styled, StyledImage, div, img};
use crate::component::button::button; use crate::component::button::button;
use crate::query::{self, QueryStatus, read_query, use_lazy_query}; use crate::query::{self, QueryStatus, read_query, use_query};
use crate::{ use crate::{
api, app, api, app,
component::{ component::font_icon::{FontIcon, font_icon},
font_icon::{FontIcon, font_icon},
text::text,
},
}; };
pub struct TitleBar { pub struct TitleBar {
fetch_user_query: query::Entity<api::user::Fetch>, fetch_user_query: query::Entity<api::user::Fetch>,
} }
pub struct RepoSelector {}
pub fn new(cx: &mut gpui::Context<TitleBar>) -> TitleBar { pub fn new(cx: &mut gpui::Context<TitleBar>) -> TitleBar {
TitleBar { TitleBar {
fetch_user_query: use_lazy_query(api::user::Fetch, cx), fetch_user_query: use_query(api::user::Fetch, cx),
} }
} }
@@ -32,13 +27,20 @@ impl gpui::Render for TitleBar {
let user = read_query(&self.fetch_user_query, cx); let user = read_query(&self.fetch_user_query, cx);
let user_avatar = match user { let user_avatar = match user {
| QueryStatus::Err(api::Error::Unauthenticated) => div().absolute().right_2p5().child( | QueryStatus::Err(_) => div().absolute().right_2p5().child(
button("login-btn") button("login-btn")
.leading(font_icon(FontIcon::Github)) .leading(font_icon(FontIcon::Github))
.label("Login"), .label("Login"),
), ),
| _ => div(), | QueryStatus::Loading => div(),
| QueryStatus::Loaded(user) => div().size_6().child(
img(gpui::SharedString::from(user.avatar_url.clone()))
.rounded_full()
.size_5()
.object_fit(gpui::ObjectFit::ScaleDown),
),
}; };
div() div()
@@ -48,30 +50,14 @@ impl gpui::Render for TitleBar {
.w_full() .w_full()
.h_10() .h_10()
.flex() .flex()
.px(g.safe_area.size.width) .bg(gpui::red())
.py_2() .pl(g.safe_area.size.width)
.pr_2()
.pt_2()
.bg(g.current_theme.colors.background) .bg(g.current_theme.colors.background)
.text_color(g.current_theme.colors.text) .text_color(g.current_theme.colors.text)
.relative() .relative()
.child(repo_selector(cx)) .child(div().flex_1())
.child(user_avatar) .child(user_avatar)
} }
} }
impl RepoSelector {
pub fn new(_cx: &mut gpui::Context<Self>) -> Self {
Self {}
}
}
fn repo_selector<T: 'static>(_cx: &gpui::Context<T>) -> gpui::Div {
div()
.flex()
.flex_row()
.items_center()
.gap_1()
.text_xs()
.child(font_icon(FontIcon::FolderGit).size_3())
.child(text("test/repo"))
.child(font_icon(FontIcon::ChevronDown).size_3())
}