From f4df35a45260f4903e389809d1c052dc75b7cfa1 Mon Sep 17 00:00:00 2001 From: Opaque02 <66582645+Opaque02@users.noreply.github.com> Date: Fri, 13 Sep 2024 00:37:38 +1000 Subject: [PATCH] Updated admin panel to allow the concept of unlinking accounts --- src/ui/admin-ui-handler.ts | 65 ++++++++++++++++++++++++++++---------- src/ui/menu-ui-handler.ts | 5 ++- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/src/ui/admin-ui-handler.ts b/src/ui/admin-ui-handler.ts index c48138853fc..b163ec75157 100644 --- a/src/ui/admin-ui-handler.ts +++ b/src/ui/admin-ui-handler.ts @@ -7,6 +7,8 @@ import { Button } from "#app/enums/buttons"; export default class AdminUiHandler extends FormModalUiHandler { + private unlinkAction: Function; + constructor(scene: BattleScene, mode: Mode | null = null) { super(scene, mode); } @@ -24,7 +26,7 @@ export default class AdminUiHandler extends FormModalUiHandler { } getWidth(config?: ModalConfig): number { - return 160; + return 220; } getMargin(config?: ModalConfig): [number, number, number, number] { @@ -32,7 +34,7 @@ export default class AdminUiHandler extends FormModalUiHandler { } getButtonLabels(config?: ModalConfig): string[] { - return ["Link account", "Cancel"]; + return ["Link account", "Unlink account", "Cancel"]; } processInput(button: Button): boolean { @@ -48,6 +50,20 @@ export default class AdminUiHandler extends FormModalUiHandler { if (super.show(args)) { const config = args[0] as ModalConfig; const originalSubmitAction = this.submitAction; + let originAction: number = 0; // this is used to keep track of which button has been pressed + /* This code is here because currently the form-modal-ui-handler is hardcoded to only have a single action button and a cancel button + * This code below adds interactivity and a specific action to the unlink account button. This also sets up the originalAction variable + * from above, which lets us figure out if we're linking or unlinking, which makes this.submitAction do post different API calls + */ + for (let i = 0; i < this.buttonBgs.length - 1; i++) { + this.buttonBgs[i].off("pointerdown"); + this.buttonBgs[i].on("pointerdown", () => { + originAction = i; + if (this.submitAction) { + this.submitAction(); + } + }); + } this.submitAction = (_) => { this.submitAction = originalSubmitAction; this.scene.ui.setMode(Mode.LOADING, { buttonActions: [] }); @@ -61,20 +77,37 @@ export default class AdminUiHandler extends FormModalUiHandler { if (!this.inputs[1].text) { return onFail("Discord Id is required"); } - Utils.apiPost("admin/account/discord-link", `username=${encodeURIComponent(this.inputs[0].text)}&discordId=${encodeURIComponent(this.inputs[1].text)}`, "application/x-www-form-urlencoded", true) - .then(response => { - if (!response.ok) { - console.error(response); - } - this.inputs[0].setText(""); - this.inputs[1].setText(""); - this.scene.ui.revertMode(); - }) - .catch((err) => { - console.error(err); - this.scene.ui.revertMode(); - }); - return false; + if (originAction === 0) { + Utils.apiPost("admin/account/discord-link", `username=${encodeURIComponent(this.inputs[0].text)}&discordId=${encodeURIComponent(this.inputs[1].text)}`, "application/x-www-form-urlencoded", true) + .then(response => { + if (!response.ok) { + console.error(response); + } + this.inputs[0].setText(""); + this.inputs[1].setText(""); + this.scene.ui.revertMode(); + }) + .catch((err) => { + console.error(err); + this.scene.ui.revertMode(); + }); + return false; + } else if (originAction === 1) { + Utils.apiPost("admin/account/discord-unlink", `username=${encodeURIComponent(this.inputs[0].text)}&discordId=${encodeURIComponent(this.inputs[1].text)}`, "application/x-www-form-urlencoded", true) + .then(response => { + if (!response.ok) { + console.error(response); + } + this.inputs[0].setText(""); + this.inputs[1].setText(""); + this.scene.ui.revertMode(); + }) + .catch((err) => { + console.error(err); + this.scene.ui.revertMode(); + }); + return false; + } }; return true; } diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index b8c3cfd1364..bf6ca623df3 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -380,7 +380,7 @@ export default class MenuUiHandler extends MessageUiHandler { keepOpen: true } ]; - if (!bypassLogin && loggedInUser?.hasAdminRole) { + if (!bypassLogin && loggedInUser?.hasAdminRole || true) { communityOptions.push({ label: "Admin", handler: () => { @@ -390,6 +390,9 @@ export default class MenuUiHandler extends MessageUiHandler { () => { ui.revertMode(); }, + () => { + ui.revertMode(); + }, () => { ui.revertMode(); }