Woodpecker pipeline #885 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/472
Woodpecker pipeline #885 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/472
Woodpecker pipeline #885 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/472
Woodpecker pipeline #885 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/472
Woodpecker pipeline #885 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/472
Rebase
Woodpecker pipeline #886 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/473
Woodpecker pipeline #886 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/473
Woodpecker pipeline #886 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/473
Woodpecker pipeline #886 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/473
Woodpecker pipeline #886 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/473
Woodpecker pipeline #885 completed with status: failure. ❌
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/472
Woodpecker pipeline #886 completed with status: success. ✅
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/473
Clear filter when opening add repo popover
Woodpecker pipeline #887 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/474
Woodpecker pipeline #887 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/474
Woodpecker pipeline #887 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/474
Woodpecker pipeline #887 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/474
Woodpecker pipeline #887 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/474
Woodpecker pipeline #887 completed with status: success. ✅
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/474
Move fuzzy finder to the left hand side
Woodpecker pipeline #888 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/475
Woodpecker pipeline #888 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/475
Woodpecker pipeline #888 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/475
Woodpecker pipeline #888 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/475
Woodpecker pipeline #888 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/475
Woodpecker pipeline #888 completed with status: success. ✅
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/475
Improve repo fuzzy search by allowing to search by description
Woodpecker pipeline #889 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/476
Woodpecker pipeline #889 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/476
Woodpecker pipeline #889 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/476
Woodpecker pipeline #889 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/476
Woodpecker pipeline #889 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/476
Change filter icon color
Woodpecker pipeline #890 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/477
Woodpecker pipeline #890 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/477
Woodpecker pipeline #890 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/477
Woodpecker pipeline #890 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/477
Woodpecker pipeline #890 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/477
Woodpecker pipeline #889 completed with status: failure. ❌
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/476
Woodpecker pipeline #890 completed with status: success. ✅
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/477
Tweak
- show a proper button to remove queued project
- show queued projects even if there are no other seeded projects
Woodpecker pipeline #891 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/478
Woodpecker pipeline #891 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/478
Woodpecker pipeline #891 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/478
Woodpecker pipeline #891 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/478
Woodpecker pipeline #891 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/478
Woodpecker pipeline #891 completed with status: success. ✅
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/478
Squash
Woodpecker pipeline #892 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/479
Woodpecker pipeline #892 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/479
Woodpecker pipeline #892 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/479
Woodpecker pipeline #892 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/479
Woodpecker pipeline #892 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/479
Woodpecker pipeline #892 completed with status: success. ✅
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/479
Revert reaction change
Woodpecker pipeline #893 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/480
Woodpecker pipeline #893 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/480
Woodpecker pipeline #893 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/480
Woodpecker pipeline #893 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/480
Woodpecker pipeline #893 current status: created. ⏳
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/480
Woodpecker pipeline #893 completed with status: success. ✅
- Details: https://woodpecker.radworks.garden/repos/6/pipeline/480
Nice work first of all!
- It seems that if you try to seed a repo you already have and then change the RID the error doesn’t go away and it doesn’t let the user seed an unknown repo, see video in comments
- The add repo popover doesn’t go away after clicking the
Seedbutton, I think it should. - I’m no example but I think we should try to keep the logic in
radicle-typesand pointradicle-taurito the implementations here is a diff- Also rewrote the
seeded_not_replicateda bit to make use of theSeed_Policiesiterator.
- Also rewrote the
diff --git a/crates/radicle-tauri/src/commands/repo.rs b/crates/radicle-tauri/src/commands/repo.rs
index 8554087..ea0eb55 100644
--- a/crates/radicle-tauri/src/commands/repo.rs
+++ b/crates/radicle-tauri/src/commands/repo.rs
@@ -4,12 +4,10 @@ use std::str::FromStr;
use radicle::git;
use radicle::identity::project::ProjectName;
use radicle::identity::{doc, Project, RepoId, Visibility};
-use radicle::node::policy::Scope;
use radicle::rad::InitError;
use radicle::storage::git::Repository;
use radicle::storage::refs::branch_of;
-use radicle::storage::{ReadStorage, SignRepository, WriteRepository};
-use radicle::Node;
+use radicle::storage::{SignRepository, WriteRepository};
use radicle_types as types;
use radicle_types::error::Error;
use radicle_types::traits::repo::{Repo, Show};
@@ -134,37 +132,15 @@ pub(crate) async fn create_repo(
#[tauri::command]
pub fn seed(ctx: tauri::State<AppState>, rid: RepoId) -> Result<(), Error> {
- let profile = &ctx.profile;
- let mut node = Node::new(profile.socket());
-
- profile.seed(rid, Scope::All, &mut node)?;
-
- Ok(())
+ ctx.seed(rid)
}
#[tauri::command]
pub fn unseed(ctx: tauri::State<AppState>, rid: RepoId) -> Result<(), Error> {
- let profile = &ctx.profile;
- let mut node = Node::new(profile.socket());
-
- profile.unseed(rid, &mut node)?;
-
- Ok(())
+ ctx.unseed(rid)
}
#[tauri::command]
pub fn seeded_not_replicated(ctx: tauri::State<AppState>) -> Result<Vec<RepoId>, Error> {
- let profile = &ctx.profile;
- let storage = &profile.storage;
- let policies = profile.policies()?;
- let mut entries = Vec::new();
-
- for seed_policy in policies.seed_policies()? {
- let rid = seed_policy.rid;
- if !storage.contains(&rid)? {
- entries.push(rid);
- }
- }
-
- Ok(entries)
+ ctx.seeded_not_replicated()
}
diff --git a/crates/radicle-types/src/error.rs b/crates/radicle-types/src/error.rs
index 7128b8c..406ac7f 100644
--- a/crates/radicle-types/src/error.rs
+++ b/crates/radicle-types/src/error.rs
@@ -19,6 +19,10 @@ pub enum Error {
#[error("ssh agent not running")]
AgentNotRunning,
+ /// Missing SSH Agent error.
+ #[error(transparent)]
+ RoutingError(#[from] radicle::node::routing::Error),
+
/// Generic Cob cache error.
#[error(transparent)]
Cache(#[from] radicle::cob::cache::Error),
diff --git a/crates/radicle-types/src/traits/repo.rs b/crates/radicle-types/src/traits/repo.rs
index 4ea62f5..b490461 100644
--- a/crates/radicle-types/src/traits/repo.rs
+++ b/crates/radicle-types/src/traits/repo.rs
@@ -8,7 +8,7 @@ use radicle::node::routing::Store;
use radicle::patch::cache::Patches as _;
use radicle::storage;
use radicle::storage::{ReadRepository, ReadStorage, RepositoryInfo};
-use radicle::{git, identity};
+use radicle::{git, identity, node};
use crate::cobs;
use crate::diff;
@@ -295,4 +295,35 @@ pub trait Repo: Profile {
Ok(commits)
}
+
+ fn unseed(&self, rid: identity::RepoId) -> Result<(), Error> {
+ let profile = self.profile();
+ let mut node = radicle::Node::new(profile.socket());
+
+ profile.unseed(rid, &mut node)?;
+
+ Ok(())
+ }
+
+ fn seed(&self, rid: identity::RepoId) -> Result<(), Error> {
+ let profile = self.profile();
+ let mut node = radicle::Node::new(profile.socket());
+
+ profile.seed(rid, node::policy::Scope::All, &mut node)?;
+
+ Ok(())
+ }
+
+ fn seeded_not_replicated(&self) -> Result<Vec<identity::RepoId>, Error> {
+ let profile = &self.profile();
+ let storage = &profile.storage;
+ let policies = profile.policies()?;
+ let entries = policies
+ .seed_policies()?
+ .filter(|policy| !storage.contains(&policy.rid).unwrap_or(false))
+ .map(|policy| policy.rid)
+ .collect::<Vec<_>>();
+
+ Ok(entries)
+ }
}
Apply Sebastian’s suggestions
Fix validation errors and clean up validation code
Refactor and clean up
Convert px to rem where applicable
Remove unrelated rust change
LGTM!