Compare commits

...

5 commits

5 changed files with 58 additions and 46 deletions

View file

@ -18,6 +18,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import type { MessageResponse } from '~/types/interfaces'; import type { MessageResponse } from '~/types/interfaces';
import fetchUser from '~/utils/fetchUser'; import fetchUser from '~/utils/fetchUser';
import scrollToBottom from '~/utils/scrollToBottom';
const props = defineProps<{ channelUrl: string, amount?: number, offset?: number, reverse?: boolean }>(); const props = defineProps<{ channelUrl: string, amount?: number, offset?: number, reverse?: boolean }>();
@ -71,11 +72,16 @@ ws.addEventListener("open", (event) => {
console.log("WebSocket connected!"); console.log("WebSocket connected!");
}); });
ws.addEventListener("message", (event) => { ws.addEventListener("message", async (event) => {
console.log("event data:", event.data); console.log("event data:", event.data);
messages.value?.push( messages.value?.push(
JSON.parse(event.data) JSON.parse(event.data)
); );
await nextTick();
if (messagesElement.value) {
console.log("scrolling to bottom");
scrollToBottom(messagesElement);
}
}); });
} else { } else {
await refresh(); await refresh();
@ -100,7 +106,9 @@ function sendMessage(e: Event) {
} }
onMounted(async () => { onMounted(async () => {
messagesElement.value?.scrollTo({ top: messagesElement.value.scrollHeight }); if (messagesElement.value) {
scrollToBottom(messagesElement);
}
}); });
</script> </script>

View file

@ -64,7 +64,7 @@ export const useAuth = () => {
method: "POST" method: "POST"
}) as any; }) as any;
console.log("finished refreshing:", res); console.log("finished refreshing:", res);
if (res.access_token) { if (res && res.access_token) {
accessToken.value = res.access_token; accessToken.value = res.access_token;
console.log("set new access token"); console.log("set new access token");
} else { } else {

View file

@ -1,5 +1,4 @@
<template> <template>
<NuxtLayout>
<div id="root-container" style="margin-top: 5dvh;"> <div id="root-container" style="margin-top: 5dvh;">
<div id="main-container"> <div id="main-container">
<div v-if="!instanceUrl"> <div v-if="!instanceUrl">
@ -44,7 +43,6 @@
</div> </div>
</div> </div>
</div> </div>
</NuxtLayout>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>

View file

@ -1,5 +1,5 @@
export default defineNuxtRouteMiddleware(async (to, from) => { export default defineNuxtRouteMiddleware(async (to, from) => {
console.log("to.path:", to.path); console.log("to.fullPath:", to.fullPath);
const loading = useState("loading"); const loading = useState("loading");
const accessToken = useCookie("access_token").value; const accessToken = useCookie("access_token").value;
if (["/login", "/register"].includes(to.path)) { if (["/login", "/register"].includes(to.path)) {
@ -19,6 +19,6 @@ export default defineNuxtRouteMiddleware(async (to, from) => {
query.set("redirect_to", to.path); query.set("redirect_to", to.path);
loading.value = false; loading.value = false;
console.log("set loading to false"); console.log("set loading to false");
return await navigateTo("/login" + (query ?? "")); return await navigateTo("/login?" + (query ?? ""));
} }
}) })

6
utils/scrollToBottom.ts Normal file
View file

@ -0,0 +1,6 @@
export default (element: Ref<HTMLElement | undefined, HTMLElement | undefined>) => {
if (element.value) {
element.value.scrollTo({ top: element.value.scrollHeight });
return;
}
}