Skip to content

Commit d348748

Browse files
committed
Hide empty labels on pull request embeds
1 parent 6a987de commit d348748

1 file changed

Lines changed: 31 additions & 17 deletions

File tree

src/events/issue.rs

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ trait Embeddable {
6767
fn get_title(&self) -> String;
6868
fn get_description(&self) -> String;
6969
fn get_colour(&self) -> Colour;
70+
fn get_labels(&self) -> Option<String>;
7071
}
7172

7273
impl Embeddable for Issue {
@@ -87,14 +88,8 @@ impl Embeddable for Issue {
8788
embed.field("Milestone", &milestone.title, true);
8889
}
8990

90-
if !self.labels.is_empty() {
91-
let mut label_list = vec![];
92-
for label in &self.labels {
93-
label_list.push(label.name.clone());
94-
}
95-
96-
let value = format!("`{}`", label_list.join("`, `"));
97-
embed.field("Labels", value, true);
91+
if let Some(labels) = self.get_labels() {
92+
embed.field("Labels", labels, true);
9893
}
9994

10095
embed.to_owned()
@@ -122,6 +117,18 @@ impl Embeddable for Issue {
122117
None => OPEN_COLOUR
123118
}
124119
}
120+
121+
fn get_labels(&self) -> Option<String> {
122+
if !self.labels.is_empty() {
123+
let labels = &self.labels.iter()
124+
.map(|l| l.name.clone())
125+
.collect::<Vec<String>>();
126+
127+
Some(format!("`{}`", labels.join("`, `")))
128+
} else {
129+
None
130+
}
131+
}
125132
}
126133

127134
impl Embeddable for PullRequest {
@@ -151,15 +158,8 @@ impl Embeddable for PullRequest {
151158
embed.field("Milestone", &milestone.title, true);
152159
}
153160

154-
if let Some(labels) = &self.labels {
155-
let mut label_list = vec![];
156-
157-
for label in labels {
158-
label_list.push(label.name.clone());
159-
}
160-
161-
let value = format!("`{}`", label_list.join("`, `"));
162-
embed.field("Labels", value, true);
161+
if let Some(labels) = self.get_labels() {
162+
embed.field("Labels", labels, true);
163163
}
164164

165165
embed.to_owned()
@@ -193,4 +193,18 @@ impl Embeddable for PullRequest {
193193
None => OPEN_COLOUR
194194
}
195195
}
196+
197+
fn get_labels(&self) -> Option<String> {
198+
if let Some(labels) = &self.labels {
199+
if !labels.is_empty() {
200+
let labels = labels.iter()
201+
.map(|l| l.name.clone())
202+
.collect::<Vec<String>>();
203+
204+
return Some(format!("`{}`", labels.join("`, `")))
205+
}
206+
}
207+
208+
None
209+
}
196210
}

0 commit comments

Comments
 (0)