Update WebSocket for message sending to match backend/pulls/47 #73

Open
sauceyred wants to merge 3 commits from websocket-rewrite into main
3 changed files with 37 additions and 11 deletions

View file

@ -40,9 +40,10 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import type { MessageResponse, ScrollPosition, UserResponse } from '~/types/interfaces'; import type { MessageResponse, ScrollPosition, UserResponse, WSMessage } from '~/types/interfaces';
import scrollToBottom from '~/utils/scrollToBottom'; import scrollToBottom from '~/utils/scrollToBottom';
import { generateIrcColor } from '#imports'; import { generateIrcColor } from '#imports';
import { WSEvent } from '~/types/enums';
const { getDisplayName } = useProfile() const { getDisplayName } = useProfile()
const { fetchMe } = useApi() const { fetchMe } = useApi()
@ -195,17 +196,20 @@ if (accessToken && apiBase) {
ws.addEventListener("message", async (event) => { ws.addEventListener("message", async (event) => {
console.log("event data:", event.data); console.log("event data:", event.data);
console.log("message uuid:", event.data.uuid); console.log("message uuid:", event.data.uuid);
const parsedData = JSON.parse(event.data); const message: WSMessage = JSON.parse(event.data);
console.log("[MSG] parsed message:", parsedData); console.log("[MSG] parsed message:", message);
console.log("parsed message type:", messagesType.value[parsedData.uuid]); if (message.event == WSEvent.MessageSend) {
console.log("parsed message timestamp:", messageTimestamps.value[parsedData.uuid]); const messageObject = message.entity as MessageResponse;
pushMessage(parsedData); console.log("parsed message type:", messagesType.value[messageObject.uuid]);
console.log("parsed message timestamp:", messageTimestamps.value[messageObject.uuid]);
pushMessage(messageObject);
await nextTick(); await nextTick();
if (messagesElement.value) { if (messagesElement.value) {
console.log("scrolling to bottom"); console.log("scrolling to bottom");
scrollToBottom(messagesElement.value); scrollToBottom(messagesElement.value);
} }
}
}); });
} else { } else {

View file

@ -9,3 +9,10 @@ export const enum Permission {
BanMember = 128, BanMember = 128,
KickMember = 256 KickMember = 256
} }
export const enum WSEvent {
MessageSend,
MessageDelete,
MessageEdit,
Error
}

View file

@ -1,3 +1,5 @@
import type { WSEvent } from "./enums"
export interface ChannelPermissionResponse { export interface ChannelPermissionResponse {
channel_uuid: string, channel_uuid: string,
role_uuid: string, role_uuid: string,
@ -56,6 +58,19 @@ export interface MessageResponse {
member: GuildMemberResponse, member: GuildMemberResponse,
} }
export interface IMessageDelete {
uuid: string
}
export interface WSError {
message: string
}
export interface WSMessage {
event: WSEvent,
entity: MessageResponse | IMessageDelete | WSError
}
export interface InviteResponse { export interface InviteResponse {
id: string, id: string,
user_uuid: string, user_uuid: string,