feat(rolepicker): report on status passed up from discord service

This commit is contained in:
41666 2020-05-07 22:38:56 -04:00
parent 690671317f
commit 0c321e8b1e
No known key found for this signature in database
GPG key ID: BC51D07640DC10AF
9 changed files with 116 additions and 43 deletions

View file

@ -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)

View file

@ -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) {