diff --git a/source/app/mocks/api/github/graphql/reactions.default.mjs b/source/app/mocks/api/github/graphql/reactions.default.mjs index 3528abfc..64432d55 100644 --- a/source/app/mocks/api/github/graphql/reactions.default.mjs +++ b/source/app/mocks/api/github/graphql/reactions.default.mjs @@ -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"]), + })), }, }, })), diff --git a/source/plugins/reactions/README.md b/source/plugins/reactions/README.md index 1199fcb7..65ce7e7b 100644 --- a/source/plugins/reactions/README.md +++ b/source/plugins/reactions/README.md @@ -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 ``` \ No newline at end of file diff --git a/source/plugins/reactions/index.mjs b/source/plugins/reactions/index.mjs index da5f09a3..8619ff37 100644 --- a/source/plugins/reactions/index.mjs +++ b/source/plugins/reactions/index.mjs @@ -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`) diff --git a/source/plugins/reactions/metadata.yml b/source/plugins/reactions/metadata.yml index 2a1d081f..61f69446 100644 --- a/source/plugins/reactions/metadata.yml +++ b/source/plugins/reactions/metadata.yml @@ -51,4 +51,11 @@ inputs: example: count, percentage values: - count - - percentage \ No newline at end of file + - 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] \ No newline at end of file diff --git a/source/plugins/reactions/queries/reactions.graphql b/source/plugins/reactions/queries/reactions.graphql index f2abddef..b1d9c704 100644 --- a/source/plugins/reactions/queries/reactions.graphql +++ b/source/plugins/reactions/queries/reactions.graphql @@ -9,6 +9,9 @@ query ReactionsDefault { reactions(last: 100, orderBy: {field: CREATED_AT, direction: DESC}) { nodes { content + user { + login + } } } }