diff --git a/.woodpecker/build-and-publish.yml b/.woodpecker/build-and-publish.yml index 6001a00..e62bd74 100644 --- a/.woodpecker/build-and-publish.yml +++ b/.woodpecker/build-and-publish.yml @@ -8,7 +8,6 @@ steps: - pnpm build when: - event: push - - event: pull_request - name: container-build-and-publish image: docker diff --git a/app.vue b/app.vue index 8ca7948..913b078 100644 --- a/app.vue +++ b/app.vue @@ -1,15 +1,21 @@ + + \ No newline at end of file diff --git a/pages/servers/[serverId]/channels/[channelId].vue b/pages/servers/[serverId]/channels/[channelId].vue index bbe359e..137e5e3 100644 --- a/pages/servers/[serverId]/channels/[channelId].vue +++ b/pages/servers/[serverId]/channels/[channelId].vue @@ -77,7 +77,7 @@ onActivated(async () => { }); async function setArrayVariables() { - members.value = sortMembers(await fetchMembers(route.params.serverId as string)) + members.value = await fetchMembers(route.params.serverId as string); const guildUrl = `guilds/${route.params.serverId}`; channels.value = await fetchWithApi(`${guildUrl}/channels`); console.log("channels:", channels.value); diff --git a/public/themes/ash.css b/public/themes/ash.css index 94f5e85..d47b51e 100644 --- a/public/themes/ash.css +++ b/public/themes/ash.css @@ -2,6 +2,7 @@ --text-color: #f0e5e0; --secondary-text-color: #e8e0db; --reply-text-color: #969696; + --danger-text-color: #ff0000; --chat-background-color: #2f2e2d; --chat-highlighted-background-color: #3f3b38; diff --git a/public/themes/dark.css b/public/themes/dark.css index a228889..efc2bfa 100644 --- a/public/themes/dark.css +++ b/public/themes/dark.css @@ -2,6 +2,7 @@ --text-color: #f7eee8; --secondary-text-color: #f0e8e4; --reply-text-color: #969696; + --danger-text-color: #ff0000; --chat-background-color: #1f1e1d; --chat-highlighted-background-color: #2f2b28; diff --git a/public/themes/light.css b/public/themes/light.css index 556b64d..68d6578 100644 --- a/public/themes/light.css +++ b/public/themes/light.css @@ -2,6 +2,7 @@ --text-color: #170f08; --secondary-text-color: #2f2b28; --reply-text-color: #969696; + --danger-text-color: #ff0000; --chat-background-color: #f0ebe8; --chat-highlighted-background-color: #e8e4e0; diff --git a/public/themes/rainbow-capitalism.css b/public/themes/rainbow-capitalism.css index ca73e1f..a5ec390 100644 --- a/public/themes/rainbow-capitalism.css +++ b/public/themes/rainbow-capitalism.css @@ -2,6 +2,7 @@ --text-color: #161518; --secondary-text-color: #2b2930; --reply-text-color: #969696; + --danger-text-color: #ff0000; --chat-background-color: #80808000; --chat-highlighted-background-color: #ffffff20; diff --git a/types/interfaces.ts b/types/interfaces.ts index 2a05c38..2e873e0 100644 --- a/types/interfaces.ts +++ b/types/interfaces.ts @@ -101,5 +101,14 @@ export interface ModalProps { export interface ContextMenuItem { name: string, + icon?: string, + type: "normal" | "danger" callback: (...args: any[]) => any; } + +export interface ContextMenuInterface { + show: boolean, + pointerX: number, + pointerY: number, + items: ContextMenuItem[] +} diff --git a/utils/createContextMenu.ts b/utils/createContextMenu.ts deleted file mode 100644 index cf93a37..0000000 --- a/utils/createContextMenu.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { render } from "vue"; -import ContextMenu from "~/components/UserInterface/ContextMenu.vue"; -import type { ContextMenuItem } from "~/types/interfaces"; - -export default (e: PointerEvent | MouseEvent, menuItems: ContextMenuItem[]) => { - console.log("Rendering new context menu"); - const menuContainer = document.createElement("div"); - console.log("hello"); - menuContainer.id = "context-menu"; - document.body.appendChild(menuContainer); - console.log("pointer x:", e.clientX); - console.log("pointer y:", e.clientY); - console.log("menu items:", menuItems); - const contextMenu = h(ContextMenu, { - menuItems, - pointerX: e.clientX, - pointerY: e.clientY - }); - render(contextMenu, menuContainer); - console.log("Rendered"); -} diff --git a/utils/removeContextMenu.ts b/utils/removeContextMenu.ts index 3b42c8b..7e10737 100644 --- a/utils/removeContextMenu.ts +++ b/utils/removeContextMenu.ts @@ -1,6 +1,12 @@ -export default () => { - const contextMenu = document.getElementById("context-menu"); - if (contextMenu) { - contextMenu.remove(); +import type { ContextMenuInterface } from "~/types/interfaces"; + +export default (contextMenu: Ref) => { + console.log("resetting and hiding context menu"); + contextMenu.value = { + show: false, + pointerX: 0, + pointerY: 0, + items: [] } + console.log("hidden context menu"); } diff --git a/utils/replyToMessage.ts b/utils/replyToMessage.ts index 8ee0c28..b2b31a8 100644 --- a/utils/replyToMessage.ts +++ b/utils/replyToMessage.ts @@ -10,5 +10,9 @@ export default (element: HTMLDivElement, props: MessageProps) => { const messageReply = h(MessageReply, { author: getDisplayName(props.author), text: props.text || "", id: props.message.uuid, replyId: props.replyMessage?.uuid || element.dataset.messageId!, maxWidth: "full" }); messageBox.prepend(div); render(messageReply, div); + const message = document.querySelector(`.message[data-message-id='${props.message.uuid}']`); + if (message) { + message.classList.add("replying-to"); + } } } diff --git a/utils/showContextMenu.ts b/utils/showContextMenu.ts new file mode 100644 index 0000000..fdf5243 --- /dev/null +++ b/utils/showContextMenu.ts @@ -0,0 +1,12 @@ +import { render } from "vue"; +import ContextMenu from "~/components/UserInterface/ContextMenu.vue"; +import type { ContextMenuInterface, ContextMenuItem } from "~/types/interfaces"; + +export default (e: MouseEvent | PointerEvent, contextMenu: ContextMenuInterface, menuItems: ContextMenuItem[]) => { + console.log("Showing context menu"); + contextMenu.show = true; + contextMenu.pointerX = e.clientX; + contextMenu.pointerY = e.clientY; + contextMenu.items = menuItems; + console.log("Showed"); +}