diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..ad92582
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "editor.formatOnSave": true
+}
diff --git a/Server/api/servers.js b/Server/api/servers.js
index dd8f980..eec32ad 100644
--- a/Server/api/servers.js
+++ b/Server/api/servers.js
@@ -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)
diff --git a/Server/services/discord.js b/Server/services/discord.js
index 0fa688c..5419e43 100644
--- a/Server/services/discord.js
+++ b/Server/services/discord.js
@@ -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) {
diff --git a/UI/package-lock.json b/UI/package-lock.json
index f71dc20..0157987 100644
--- a/UI/package-lock.json
+++ b/UI/package-lock.json
@@ -15935,6 +15935,11 @@
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
+ "uikit": {
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/uikit/-/uikit-3.4.4.tgz",
+ "integrity": "sha512-VTDqtTUTH2XiGw0MudWki4oPl+Bxt3JEm5S/CE1B9zUmt9/FqKRYxv/7s5GSeNMnRMSQa2evQTkLSGsdBmKXdA=="
+ },
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
diff --git a/UI/package.json b/UI/package.json
index 24541ef..a0a07b6 100644
--- a/UI/package.json
+++ b/UI/package.json
@@ -24,6 +24,7 @@
"redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0",
"superagent": "^5.2.2",
+ "uikit": "^3.4.4",
"uuid": "^3.3.3"
},
"scripts": {
diff --git a/UI/public/index.html b/UI/public/index.html
index 8428745..15608bf 100644
--- a/UI/public/index.html
+++ b/UI/public/index.html
@@ -1,16 +1,34 @@
-
-
-
-
+
+
+
+
Roleypoly
-
-
-
-
-
+
+
+
+
+