-
chats
-
-
{{ chat.id }}
-
{{ chat.users }}
+
+
+
+ status: {{ isConnected ? 'connected' : 'disconnected' }}
-
-
-
-
-
-
messages:
-
- {{ message }}
+
selected chat {{ selectedChat }}
+
Error: {{ error }}
+
+
+
+
+
+
+
{{ chat.id }}
+
{{ chat.users }}
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/composables/useSharedWebSocket.ts b/src/composables/useSharedWebSocket.ts
index cb016e5..c66b8b2 100644
--- a/src/composables/useSharedWebSocket.ts
+++ b/src/composables/useSharedWebSocket.ts
@@ -21,13 +21,17 @@ export interface User {
export interface WsData {
type: WsDataType
// data: Chat | Message | User | User[] | Message[] | Chat[]
- data: {text: string}
+ data: unknown
}
export enum WsDataType {
- CHAT = 'CHAT',
+ GET_CHATS = 'GET_CHATS',
+ GET_USERS = 'GET_USERS',
+ GET_MESSAGES = 'GET_MESSAGES',
+ CREATE_MESSAGE = 'CREATE_MESSAGE',
+ CHATS = 'CHATS',
USER = 'USER',
- MESSAGE = 'MESSAGE',
+ MESSAGES = 'MESSAGES',
STATUS = 'STATUS',
ERROR = 'ERROR',
}
@@ -69,16 +73,19 @@ export function useSharedWebSocket(options?: { url?: string; autoConnect?: true
case WsDataType.USER:
console.log('USER')
break
- case WsDataType.CHAT:
+ case WsDataType.CHATS:
console.log('chat')
chats.value = data
break
- case WsDataType.MESSAGE:
- messages.value.push(data)
+ case WsDataType.MESSAGES:
+ messages.value = data
// if (options.onMessage) {
// options.onMessage(data)
// }
break
+ case WsDataType.CREATE_MESSAGE:
+ messages.value.push(data)
+ break
case WsDataType.STATUS:
isConnected.value = connected
break
diff --git a/src/main.ts b/src/main.ts
index 5f77a89..a6d1513 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,9 +1,28 @@
+import '@fontsource/roboto/100.css'
+import '@fontsource/roboto/300.css'
+import '@fontsource/roboto/400.css'
+import '@mdi/font/css/materialdesignicons.css'
+
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
+import 'vuetify/styles'
+import { createVuetify } from 'vuetify'
+import * as components from 'vuetify/components'
+import * as directives from 'vuetify/directives'
+
const app = createApp(App)
app.use(createPinia())
+const vuetify = createVuetify({
+ components,
+ directives,
+ icons: {
+ defaultSet: 'mdi',
+ },
+})
+app.use(vuetify)
+
app.mount('#app')