Add option to ignores users in reactions plugin (#256)

This commit is contained in:
Simon Lecoq
2021-04-24 21:46:27 +02:00
committed by GitHub
parent e25c486a52
commit 836afd3bfd
5 changed files with 20 additions and 4 deletions

View File

@@ -17,7 +17,10 @@
node:{
createdAt:faker.date.recent(),
reactions:{
nodes:new Array(50).fill(null).map(_ => ({content:faker.random.arrayElement(["HEART", "THUMBS_UP", "THUMBS_DOWN", "LAUGH", "CONFUSED", "EYES", "ROCKET", "HOORAY"])})),
nodes:new Array(50).fill(null).map(_ => ({
user:{login:faker.internet.userName()},
content:faker.random.arrayElement(["HEART", "THUMBS_UP", "THUMBS_DOWN", "LAUGH", "CONFUSED", "EYES", "ROCKET", "HOORAY"]),
})),
},
},
})),

View File

@@ -21,4 +21,5 @@ The *reactions* plugin displays overall reactions on your recent issues and issu
plugin_reactions_limit: 200 # Compute reactions over last 200 issue comments
plugin_reactions_days: 14 # Compute reactions on issue comments posted less than 14 days ago
plugin_reactions_details: count, percentage # Display reactions count and percentage
plugin_reactions_ignored: bot # Ignore "bot" user
```

View File

@@ -7,7 +7,7 @@
return null
//Load inputs
let {limit, days, details, display} = imports.metadata.plugins.reactions.inputs({data, account, q})
let {limit, days, details, display, ignored} = imports.metadata.plugins.reactions.inputs({data, account, q})
//Load issue comments
let cursor = null, pushed = 0
@@ -19,7 +19,9 @@
const {user:{[type]:{edges}}} = await graphql(queries.reactions({login, type, after:cursor ? `after: "${cursor}"` : ""}))
cursor = edges?.[edges?.length-1]?.cursor
//Save issue comments
const filtered = edges.flatMap(({node:{createdAt:created, reactions:{nodes:reactions}}}) => ({created:new Date(created), reactions:reactions.map(({content}) => content)})).filter(comment => Number.isFinite(days) ? comment.created < new Date(Date.now()-days*24*60*60*1000) : true)
const filtered = edges
.flatMap(({node:{createdAt:created, reactions:{nodes:reactions}}}) => ({created:new Date(created), reactions:reactions.filter(({user = {}}) => !ignored.includes(user.login)).map(({content}) => content)}))
.filter(comment => Number.isFinite(days) ? comment.created < new Date(Date.now()-days*24*60*60*1000) : true)
pushed = filtered.length
comments.push(...filtered)
console.debug(`metrics/compute/${login}/plugins > reactions > currently at ${comments.length} comments`)

View File

@@ -51,4 +51,11 @@ inputs:
example: count, percentage
values:
- count
- percentage
- percentage
# Ignored users (useful to ignore bots users)
plugin_reactions_ignored:
description: Users to ignore
type: array
format: comma-separated
default: github-actions[bot], dependabot[bot]

View File

@@ -9,6 +9,9 @@ query ReactionsDefault {
reactions(last: 100, orderBy: {field: CREATED_AT, direction: DESC}) {
nodes {
content
user {
login
}
}
}
}