mirror of
https://github.com/roleypoly/roleypoly-v1.git
synced 2025-06-14 17:49:08 +00:00
feat(rolepicker): report on status passed up from discord service
This commit is contained in:
parent
690671317f
commit
0c321e8b1e
9 changed files with 116 additions and 43 deletions
|
@ -134,18 +134,27 @@ module.exports = (R, $) => {
|
|||
// last, add new roles
|
||||
newRoles = [...newRoles, ...sanitizedAdded]
|
||||
|
||||
if (!arrayMatches(currentRoles, newRoles)) {
|
||||
if (process.env.FF_TransactionalRoles !== '0') {
|
||||
await $.discord.updateRolesTx(gm, {
|
||||
added: sanitizedAdded,
|
||||
removed: sanitizedRemoved,
|
||||
})
|
||||
} else {
|
||||
await $.discord.updateRoles(gm, newRoles)
|
||||
let status = null
|
||||
|
||||
try {
|
||||
if (!arrayMatches(currentRoles, newRoles)) {
|
||||
if (process.env.FF_TransactionalRoles !== '0') {
|
||||
const ret = await $.discord.updateRolesTx(gm, {
|
||||
added: sanitizedAdded,
|
||||
removed: sanitizedRemoved,
|
||||
})
|
||||
status = ret.toObject().status
|
||||
} else {
|
||||
await $.discord.updateRoles(gm, newRoles)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
ctx.status = 400
|
||||
ctx.body = { ok: false }
|
||||
return
|
||||
}
|
||||
|
||||
ctx.body = { ok: true }
|
||||
ctx.body = { ok: true, status }
|
||||
|
||||
$.P.invalidate(userId)
|
||||
$.discord.invalidate(userId)
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
const Service = require('./Service')
|
||||
const superagent = require('superagent')
|
||||
const { DiscordClient, Member, RoleTransaction, TxDelta } = require('@roleypoly/rpc/discord')
|
||||
const {
|
||||
DiscordClient,
|
||||
Member,
|
||||
RoleTransaction,
|
||||
TxDelta,
|
||||
} = require('@roleypoly/rpc/discord')
|
||||
const { IDQuery, DiscordUser } = require('@roleypoly/rpc/shared')
|
||||
const { Empty } = require('google-protobuf/google/protobuf/empty_pb')
|
||||
const { NodeHttpTransport } = require('@improbable-eng/grpc-web-node-http-transport')
|
||||
|
@ -158,7 +163,7 @@ class DiscordService extends Service {
|
|||
async updateRolesTx(memberObj, { added, removed }) {
|
||||
const roleTx = new RoleTransaction()
|
||||
roleTx.setMember(this.memberToQueryProto(memberObj))
|
||||
|
||||
|
||||
for (let toAdd of added) {
|
||||
const delta = new TxDelta()
|
||||
delta.setAction(TxDelta.Action.ADD)
|
||||
|
@ -173,7 +178,7 @@ class DiscordService extends Service {
|
|||
roleTx.addDelta(delta)
|
||||
}
|
||||
|
||||
await this.rpc.updateMemberRoles(roleTx, this.sharedHeaders)
|
||||
return this.rpc.updateMemberRoles(roleTx, this.sharedHeaders)
|
||||
}
|
||||
|
||||
memberToQueryProto(member) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue