diff --git a/package.json b/package.json index 30c51d0..b61c1d1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "prism", "private": true, - "version": "0.1.3", + "version": "0.1.4", "type": "module", "scripts": { "dev": "vite", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index ad0a452..47ea5f7 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -3071,7 +3071,7 @@ dependencies = [ [[package]] name = "prism" -version = "0.1.3" +version = "0.1.4" dependencies = [ "log", "open", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 516200f..26bc002 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "prism" -version = "0.1.3" +version = "0.1.4" description = "Desktop client for GitHub Pull Requests." authors = ["Israel Araujo de Oliveira"] license = "MIT" diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index 592e53f..6d1909b 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -512,7 +512,10 @@ query($owner: String!, $name: String!, $number: Int!) { reviewRequests(first: 10) { nodes { requestedReviewer { + __typename ... on User { login avatarUrl } + ... on Team { name avatarUrl } + ... on Mannequin { login avatarUrl } } } } @@ -725,7 +728,41 @@ struct GqlReviewRequestConnection { #[serde(default)] struct GqlReviewRequestNode { #[serde(rename = "requestedReviewer")] - requested_reviewer: Option, + requested_reviewer: Option, +} + +#[derive(Deserialize)] +#[serde(tag = "__typename")] +enum GqlReviewer { + User { + login: String, + #[serde(rename = "avatarUrl")] + avatar_url: String, + }, + Team { + name: String, + #[serde(rename = "avatarUrl")] + avatar_url: String, + }, + Mannequin { + login: String, + #[serde(rename = "avatarUrl")] + avatar_url: String, + }, + #[serde(other)] + Unknown, +} + +fn reviewer_to_author(r: GqlReviewer) -> Option { + match r { + GqlReviewer::User { login, avatar_url } + | GqlReviewer::Mannequin { login, avatar_url } => Some(PrAuthor { login, avatar_url }), + GqlReviewer::Team { name, avatar_url } => Some(PrAuthor { + login: name, + avatar_url, + }), + GqlReviewer::Unknown => None, + } } #[derive(Deserialize)] @@ -882,7 +919,7 @@ pub async fn get_pr_details( .review_requests .nodes .into_iter() - .filter_map(|n| n.requested_reviewer.map(user_to_author)) + .filter_map(|n| n.requested_reviewer.and_then(reviewer_to_author)) .collect(); let mut timeline: Vec = Vec::new(); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index f353b43..691159e 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "Prism", - "version": "0.1.3", + "version": "0.1.4", "identifier": "io.github.israelaraujo70.prism", "build": { "frontendDist": "../dist",