From 4e40dcff94fe0ac5df48a6ee84f41e9399aadc8f Mon Sep 17 00:00:00 2001
From: Simon Lecoq <22963968+lowlighter@users.noreply.github.com>
Date: Thu, 12 Aug 2021 13:38:16 +0200
Subject: [PATCH] Achievements plugin: add chatter and helper achievements
(#470) [skip ci]
---
.../github/graphql/achievements.default.mjs | 3 ++
source/plugins/achievements/list/users.mjs | 30 +++++++++++++++++++
.../achievements/queries/achievements.graphql | 9 ++++++
3 files changed, 42 insertions(+)
diff --git a/source/app/mocks/api/github/graphql/achievements.default.mjs b/source/app/mocks/api/github/graphql/achievements.default.mjs
index 4f0f8bd5..da64b140 100644
--- a/source/app/mocks/api/github/graphql/achievements.default.mjs
+++ b/source/app/mocks/api/github/graphql/achievements.default.mjs
@@ -62,6 +62,9 @@ export default function({faker, query, login = faker.internet.userName()}) {
bio:faker.lorem.sentence(),
status:{message:faker.lorem.paragraph()},
sponsorshipsAsSponsor:{totalCount:faker.datatype.number(100)},
+ discussionsStarted:{totalCount:faker.datatype.number(1000)},
+ discussionsComments:{totalCount:faker.datatype.number(1000)},
+ discussionAnswers:{totalCount:faker.datatype.number(1000)},
},
})
}
diff --git a/source/plugins/achievements/list/users.mjs b/source/plugins/achievements/list/users.mjs
index c526ffb2..d17dc513 100644
--- a/source/plugins/achievements/list/users.mjs
+++ b/source/plugins/achievements/list/users.mjs
@@ -262,6 +262,36 @@ export default async function({list, login, data, computed, imports, graphql, qu
})
}
+ //Chatter
+ {
+ const value = user.discussionsStarted.totalCount + user.discussionsComments.totalCount
+ const unlock = null
+
+ list.push({
+ title:"Chatter",
+ text:`Participated in discussions ${value} time${imports.s(value)}`,
+ icon:'',
+ ...rank(value, [1, 200, 500, 1000, 2500]),
+ value,
+ unlock:new Date(unlock?.createdAt),
+ })
+ }
+
+ //Helper
+ {
+ const value = user.discussionAnswers.totalCount
+ const unlock = null
+
+ list.push({
+ title:"Helper",
+ text:`Answered and solved ${value} discussion${imports.s(value)}`,
+ icon:'',
+ ...rank(value, [1, 20, 50, 100, 250]),
+ value,
+ unlock:new Date(unlock?.createdAt),
+ })
+ }
+
//Verified
{
const value = !/This user hasn't uploaded any GPG keys/i.test((await imports.axios.get(`https://github.com/${login}.gpg`)).data)
diff --git a/source/plugins/achievements/queries/achievements.graphql b/source/plugins/achievements/queries/achievements.graphql
index 1834eb95..c7bcb13b 100644
--- a/source/plugins/achievements/queries/achievements.graphql
+++ b/source/plugins/achievements/queries/achievements.graphql
@@ -94,5 +94,14 @@ query AchievementsDefault {
sponsorshipsAsSponsor {
totalCount
}
+ discussionsStarted: repositoryDiscussions {
+ totalCount
+ }
+ discussionsComments: repositoryDiscussionComments {
+ totalCount
+ }
+ discussionAnswers: repositoryDiscussionComments(onlyAnswers: true) {
+ totalCount
+ }
}
}