chore: minor ui components improvements (#140)

* improve ui

* .

* .
This commit is contained in:
reya
2025-09-04 07:30:03 +07:00
committed by GitHub
parent b11b0e0115
commit 70e235dcc2
14 changed files with 86 additions and 75 deletions

View File

@@ -1231,7 +1231,7 @@ impl ChatSpace {
this.child(
h_flex()
.id("downloading")
.px_4()
.px_2()
.h_6()
.gap_1()
.text_xs()
@@ -1434,7 +1434,7 @@ impl Render for ChatSpace {
// Only render titlebar child elements if user is logged in
if registry.identity.is_some() {
let profile = Registry::read_global(cx).identity(cx);
let profile = registry.identity(cx);
let left_side = self
.render_titlebar_left_side(window, cx)
@@ -1457,9 +1457,7 @@ impl Render for ChatSpace {
.relative()
.size_full()
.child(
div()
.flex()
.flex_col()
v_flex()
.size_full()
// Title Bar
.child(self.title_bar.clone())

View File

@@ -79,6 +79,9 @@ fn main() {
// Open a window with default options
cx.open_window(opts, |window, cx| {
// Bring the app to the foreground
cx.activate(true);
// Automatically sync theme with system appearance
window
.observe_window_appearance(|window, cx| {
@@ -88,7 +91,6 @@ fn main() {
// Root Entity
cx.new(|cx| {
cx.activate(true);
// Initialize the tokio runtime
gpui_tokio::init(cx);

View File

@@ -6,7 +6,7 @@ use gpui::prelude::FluentBuilder;
use gpui::{
div, img, list, px, red, relative, rems, svg, white, Action, AnyElement, App, AppContext,
ClipboardItem, Context, Element, Entity, EventEmitter, Flatten, FocusHandle, Focusable,
InteractiveElement, IntoElement, ListAlignment, ListState, MouseButton, ObjectFit,
InteractiveElement, IntoElement, ListAlignment, ListOffset, ListState, MouseButton, ObjectFit,
ParentElement, PathPromptOptions, Render, RetainAllImageCache, SharedString,
StatefulInteractiveElement, Styled, StyledImage, Subscription, Task, Window,
};
@@ -139,7 +139,7 @@ impl Chat {
match signal {
RoomSignal::NewMessage((gift_wrap_id, event)) => {
if !this.is_sent_by_coop(gift_wrap_id) {
this.insert_message(event, cx);
this.insert_message(event, false, cx);
}
}
RoomSignal::Refresh => {
@@ -258,11 +258,7 @@ impl Chat {
cx.defer_in(window, |this, window, cx| {
// Optimistically update message list
this.insert_message(temp_message, cx);
// Scroll to reveal the new message
this.list_state
.scroll_to_reveal_item(this.messages.len() + 1);
this.insert_message(temp_message, true, cx);
// Remove all replies
this.remove_all_replies(cx);
@@ -341,7 +337,7 @@ impl Chat {
}
/// Convert and insert a nostr event into the chat panel
fn insert_message<E>(&mut self, event: E, _cx: &mut Context<Self>)
fn insert_message<E>(&mut self, event: E, scroll: bool, cx: &mut Context<Self>)
where
E: Into<RenderedMessage>,
{
@@ -350,13 +346,21 @@ impl Chat {
// Extend the messages list with the new events
if self.messages.insert(Message::user(event)) {
self.list_state.splice(old_len..old_len, 1);
if scroll {
self.list_state.scroll_to(ListOffset {
item_ix: self.list_state.item_count(),
offset_in_item: px(0.0),
});
cx.notify();
}
}
}
/// Convert and insert a vector of nostr events into the chat panel
fn insert_messages(&mut self, events: Vec<Event>, cx: &mut Context<Self>) {
for event in events.into_iter() {
self.insert_message(event, cx);
self.insert_message(event, false, cx);
}
cx.notify();
}

View File

@@ -656,6 +656,7 @@ impl Render for Sidebar {
})
})
.small()
.cta()
.bold()
.secondary()
.rounded(ButtonRounded::Full)
@@ -676,6 +677,7 @@ impl Render for Sidebar {
})
})
.small()
.cta()
.bold()
.secondary()
.rounded(ButtonRounded::Full)