diff --git a/components/Message.vue b/components/Message.vue
index 066331b..fa202aa 100644
--- a/components/Message.vue
+++ b/components/Message.vue
@@ -59,6 +59,9 @@
+
\ No newline at end of file
diff --git a/types/interfaces.ts b/types/interfaces.ts
index bb6489b..02235e0 100644
--- a/types/interfaces.ts
+++ b/types/interfaces.ts
@@ -140,3 +140,8 @@ export interface NavbarOptions {
isDirectMessages?: boolean
}
+export interface IConfirmationModal {
+ show: boolean,
+ actionName: string,
+ callback: CallableFunction
+}
diff --git a/utils/createMemberContextMenuItems.ts b/utils/createMemberContextMenuItems.ts
index 0ad5e46..06c5032 100644
--- a/utils/createMemberContextMenuItems.ts
+++ b/utils/createMemberContextMenuItems.ts
@@ -1,7 +1,7 @@
import { Permission } from "~/types/enums";
-import type { ContextMenuItem, GuildMemberResponse } from "~/types/interfaces";
+import type { ContextMenuItem, GuildMemberResponse, IConfirmationModal } from "~/types/interfaces";
-export default async (member: GuildMemberResponse, guildId: string) => {
+export default async (member: GuildMemberResponse, guildId: string, confirmationModal?: Ref) => {
const menuItems: ContextMenuItem[] = [];
const { fetchMeMember } = useApi();
@@ -19,12 +19,46 @@ export default async (member: GuildMemberResponse, guildId: string) => {
console.log("[MENUITEM] member is not me");
if (hasPermission(me.value, Permission.KickMember)) {
console.log("[MENUITEM] has kick member permission");
- menuItems.splice(Math.min(3, menuItems.length), 0, { name: "Kick", icon: "lucide:user-x", type: "danger", callback: async () => await kickMember(member.uuid) });
+ menuItems.splice(Math.min(3, menuItems.length), 0, {
+ name: "Kick",
+ icon: "lucide:user-x",
+ type: "danger",
+ callback: async () => {
+ if (confirmationModal) {
+ console.log("[CONFIRM] HEYO THERE!!");
+ confirmationModal.value = {
+ actionName: "kick",
+ callback: async () => await kickMember(member.uuid),
+ show: true
+ }
+ } else {
+ console.log("[CONFIRM] no modal");
+ await kickMember(member.uuid)
+ }
+ }
+ });
}
if (hasPermission(me.value, Permission.BanMember)) {
console.log("[MENUITEM] has ban permission");
- menuItems.splice(Math.min(4, menuItems.length), 0, { name: "Ban (WIP)", icon: "lucide:ban", type: "danger", callback: async () => await banMember(guildId, member.uuid) });
+ menuItems.splice(Math.min(4, menuItems.length), 0, {
+ name: "Ban (WIP)",
+ icon: "lucide:ban",
+ type: "danger",
+ callback: async () => {
+ if (confirmationModal) {
+ console.log("[CONFIRM] HEYO THERE!! 2");
+ confirmationModal.value = {
+ actionName: "ban",
+ callback: async () => await banMember(member.guild_uuid, member.uuid),
+ show: true
+ }
+ } else {
+ console.log("[CONFIRM] no modal 2");
+ await banMember(member.guild_uuid, member.uuid)
+ }
+ }
+ });
}
}