From 4dbe548efc07110be3329f9658e0edc5010d3e66 Mon Sep 17 00:00:00 2001 From: SauceyRed Date: Thu, 7 Aug 2025 06:31:15 +0200 Subject: [PATCH 1/3] feat: create enums.ts file and add Permission enum --- types/enums.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 types/enums.ts diff --git a/types/enums.ts b/types/enums.ts new file mode 100644 index 0000000..ac2daba --- /dev/null +++ b/types/enums.ts @@ -0,0 +1,11 @@ +export const enum Permission { + SendMessage = 1, + ManageChannel = 2, + ManageRole = 4, + CreateInvite = 8, + ManageInvite = 16, + ManageGuild = 32, + ManageMember = 64, + BanMember = 128, + KickMember = 256 +} \ No newline at end of file -- 2.47.3 From 695bdbc77784474ca9d51b399716f6324a423159 Mon Sep 17 00:00:00 2001 From: SauceyRed Date: Thu, 7 Aug 2025 06:31:44 +0200 Subject: [PATCH 2/3] feat: update GuildResponse and GuildMemberResponse interfaces to match backend --- types/interfaces.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/types/interfaces.ts b/types/interfaces.ts index 2a05c38..632aadb 100644 --- a/types/interfaces.ts +++ b/types/interfaces.ts @@ -19,16 +19,17 @@ export interface GuildResponse { description: string | null, icon: string | null, owner_uuid: string, - roles: [], + roles: RoleResponse[], member_count: number } export interface GuildMemberResponse { uuid: string, nickname: string, - user_uuid: string, guild_uuid: string, - user: UserResponse + is_owner: boolean, + user: UserResponse, + roles: RoleResponse[] } export interface ChannelResponse { -- 2.47.3 From aecbcaefba4dfb4b5532ddb714c11f7e0eeece65 Mon Sep 17 00:00:00 2001 From: SauceyRed Date: Thu, 7 Aug 2025 06:32:04 +0200 Subject: [PATCH 3/3] feat: add hasPermission util to check if a member has a specific permission --- utils/hasPermission.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 utils/hasPermission.ts diff --git a/utils/hasPermission.ts b/utils/hasPermission.ts new file mode 100644 index 0000000..750716e --- /dev/null +++ b/utils/hasPermission.ts @@ -0,0 +1,11 @@ +import type { Permission } from "~/types/enums"; +import type { GuildMemberResponse } from "~/types/interfaces"; + +export default (member: GuildMemberResponse, permission: Permission) => { + for (const role of member.roles) { + if (role.permissions & permission) { + return true; + } + } + return false; +} -- 2.47.3