now able to create chats with multiple users

This commit is contained in:
Jona Kläß
2024-05-05 21:58:09 +02:00
parent 6a33629030
commit fbfbfb77be
2 changed files with 80 additions and 4 deletions

View File

@@ -19,10 +19,25 @@ export default defineComponent({
const userLoaded = ref(false); const userLoaded = ref(false);
const chatName = ref(''); const chatName = ref('');
const userSearch = ref('');
const chats = ref([] as chat[]); const chats = ref([] as chat[]);
const chatsLoaded = ref(false); const chatsLoaded = ref(false);
const matchingUsers = ref([] as ptpUser[]);
const usersForChat = ref([] as string[]);
const usersForChatOptions = ref([] as {label: string, value: string}[]);
const updateUsersForChatOptions = async () =>{
if(!usersLoaded.value){
await loadUsers();
}
usersForChatOptions.value = users.value
.filter((u, index) => u.keycloakID !== user.value.keycloakID && index < 5)
.map((u) => {
return {label: u.firstName + ' ' + u.lastName, value: u.keycloakID};
});
}
const logout = () => { const logout = () => {
userStore.logout(); userStore.logout();
@@ -34,10 +49,13 @@ export default defineComponent({
await userStore.loadAllUsers(); await userStore.loadAllUsers();
usersLoaded.value = true; usersLoaded.value = true;
users.value = userStore.users; users.value = userStore.users;
} };
const createChat = async(chatName: string)=>{ const createChat = async(chatName: string)=>{
await chatStore.createChat(chatName, userStore.users.map(u => u.keycloakID)); if(chatName == ""){
chatName = "Chat";
}
await chatStore.createChat(chatName, usersForChat.value);
} }
const loadChats = async() => { const loadChats = async() => {
@@ -48,7 +66,7 @@ export default defineComponent({
usersLoaded.value = true; usersLoaded.value = true;
console.log(users.value); console.log(users.value);
console.log(chats.value); console.log(chats.value);
} };
onMounted(async () => { onMounted(async () => {
userLoaded.value = userStore.userLoaded; userLoaded.value = userStore.userLoaded;
user.value = userStore.user; user.value = userStore.user;
@@ -70,6 +88,12 @@ export default defineComponent({
loadChats, loadChats,
chats, chats,
chatsLoaded, chatsLoaded,
userSearch,
matchingUsers,
usersForChatOptions,
usersForChat,
updateUsersForChatOptions,
}; };
}, },
}) })
@@ -96,7 +120,45 @@ export default defineComponent({
</div> </div>
</div> </div>
<br> <br>
<q-input v-model="chatName" label="Chat Name" clearable /> <q-input
v-model="chatName"
label="Chat Name"
clearable
/>
<div class="q-gutter-y-md" style="max-width: 300px">
<q-input
standout
bottom-slots
v-model="userSearch"
label="Search User"
clearable
filled
color="orange"
@update:model-value="updateUsersForChatOptions()"
>
<template v-slot:after>
<q-btn
round
dense
flat
icon="search"
@click="updateUsersForChatOptions()"
/>
</template>
</q-input>
</div>
<div class="q-pa-lg">
<q-option-group
v-model="usersForChat"
rules="[val => val.length > 0 || 'Please select at least one user']"
:options="usersForChatOptions"
type="checkbox"
color="primary"
inline
>
</q-option-group>
</div>
<q-btn @click="createChat(chatName)" label="Create Chat"/> <q-btn @click="createChat(chatName)" label="Create Chat"/>
<br> <br>
<q-btn @click="loadChats()" label="Load Chats"/> <q-btn @click="loadChats()" label="Load Chats"/>
@@ -109,6 +171,8 @@ export default defineComponent({
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<style scoped> <style scoped>

View File

@@ -21,6 +21,18 @@ export const useChatStore = defineStore('chatStore',{
return this.chats; return this.chats;
}, },
async createChat(chatName: string, members: string[]){ async createChat(chatName: string, members: string[]){
if(userStore.keycloakId) {
console.log("keycloakId is defined");
if (!members.includes(userStore.keycloakId)) {
members.push(userStore.keycloakId);
}
}else if(userStore.user?.keycloakID){
console.log("user is defined");
if (! members.includes(userStore.user.keycloakID)) {
members.push(userStore.user.keycloakID);
}
}
console.log(members);
return (await api.post("/chats/create/" + chatName, members)).data; return (await api.post("/chats/create/" + chatName, members)).data;
} }
} }