Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
cob: Refactor `Thread` methods
Alexis Sellier committed 3 years ago
commit bb3787258a22f6830daf9b9fea242eb16018db65
parent e01838a70a2e19d747a49085db6445b1b823901e
3 files changed +13 -15
modified radicle-cli/src/commands/comment.rs
@@ -97,9 +97,10 @@ fn comment(
        store::Error::NotFound(_, _) => anyhow::anyhow!("Could not find issue {}", options.id),
        _ => e.into(),
    })?;
-
    let (comment_id, _) = issue.root().expect("root comment always exists");
+
    let (comment_id, _) = issue.comments().next().expect("root comment always exists");

    issue.comment(message, *comment_id, &signer)?;
+

    Ok(())
}

modified radicle/src/cob/patch.rs
@@ -353,7 +353,7 @@ impl Revision {
    }

    pub fn description(&self) -> Option<&str> {
-
        let (_, comment) = self.discussion.root()?;
+
        let (_, comment) = self.discussion.first()?;
        Some(comment.body())
    }
}
modified radicle/src/cob/thread.rs
@@ -203,11 +203,12 @@ impl Thread {
        }
    }

-
    pub fn root(&self) -> Option<(&CommentId, &Comment)> {
-
        self.comments
-
            .iter()
-
            .filter_map(|(id, r)| r.get().map(|comment| (id, comment)))
-
            .next()
+
    pub fn first(&self) -> Option<(&CommentId, &Comment)> {
+
        self.comments().next()
+
    }
+

+
    pub fn last(&self) -> Option<(&CommentId, &Comment)> {
+
        self.comments().next_back()
    }

    pub fn replies<'a>(
@@ -235,14 +236,10 @@ impl Thread {
            .map(|(a, r)| (a, r))
    }

-
    pub fn comments(&self) -> impl Iterator<Item = (&CommentId, &Comment)> + '_ {
-
        self.comments.iter().filter_map(|(id, comment)| {
-
            if let Redactable::Present(c) = comment {
-
                Some((id, c))
-
            } else {
-
                None
-
            }
-
        })
+
    pub fn comments(&self) -> impl DoubleEndedIterator<Item = (&CommentId, &Comment)> + '_ {
+
        self.comments
+
            .iter()
+
            .filter_map(|(id, comment)| comment.get().map(|comment| (id, comment)))
    }
}