From a114b8a12c3778798b91565fdb88fff815a06c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 19 Jul 2023 14:06:38 +0200 Subject: [PATCH 01/21] Give the chat plus button a function and show hide the user search --- webapp/components/Chat/Chat.vue | 11 ++++++++--- webapp/components/Group/AddGroupMember.vue | 1 + webapp/pages/chat.vue | 17 +++++++++++++++-- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/webapp/components/Chat/Chat.vue b/webapp/components/Chat/Chat.vue index d7864ebef..c02165248 100644 --- a/webapp/components/Chat/Chat.vue +++ b/webapp/components/Chat/Chat.vue @@ -19,12 +19,13 @@ show-audio="false" :styles="JSON.stringify(computedChatStyle)" :show-footer="true" - @send-message="sendMessage($event.detail[0])" - @fetch-messages="fetchMessages($event.detail[0])" - @fetch-more-rooms="fetchRooms" :responsive-breakpoint="responsiveBreakpoint" :single-room="singleRoom" show-reaction-emojis="false" + @send-message="sendMessage($event.detail[0])" + @fetch-messages="fetchMessages($event.detail[0])" + @fetch-more-rooms="fetchRooms" + @add-room="addRoom" @show-demo-options="showDemoOptions = $event" >
@@ -361,6 +362,10 @@ export default { if (!fullname) return return fullname.match(/\b\w/g).join('').substring(0, 3).toUpperCase() }, + + addRoom() { + this.$emit('open-user-search') + } }, } diff --git a/webapp/components/Group/AddGroupMember.vue b/webapp/components/Group/AddGroupMember.vue index ff049ca4d..8e66c7be2 100644 --- a/webapp/components/Group/AddGroupMember.vue +++ b/webapp/components/Group/AddGroupMember.vue @@ -49,6 +49,7 @@
+ diff --git a/webapp/components/Group/AddGroupMember.vue b/webapp/components/Group/AddGroupMember.vue index 8e66c7be2..2cb71f011 100644 --- a/webapp/components/Group/AddGroupMember.vue +++ b/webapp/components/Group/AddGroupMember.vue @@ -3,33 +3,7 @@

{{ $t('group.addUser') }}

- - - + import { changeGroupMemberRoleMutation } from '~/graphql/groups.js' -import { searchUsers } from '~/graphql/Search.js' +import SelectUserSearch from '~/components/generic/SelectUserSearch/SelectUserSearch' import UserTeaser from '~/components/UserTeaser/UserTeaser.vue' -import { isEmpty } from 'lodash' export default { name: 'AddGroupMember', components: { UserTeaser, + SelectUserSearch, }, props: { groupId: { @@ -73,62 +47,34 @@ export default { }, data() { return { - users: [], id: 'search-user-to-add-to-group', - query: '', user: {}, isOpen: false, } }, - computed: { - startSearch() { - return this.query && this.query.length > 3 - }, - }, methods: { cancelModal() { - this.clear() + this.$refs.selectUserSearch.clear() this.isOpen = false }, closeModal() { - this.clear() + this.$refs.selectUserSearch.clear() this.isOpen = false }, confirmModal() { this.addMemberToGroup() this.isOpen = false - this.clear() + this.$refs.selectUserSearch.clear() }, - onFocus() {}, - onBlur() { - this.query = '' - }, - handleInput(event) { - this.query = event.target ? event.target.value.trim() : '' - }, - onDelete(event) { - const value = event.target ? event.target.value.trim() : '' - if (isEmpty(value)) { - this.clear() - } else { - this.handleInput(event) - } - }, - clear() { - this.query = '' - this.user = {} - this.users = [] - }, - onSelect(item) { - this.user = item + selectUser(user) { + this.user = user if (this.groupMembers.find((member) => member.id === this.user.id)) { this.$toast.error(this.$t('group.errors.userAlreadyMember', { name: this.user.name })) - this.clear() + this.$refs.selectUserSearch.clear() return } this.isOpen = true }, - onEnter() {}, async addMemberToGroup() { const newRole = 'usual' const username = this.user.name @@ -149,29 +95,9 @@ export default { } }, }, - apollo: { - searchUsers: { - query() { - return searchUsers - }, - variables() { - return { - query: this.query, - firstUsers: 5, - usersOffset: 0, - } - }, - skip() { - return !this.startSearch - }, - update({ searchUsers }) { - this.users = searchUsers.users - }, - fetchPolicy: 'cache-and-network', - }, - }, } + diff --git a/webapp/components/Chat/Chat.vue b/webapp/components/Chat/Chat.vue index fccaee5b8..68abfe657 100644 --- a/webapp/components/Chat/Chat.vue +++ b/webapp/components/Chat/Chat.vue @@ -364,7 +364,7 @@ export default { }, addRoom() { - this.$emit('open-user-search') + this.$emit('open-close-user-search') }, }, } diff --git a/webapp/pages/chat.vue b/webapp/pages/chat.vue index 8d9d55e46..bdc2a1ee2 100644 --- a/webapp/pages/chat.vue +++ b/webapp/pages/chat.vue @@ -1,33 +1,34 @@ From 3d9a9cd5a096d4b1fbbf82b7597db53a03542b57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 19 Jul 2023 17:47:56 +0200 Subject: [PATCH 04/21] Create the chat room on user search in chats function --- .../Chat/AddChatRoomByUserSearch.vue | 58 +------------------ webapp/components/Chat/Chat.vue | 36 +++++++----- webapp/pages/chat.vue | 8 ++- 3 files changed, 28 insertions(+), 74 deletions(-) diff --git a/webapp/components/Chat/AddChatRoomByUserSearch.vue b/webapp/components/Chat/AddChatRoomByUserSearch.vue index b5cf0fd4c..a9a2a5bf6 100644 --- a/webapp/components/Chat/AddChatRoomByUserSearch.vue +++ b/webapp/components/Chat/AddChatRoomByUserSearch.vue @@ -5,28 +5,11 @@ - diff --git a/webapp/pages/chat.vue b/webapp/pages/chat.vue index bdc2a1ee2..a16fca5c5 100644 --- a/webapp/pages/chat.vue +++ b/webapp/pages/chat.vue @@ -3,13 +3,14 @@ {{ $t('chat.page.headline') }} @@ -43,8 +44,9 @@ export default { ...mapMutations({ showChat: 'chat/SET_OPEN_CHAT', }), - loadChatRooms(newChatRoomID) { - console.log('loadChatRooms !!! newChatRoomID: ', newChatRoomID) + addChatRoom(userID) { + console.log('addChatRoom !!! newChatRoomID: ', userID) + this.$refs.chat.newRoom(userID) }, }, } From 419261229346941f99f92dbc487b36795721c290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 19 Jul 2023 17:51:05 +0200 Subject: [PATCH 05/21] Fix linting --- webapp/components/Chat/AddChatRoomByUserSearch.vue | 2 -- webapp/components/Group/AddGroupMember.vue | 2 -- webapp/pages/chat.vue | 3 +-- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/webapp/components/Chat/AddChatRoomByUserSearch.vue b/webapp/components/Chat/AddChatRoomByUserSearch.vue index a9a2a5bf6..0e7b243d8 100644 --- a/webapp/components/Chat/AddChatRoomByUserSearch.vue +++ b/webapp/components/Chat/AddChatRoomByUserSearch.vue @@ -11,12 +11,10 @@ @@ -53,4 +59,10 @@ export default { background-color: white; padding: $space-base; } +.ds-flex.headline { + justify-content: space-between; +} +.ds-flex.headline .close-button { + margin-top: -6px; +} From a82d245f636230be4030f1b75a5703ece532fa3f Mon Sep 17 00:00:00 2001 From: elweyn Date: Thu, 20 Jul 2023 11:03:20 +0200 Subject: [PATCH 10/21] Change toast error to error.message. --- webapp/components/Chat/Chat.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/components/Chat/Chat.vue b/webapp/components/Chat/Chat.vue index d1a60a87d..39dd465e2 100644 --- a/webapp/components/Chat/Chat.vue +++ b/webapp/components/Chat/Chat.vue @@ -419,7 +419,7 @@ export default { this.fetchRooms({ room: CreateRoom, options: { refetch: true } }) }) .catch((error) => { - this.$toast.error(error) + this.$toast.error(error.message) }) .finally(() => { // this.loading = false From 13da3ba3f46482c1488fab85300d1075c183255e Mon Sep 17 00:00:00 2001 From: elweyn Date: Thu, 20 Jul 2023 11:35:06 +0200 Subject: [PATCH 11/21] Add returned properties to the CreateRoom mutation, add emit to change the roomID. --- webapp/components/Chat/Chat.vue | 2 ++ webapp/graphql/Rooms.js | 12 ++++++++++++ webapp/pages/chat.vue | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/webapp/components/Chat/Chat.vue b/webapp/components/Chat/Chat.vue index 39dd465e2..0cc9bc28b 100644 --- a/webapp/components/Chat/Chat.vue +++ b/webapp/components/Chat/Chat.vue @@ -417,6 +417,8 @@ export default { }) .then(({ data: { CreateRoom } }) => { this.fetchRooms({ room: CreateRoom, options: { refetch: true } }) + this.roomId = CreateRoom.id + this.$emit('show-chat', CreateRoom.id) }) .catch((error) => { this.$toast.error(error.message) diff --git a/webapp/graphql/Rooms.js b/webapp/graphql/Rooms.js index 757a6cfa4..3433a84a7 100644 --- a/webapp/graphql/Rooms.js +++ b/webapp/graphql/Rooms.js @@ -5,6 +5,18 @@ export const createRoom = () => gql` CreateRoom(userId: $userId) { id roomId + roomName + lastMessageAt + unreadCount + #avatar + users { + _id + id + name + avatar { + url + } + } } } ` diff --git a/webapp/pages/chat.vue b/webapp/pages/chat.vue index acb186f4e..96df8cc6b 100644 --- a/webapp/pages/chat.vue +++ b/webapp/pages/chat.vue @@ -12,6 +12,7 @@ :roomId="getShowChat.showChat ? getShowChat.roomID : null" ref="chat" @toggle-user-search="showUserSearch = !showUserSearch" + :show-room="showRoom" /> @@ -47,6 +48,9 @@ export default { addChatRoom(userID) { this.$refs.chat.newRoom(userID) }, + showRoom(roomId) { + this.showChat({ showChat: true, roomID: roomId }) + } }, } From dee77df5f60da57449faa72645985447d44ba6ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 20 Jul 2023 12:02:24 +0200 Subject: [PATCH 12/21] Cleanup --- webapp/components/Chat/AddChatRoomByUserSearch.vue | 1 - webapp/pages/chat.vue | 2 -- 2 files changed, 3 deletions(-) diff --git a/webapp/components/Chat/AddChatRoomByUserSearch.vue b/webapp/components/Chat/AddChatRoomByUserSearch.vue index f88b4f1e6..10a4d2bc4 100644 --- a/webapp/components/Chat/AddChatRoomByUserSearch.vue +++ b/webapp/components/Chat/AddChatRoomByUserSearch.vue @@ -1,6 +1,5 @@