Compare commits

...

10 commits

Author SHA1 Message Date
014dff9c2d
Merge branch 'main' into improve-chat-look
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
ci/woodpecker/pr/build-and-publish Pipeline was successful
ci/woodpecker/pull_request_closed/build-and-publish Pipeline was successful
2025-08-14 17:27:05 +02:00
395dd6cf9b
fix: layout preview not working with a non-default baseurl
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
2025-08-09 12:42:33 +02:00
307969ffe5 Merge pull request 'Implement method for checking member permissions' (#68) from permissions-management into main
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
Reviewed-on: #68
Reviewed-by: Twig <git@beaver.mom>
2025-08-07 20:14:07 +00:00
62156a1049
Merge branch 'main' into permissions-management
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
ci/woodpecker/pr/build-and-publish Pipeline was successful
ci/woodpecker/pull_request_closed/build-and-publish Pipeline was successful
2025-08-07 22:12:47 +02:00
76f77f7bfe
fix: invite link generation not accounting for baseURL
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
2025-08-07 09:07:46 +02:00
9fe067ec5a
Merge branch 'main' into permissions-management
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
ci/woodpecker/pr/build-and-publish Pipeline was successful
2025-08-07 06:39:37 +02:00
aecbcaefba
feat: add hasPermission util to check if a member has a specific permission
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
2025-08-07 06:32:04 +02:00
695bdbc777
feat: update GuildResponse and GuildMemberResponse interfaces to match backend 2025-08-07 06:31:44 +02:00
4dbe548efc
feat: create enums.ts file and add Permission enum 2025-08-07 06:31:15 +02:00
42823c0e94
fix: missing type property for Reset context menu item in ResizableSidebar
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
2025-08-07 06:21:52 +02:00
6 changed files with 34 additions and 8 deletions

View file

@ -40,7 +40,8 @@ function copyInvite(type: "link" | "code") {
if (!invite.value) return;
if (type == "link") {
const inviteUrl = URL.parse(`invite/${invite.value}`, `${window.location.protocol}//${window.location.host}`);
const runtimeConfig = useRuntimeConfig();
const inviteUrl = URL.parse(`invite/${invite.value}`, `${window.location.protocol}//${window.location.host}${runtimeConfig.app.baseURL}`);
if (inviteUrl) {
navigator.clipboard.writeText(inviteUrl.href);
}

View file

@ -34,7 +34,8 @@
<span class="theme-title" :style="{color:`${layout.complementaryColor}`}">
{{ layout.displayName }}
</span>
<NuxtImg class="layout-preview" :src="layout.previewImageUrl"></NuxtImg>
<!-- this breaks if it's a nuxtimg, i don't know why -->
<img class="layout-preview" :src="layout.previewImageUrl"></img>
</div>
</div>
</div>
@ -60,8 +61,8 @@ import { settingSave, settingsLoad } from '#imports';
const runtimeConfig = useRuntimeConfig()
const baseURL = runtimeConfig.app.baseURL;
const styleFolder = `${baseURL}themes/style`
const layoutFolder = `${baseURL}themes/layout`
const styleFolder = `${baseURL}/themes/style`
const layoutFolder = `${baseURL}/themes/layout`
const timeFormatTextStrings = ["Auto", "12-Hour", "24-Hour"]
@ -115,6 +116,7 @@ async function parseTheme(url: string): Promise<Theme | void> {
break
case "previewImageUrl":
previewImageUrl = `${layoutFolder}/${lineArray[1].trim()}`
console.log(previewImageUrl)
break
}
}

View file

@ -34,7 +34,7 @@ const storedWidth = ref<string>();
const contextMenu = useState<ContextMenuInterface>("contextMenu");
const menuItems: ContextMenuItem[] = [
{ name: "Reset", callback: () => {
{ name: "Reset", type: "normal", callback: () => {
const defaultWidth = props.width ?? props.minWidth;
resizableSidebar.value!.style.width = defaultWidth;
if (props.localStorageName) {

11
types/enums.ts Normal file
View file

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

View file

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

11
utils/hasPermission.ts Normal file
View file

@ -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;
}