Radish alpha
r
rad:z4D5UCArafTzTQpDZNQRuqswh3ury
Radicle desktop app
Radicle
Git
Sort projects by name on the home screen
Open rudolfs opened 1 year ago
rudolfs opened with revision fa575ec2 on base 31e27339 +21 -2 1 year ago
did:key:z6MkkfM3...sVz5 reviewed 1 year ago

Nice work on the rust code 🦀

To make it a bit more rust idiomatic, I think we could change it to something like

Just in general we shouldn’t use expect, since it makes the app panic, and we are panicking here if a repo has no project payload, not regarding a missing name.

diff --git a/crates/radicle-types/src/repo.rs b/crates/radicle-types/src/repo.rs
index 7594e2e..cf4d2da 100644
--- a/crates/radicle-types/src/repo.rs
+++ b/crates/radicle-types/src/repo.rs
@@ -86,7 +86,7 @@ pub struct SupportedPayloads {
 #[ts(export)]
 #[ts(export_to = "repo/")]
 pub struct ProjectPayload {
-    pub data: ProjectPayloadData,
+    data: ProjectPayloadData,
     meta: ProjectPayloadMeta,
 }
 
@@ -94,6 +94,10 @@ impl ProjectPayload {
     pub fn new(data: ProjectPayloadData, meta: ProjectPayloadMeta) -> Self {
         Self { data, meta }
     }
+
+    pub fn name(&self) -> &str {
+        &self.data.name
+    }
 }
 
 impl TryFrom<identity::doc::Payload> for ProjectPayloadData {
diff --git a/crates/radicle-types/src/traits/repo.rs b/crates/radicle-types/src/traits/repo.rs
index 5af0df2..9f187b8 100644
--- a/crates/radicle-types/src/traits/repo.rs
+++ b/crates/radicle-types/src/traits/repo.rs
@@ -57,26 +57,7 @@ pub trait Repo: Profile {
             entries.push(repo_info)
         }
 
-        entries.sort_by(|a, b| {
-            let title_a = a
-                .payloads
-                .project
-                .as_ref()
-                .expect("Project payload always has a name")
-                .data
-                .name
-                .as_str();
-            let title_b = b
-                .payloads
-                .project
-                .as_ref()
-                .expect("Project payload always has a name")
-                .data
-                .name
-                .as_str();
-
-            title_a.to_lowercase().cmp(&title_b.to_lowercase())
-        });
+        entries.sort_by_key(|repo_info| repo_info.payloads.project.as_ref().map(|p| p.name().to_lowercase()));
 
         Ok::<_, Error>(entries)
     }
rudolfs pushed revision 2 0fa2f410 on base 31e27339 +11 -1 1 year ago

Apply Sebastian’s suggestions

rudolfs pushed revision 3 4b70d6f7 on base 31e27339 +87 -10 1 year ago

Add repo fuzzy finder to home screen

rudolfs pushed revision 4 14e256fc on base 31e27339 +88 -10 1 year ago

Clear input on blur

rudolfs pushed revision 5 f1cf2bbe on base 31e27339 +88 -10 1 year ago

Update wording

rudolfs pushed revision 6 072a4d4d on base 31e27339 +115 -14 1 year ago

Show a message when there are no matches