Compare commits

...

2 Commits

Author SHA1 Message Date
49bd6ea363 🐛 Websocket auto reconnecting 2024-04-02 23:31:24 +08:00
9ad11f4297 🐛 Fix some style issue 2024-04-02 23:29:28 +08:00
7 changed files with 47 additions and 16 deletions

View File

@@ -23,13 +23,13 @@
<video v-else-if="item.type === 2" controls class="w-full content-visibility-auto"> <video v-else-if="item.type === 2" controls class="w-full content-visibility-auto">
<source :src="getUrl(item)" /> <source :src="getUrl(item)" />
</video> </video>
<div v-else-if="item.type === 3" class="w-[480px] py-12"> <div v-else-if="item.type === 3" class="py-5 px-2">
<div class="text-center"> <div class="text-center">
<p class="mb-1">{{ getFileName(item) }}</p> <p class="mb-1">{{ getFileName(item) }}</p>
<audio controls :src="getUrl(item)" class="mx-auto"></audio> <audio controls :src="getUrl(item)" class="mx-auto max-w-[85%]"></audio>
</div> </div>
</div> </div>
<div v-else class="w-[480px] py-12"> <div v-else class="py-5 px-2">
<div class="text-center"> <div class="text-center">
<p>{{ getFileName(item) }}</p> <p>{{ getFileName(item) }}</p>
<a class="underline" target="_blank" :href="getUrl(item)">Download</a> <a class="underline" target="_blank" :href="getUrl(item)">Download</a>

View File

@@ -22,13 +22,13 @@
<video v-else-if="item.type === 2" controls class="w-full content-visibility-auto"> <video v-else-if="item.type === 2" controls class="w-full content-visibility-auto">
<source :src="getUrl(item)" /> <source :src="getUrl(item)" />
</video> </video>
<div v-else-if="item.type === 3" class="w-[480px] py-12"> <div v-else-if="item.type === 3" class="py-5 px-2">
<div class="text-center"> <div class="text-center">
<p class="mb-1">{{ getFileName(item) }}</p> <p class="mb-1">{{ getFileName(item) }}</p>
<audio controls :src="getUrl(item)" class="mx-auto"></audio> <audio controls :src="getUrl(item)" class="mx-auto max-w-[85%]"></audio>
</div> </div>
</div> </div>
<div v-else class="w-[480px] py-12"> <div v-else class="py-5 px-2">
<div class="text-center"> <div class="text-center">
<p>{{ getFileName(item) }}</p> <p>{{ getFileName(item) }}</p>
<a class="underline" target="_blank" :href="getUrl(item)">Download</a> <a class="underline" target="_blank" :href="getUrl(item)">Download</a>

View File

@@ -6,6 +6,7 @@ import { useRoute } from "vue-router"
export const useChannels = defineStore("channels", () => { export const useChannels = defineStore("channels", () => {
let socket: WebSocket let socket: WebSocket
let reconnectCount = 0
const done = ref(false) const done = ref(false)
@@ -69,9 +70,16 @@ export const useChannels = defineStore("channels", () => {
socket.addEventListener("open", (event) => { socket.addEventListener("open", (event) => {
console.log("[MESSAGING] The unified websocket has been established... ", event.type) console.log("[MESSAGING] The unified websocket has been established... ", event.type)
reconnectCount = 0
}) })
socket.addEventListener("close", (event) => { socket.addEventListener("close", (event) => {
console.warn("[MESSAGING] The unified websocket is disconnected... ", event.reason, event.code) console.warn("[MESSAGING] The unified websocket is disconnected... ", event.reason, event.code)
if(reconnectCount <= 3) {
connect().then(() => {
console.warn("[MESSAGING] Now reconnecting!")
reconnectCount++
})
}
}) })
socket.addEventListener("message", (event) => { socket.addEventListener("message", (event) => {
const data = JSON.parse(event.data) const data = JSON.parse(event.data)

View File

@@ -7,6 +7,7 @@ import { Capacitor } from "@capacitor/core"
export const useNotifications = defineStore("notifications", () => { export const useNotifications = defineStore("notifications", () => {
let socket: WebSocket let socket: WebSocket
let reconnectCount = 0
const loading = ref(false) const loading = ref(false)
@@ -48,9 +49,16 @@ export const useNotifications = defineStore("notifications", () => {
socket.addEventListener("open", (event) => { socket.addEventListener("open", (event) => {
console.log("[NOTIFICATIONS] The listen websocket has been established... ", event.type) console.log("[NOTIFICATIONS] The listen websocket has been established... ", event.type)
reconnectCount = 0
}) })
socket.addEventListener("close", (event) => { socket.addEventListener("close", (event) => {
console.warn("[NOTIFICATIONS] The listen websocket is disconnected... ", event.reason, event.code) console.warn("[NOTIFICATIONS] The listen websocket is disconnected... ", event.reason, event.code)
if(reconnectCount <= 3) {
connect().then(() => {
console.warn("[NOTIFICATIONS] Now reconnecting!")
reconnectCount++
})
}
}) })
socket.addEventListener("message", (event) => { socket.addEventListener("message", (event) => {
const data = JSON.parse(event.data) const data = JSON.parse(event.data)

View File

@@ -1,10 +1,10 @@
<template> <template>
<v-container class="wrapper overflow-auto h-auto no-scrollbar"> <v-container class="wrapper h-auto no-scrollbar">
<div class="timeline mt-[-16px]"> <div class="timeline min-w-0 mt-[-16px]">
<post-list v-model:posts="posts" :loader="readMore" /> <post-list v-model:posts="posts" :loader="readMore" />
</div> </div>
<div class="aside w-full max-md:order-first"> <div class="aside min-w-0 w-full max-md:order-first">
<v-card title="Categories"> <v-card title="Categories">
<v-list density="compact"> <v-list density="compact">
<v-list-item title="All" prepend-icon="mdi-apps" active></v-list-item> <v-list-item title="All" prepend-icon="mdi-apps" active></v-list-item>

View File

@@ -1,10 +1,10 @@
<template> <template>
<v-container class="flex max-md:flex-col gap-3 overflow-auto h-auto no-scrollbar"> <v-container class="wrapper h-auto no-scrollbar">
<div class="timeline flex-grow-1 mt-[-16px]"> <div class="timeline mt-[-16px]">
<post-list v-model:posts="posts" :loader="readMore" /> <post-list v-model:posts="posts" :loader="readMore" />
</div> </div>
<div class="aside md:sticky top-0 w-full h-fit md:min-w-[280px] md:max-w-[320px] max-md:order-first"> <div class="aside max-md:order-first">
<v-card :loading="loading"> <v-card :loading="loading">
<template #title> <template #title>
<div class="flex justify-between"> <div class="flex justify-between">
@@ -123,3 +123,18 @@ function parseContent(src: string): string {
return dompurify().sanitize(parse(src) as string) return dompurify().sanitize(parse(src) as string)
} }
</script> </script>
<style scoped>
.wrapper {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 0.75rem;
}
@media (max-width: 768px) {
.wrapper {
grid-template-columns: 1fr;
}
}
</style>

View File

@@ -1,6 +1,6 @@
<template> <template>
<v-container class="wrapper overflow-auto h-auto no-scrollbar"> <v-container class="wrapper h-auto no-scrollbar">
<div class="name-card col-span-2"> <div class="min-w-0 name-card col-span-2">
<v-card class="w-full"> <v-card class="w-full">
<v-img v-if="accountBanner" cover height="280px" :src="accountBanner" /> <v-img v-if="accountBanner" cover height="280px" :src="accountBanner" />
@@ -24,7 +24,7 @@
</v-card> </v-card>
</div> </div>
<v-card class="browser h-fit"> <v-card class="min-w-0 browser h-fit">
<v-tabs v-model="tab" align-tabs="center" bg-color="grey-lighten-4"> <v-tabs v-model="tab" align-tabs="center" bg-color="grey-lighten-4">
<v-tab value="page">Personal Page</v-tab> <v-tab value="page">Personal Page</v-tab>
<v-tab value="timeline">Timeline</v-tab> <v-tab value="timeline">Timeline</v-tab>
@@ -50,7 +50,7 @@
</v-card-text> </v-card-text>
</v-card> </v-card>
<div class="aside h-fit max-md:order-first"> <div class="min-w-0 aside h-fit max-md:order-first">
<v-card prepend-icon="mdi-account-details" title="Bio"> <v-card prepend-icon="mdi-account-details" title="Bio">
<v-card-text class="flex flex-col gap-2.5"> <v-card-text class="flex flex-col gap-2.5">
<div> <div>