mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-15 19:30:38 +08:00
Add create_issue tauri command
This commit is contained in:
@@ -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 }[];
|
||||
};
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")]
|
||||
|
||||
Reference in New Issue
Block a user