Преглед изворни кода

Title and body are optional fields in changes

GitHub will not set these if the title or body have not changed.
Mark Rousskov пре 4 година
родитељ
комит
d32e6a9923
2 измењених фајлова са 12 додато и 10 уклоњено
  1. 4 4
      src/github.rs
  2. 8 6
      src/handlers/major_change.rs

+ 4 - 4
src/github.rs

@@ -649,8 +649,8 @@ pub struct ChangeInner {
 
 #[derive(Debug, serde::Deserialize)]
 pub struct Changes {
-    pub title: ChangeInner,
-    pub body: ChangeInner,
+    pub title: Option<ChangeInner>,
+    pub body: Option<ChangeInner>,
 }
 
 #[derive(PartialEq, Eq, Debug, serde::Deserialize)]
@@ -947,8 +947,8 @@ impl Event {
     pub fn comment_from(&self) -> Option<&str> {
         match self {
             Event::Create(_) => None,
-            Event::Issue(e) => Some(&e.changes.as_ref()?.body.from),
-            Event::IssueComment(e) => Some(&e.changes.as_ref()?.body.from),
+            Event::Issue(e) => Some(&e.changes.as_ref()?.body.as_ref()?.from),
+            Event::IssueComment(e) => Some(&e.changes.as_ref()?.body.as_ref()?.from),
             Event::Push(_) => None,
         }
     }

+ 8 - 6
src/handlers/major_change.rs

@@ -21,12 +21,14 @@ pub(super) fn parse_input(
 ) -> Result<Option<Invocation>, String> {
     if event.action == IssuesAction::Edited {
         if let Some(changes) = &event.changes {
-            let prev_issue = ZulipGitHubReference {
-                number: event.issue.number,
-                title: changes.title.from.clone(),
-                repository: event.issue.repository().clone(),
-            };
-            return Ok(Some(Invocation::Rename { prev_issue }));
+            if let Some(previous_title) = &changes.title {
+                let prev_issue = ZulipGitHubReference {
+                    number: event.issue.number,
+                    title: previous_title.from.clone(),
+                    repository: event.issue.repository().clone(),
+                };
+                return Ok(Some(Invocation::Rename { prev_issue }));
+            }
         } else {
             return Err(format!("no changes property in edited event"));
         }