@@ -41,8 +41,19 @@ class Unapproved extends BaseCommand {
41
41
const link = `[${ request . title } ](${ request . web_url } )`
42
42
const author = `@${ request . author . username } `
43
43
const project = `[${ request . project . name } ](${ request . project . web_url } )`
44
+ const unresolvedAuthors = this . __unresolvedAuthorsString ( request )
45
+ const approvedBy = this . __approvedByString ( request )
44
46
45
- return `${ reaction } **${ link } ** (${ project } ) by **${ author } **`
47
+ let message = [ `${ reaction } **${ link } ** (${ project } ) by **${ author } **` ]
48
+
49
+ if ( unresolvedAuthors . length > 0 ) {
50
+ message . push ( `unresolved threads by: ${ unresolvedAuthors } ` )
51
+ }
52
+ if ( approvedBy . length > 0 ) {
53
+ message . push ( `already approved by: ${ approvedBy } ` )
54
+ }
55
+
56
+ return message . join ( "\n" )
46
57
}
47
58
48
59
__getEmoji = lastUpdate => {
@@ -89,6 +100,44 @@ class Unapproved extends BaseCommand {
89
100
__appendDiscussions = ( project , request ) => this . gitlab
90
101
. discussions ( project . id , request . iid )
91
102
. then ( discussions => ( { ...request , discussions } ) )
103
+
104
+ __unresolvedAuthorsString = request => {
105
+ return this . __unresolvedAuthorsFor ( request ) . map ( author => {
106
+ return `@${ author . username } `
107
+ } ) . join ( ", " )
108
+ }
109
+
110
+ __approvedByString = request => {
111
+ return request . approved_by . map ( approve => {
112
+ const { user } = approve
113
+
114
+ return `@${ user . username } `
115
+ } ) . join ( ", " )
116
+ }
117
+
118
+ __unresolvedAuthorsFor = request => {
119
+ const { discussions } = request
120
+
121
+ const userNames = _ . flow (
122
+ _ . partialRight (
123
+ _ . filter ,
124
+ discussion => discussion . notes . some (
125
+ note => note . resolvable && ! note . resolved
126
+ )
127
+ ) ,
128
+ _ . partialRight (
129
+ _ . map ,
130
+ discussion => discussion . notes . map ( note => note . author )
131
+ ) ,
132
+ _ . partialRight ( _ . flatten ) ,
133
+ _ . partialRight (
134
+ _ . uniqBy ,
135
+ author => author . username
136
+ ) ,
137
+ )
138
+
139
+ return userNames ( discussions )
140
+ }
92
141
}
93
142
94
143
module . exports = Unapproved
0 commit comments