Radish alpha
r
rad:z4D5UCArafTzTQpDZNQRuqswh3ury
Radicle desktop app
Radicle
Git
Add `create_issue` tauri command
Open did:key:z6MkkfM3...sVz5 opened 1 year ago
4 files changed +49 -3 ddf44cea 1a0de05a
added src-tauri/bindings/NewIssue.ts
@@ -0,0 +1,9 @@
+
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
+

+
export type NewIssue = {
+
  title: string;
+
  description: string;
+
  labels: Array<string>;
+
  assignees: Array<string>;
+
  embeds: { name: string; content: string }[];
+
};
modified src-tauri/src/commands/cob/issue.rs
@@ -8,6 +8,28 @@ use crate::types::cobs;
use crate::AppState;

#[tauri::command]
+
pub fn create_issue(
+
    ctx: tauri::State<AppState>,
+
    rid: RepoId,
+
    new: cobs::NewIssue,
+
) -> Result<cobs::Issue, Error> {
+
    let (repo, _) = ctx.repo(rid)?;
+
    let signer = ctx.profile.signer()?;
+
    let aliases = ctx.profile.aliases();
+
    let mut issues = ctx.profile.issues_mut(&repo)?;
+
    let issue = issues.create(
+
        new.title,
+
        new.description,
+
        &new.labels,
+
        &new.assignees,
+
        new.embeds,
+
        &signer,
+
    )?;
+

+
    Ok::<_, Error>(cobs::Issue::new(issue.id(), &issue, &aliases))
+
}
+

+
#[tauri::command]
pub fn list_issues(
    ctx: tauri::State<AppState>,
    rid: RepoId,
@@ -27,7 +49,7 @@ pub fn list_issues(
    let aliases = &ctx.profile.aliases();
    let issues = issues
        .into_iter()
-
        .map(|(id, issue)| cobs::Issue::new(id, issue, aliases))
+
        .map(|(id, issue)| cobs::Issue::new(&id, &issue, aliases))
        .collect::<Vec<_>>();

    Ok::<_, Error>(issues)
@@ -44,7 +66,7 @@ pub fn issue_by_id(
    let issue = issues.get(&id.into())?;

    let aliases = &ctx.profile.aliases();
-
    let issue = issue.map(|issue| cobs::Issue::new(id.into(), issue, aliases));
+
    let issue = issue.map(|issue| cobs::Issue::new(&id.into(), &issue, aliases));

    Ok::<_, Error>(issue)
}
modified src-tauri/src/lib.rs
@@ -143,6 +143,7 @@ pub fn run() {
            repo::diff_stats,
            cob::issue::list_issues,
            cob::issue::issue_by_id,
+
            cob::issue::create_issue,
            cob::patch::list_patches,
            cob::patch::patch_by_id,
            cob::patch::revisions_by_patch,
modified src-tauri/src/types/cobs.rs
@@ -50,7 +50,7 @@ pub struct Issue {
}

impl Issue {
-
    pub fn new(id: issue::IssueId, issue: issue::Issue, aliases: &impl AliasStore) -> Self {
+
    pub fn new(id: &issue::IssueId, issue: &issue::Issue, aliases: &impl AliasStore) -> Self {
        Self {
            id: id.to_string(),
            author: Author::new(*issue.author().id(), aliases),
@@ -363,6 +363,20 @@ pub struct NewPatchComment {
#[derive(TS, Serialize, Deserialize)]
#[ts(export)]
#[serde(rename_all = "camelCase")]
+
pub struct NewIssue {
+
    pub title: String,
+
    pub description: String,
+
    #[ts(as = "Vec<String>")]
+
    pub labels: Vec<cob::Label>,
+
    #[ts(as = "Vec<String>")]
+
    pub assignees: Vec<identity::Did>,
+
    #[ts(type = "{ name: string, content: string }[]")]
+
    pub embeds: Vec<cob::Embed>,
+
}
+

+
#[derive(TS, Serialize, Deserialize)]
+
#[ts(export)]
+
#[serde(rename_all = "camelCase")]
pub struct NewIssueComment {
    pub id: String,
    pub body: String,