Add create_issue tauri command

This commit is contained in:
Sebastian Martinez
2024-09-27 09:35:36 +02:00
parent ddf44cea4e
commit 1a0de05a58
4 changed files with 49 additions and 3 deletions
+9
View File
@@ -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 }[];
};
+24 -2
View File
@@ -7,6 +7,28 @@ use crate::error::Error;
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>,
@@ -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)
}
+1
View File
@@ -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,
+15 -1
View File
@@ -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),
@@ -360,6 +360,20 @@ pub struct NewPatchComment {
pub embeds: Vec<cob::Embed>,
}
#[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")]