1 Commits
Author SHA1 Message Date
reya 2124b00590 show owner avatar in repo row
Rust / build (macos-latest, stable) (push) Waiting to run
Rust / build (ubuntu-latest, stable) (push) Waiting to run
Rust / build (windows-latest, stable) (push) Waiting to run
Rust / build (macos-latest, stable) (pull_request) Waiting to run
Rust / build (ubuntu-latest, stable) (pull_request) Waiting to run
Rust / build (windows-latest, stable) (pull_request) Waiting to run
2026-10-27 09:26:33 +07:00
2 changed files with 27 additions and 32 deletions
Generated
+13 -13
View File
@@ -285,7 +285,7 @@ dependencies = [
[[package]] [[package]]
name = "assets" name = "assets"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"gpui-component", "gpui-component",
@@ -1863,7 +1863,7 @@ dependencies = [
[[package]] [[package]]
name = "dock" name = "dock"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"gpui-base", "gpui-base",
"gpui-component", "gpui-component",
@@ -5562,7 +5562,7 @@ dependencies = [
[[package]] [[package]]
name = "metadata" name = "metadata"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"flume 0.11.1", "flume 0.11.1",
@@ -6654,7 +6654,7 @@ dependencies = [
[[package]] [[package]]
name = "paths" name = "paths"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"dirs 6.0.0", "dirs 6.0.0",
] ]
@@ -8237,7 +8237,7 @@ dependencies = [
[[package]] [[package]]
name = "settings" name = "settings"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"gpui-pre", "gpui-pre",
@@ -8334,7 +8334,7 @@ dependencies = [
[[package]] [[package]]
name = "signed" name = "signed"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"assets", "assets",
"dock", "dock",
@@ -8356,7 +8356,7 @@ dependencies = [
[[package]] [[package]]
name = "signed_core" name = "signed_core"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"nostr", "nostr",
"serde", "serde",
@@ -8365,7 +8365,7 @@ dependencies = [
[[package]] [[package]]
name = "signed_git" name = "signed_git"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"diffy", "diffy",
@@ -8383,7 +8383,7 @@ dependencies = [
[[package]] [[package]]
name = "signed_nostr" name = "signed_nostr"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"nostr-connect", "nostr-connect",
@@ -8395,7 +8395,7 @@ dependencies = [
[[package]] [[package]]
name = "signed_state" name = "signed_state"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bitcoin_hashes 1.2.0", "bitcoin_hashes 1.2.0",
@@ -8419,7 +8419,7 @@ dependencies = [
[[package]] [[package]]
name = "signed_ui" name = "signed_ui"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"assets", "assets",
"futures", "futures",
@@ -10018,7 +10018,7 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]] [[package]]
name = "utils" name = "utils"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"nostr", "nostr",
] ]
@@ -11267,7 +11267,7 @@ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
[[package]] [[package]]
name = "workspace" name = "workspace"
version = "0.2.0-alpha" version = "0.2.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"assets", "assets",
+11 -16
View File
@@ -514,10 +514,13 @@ impl SidebarPanel {
cx: &mut Context<Self>, cx: &mut Context<Self>,
) -> impl IntoElement { ) -> impl IntoElement {
let name = announcement.name().map(SharedString::from); let name = announcement.name().map(SharedString::from);
// The sidebar rows are compact, so the avatar matches the 16px nav icons. let owner = self.directory.read(cx).profile(&announcement.owner, cx);
let avatar = Avatar::new(format!("{}:{}", announcement.owner, announcement.id)).xsmall(); let avatar = Avatar::new(announcement.owner)
let announcement = announcement.clone(); .name(owner.name())
.picture(owner.picture())
.xsmall();
let announcement = announcement.clone();
let addr = announcement.addr(); let addr = announcement.addr();
let unpushed = self.unpushed.get(&addr).copied().unwrap_or(0); let unpushed = self.unpushed.get(&addr).copied().unwrap_or(0);
let unsynced = self.sync_directory.read(cx).unsynced(&addr, cx); let unsynced = self.sync_directory.read(cx).unsynced(&addr, cx);
@@ -773,32 +776,24 @@ pub(super) fn server_host(relay: &RelayUrl) -> SharedString {
.unwrap_or_else(|| SharedString::from(relay.to_string())) .unwrap_or_else(|| SharedString::from(relay.to_string()))
} }
/// The repository's pixel avatar, with the bound owner's avatar at its bottom right. /// The bound owner's avatar, falling back to the repo's pixel avatar when unowned.
fn local_avatar( fn local_avatar(
entry: &ResolvedLocalRepo, entry: &ResolvedLocalRepo,
directory: &Entity<ProfileDirectory>, directory: &Entity<ProfileDirectory>,
cx: &App, cx: &App,
) -> AnyElement { ) -> AnyElement {
// Matches the other sidebar rows, and the badge below sits at its corner.
let avatar = Avatar::new(entry.path.to_string_lossy()).xsmall();
let Some(owner) = entry.nip34.as_ref().and_then(|binding| binding.owner) else { let Some(owner) = entry.nip34.as_ref().and_then(|binding| binding.owner) else {
return avatar.into_any_element(); return Avatar::new(entry.path.to_string_lossy())
.xsmall()
.into_any_element();
}; };
let profile = directory.read(cx).profile(&owner, cx); let profile = directory.read(cx).profile(&owner, cx);
div()
.relative()
.child(avatar)
.child(
div().absolute().bottom_neg_0p5().right_neg_0p5().child(
Avatar::new(owner) Avatar::new(owner)
.name(profile.name()) .name(profile.name())
.picture(profile.picture()) .picture(profile.picture())
.size(px(14.)), .xsmall()
),
)
.into_any_element() .into_any_element()
} }