From 751c8b60a66d6615abd03816f6c809236f0b55c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 13 Jul 2023 12:02:53 +0200 Subject: [PATCH 01/94] Add headline to chat page --- webapp/locales/de.json | 3 +++ webapp/locales/en.json | 3 +++ webapp/pages/chat.vue | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/webapp/locales/de.json b/webapp/locales/de.json index a9a8e9ed4..450f5b3a0 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -78,6 +78,9 @@ } }, "chat": { + "page": { + "headline": "Chat" + }, "userProfileButton": { "label": "Chat", "tooltip": "Chatte mit „{name}“" diff --git a/webapp/locales/en.json b/webapp/locales/en.json index 9af3e11af..bfb8b34c2 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -78,6 +78,9 @@ } }, "chat": { + "page": { + "headline": "Chat" + }, "userProfileButton": { "label": "Chat", "tooltip": "Chat with “{name}”" diff --git a/webapp/pages/chat.vue b/webapp/pages/chat.vue index 61192ea49..b23a6e8dc 100644 --- a/webapp/pages/chat.vue +++ b/webapp/pages/chat.vue @@ -1,5 +1,8 @@ From cc4cb8af46a6e077283d5d38c1aac2d08ac516a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 18 Jul 2023 14:41:10 +0200 Subject: [PATCH 27/94] Rename tag 'chat-module' to 'chat' --- webapp/layouts/default.vue | 8 ++++---- webapp/pages/chat.vue | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index bd518b976..27efcdd89 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -14,9 +14,9 @@
-
@@ -27,14 +27,14 @@ import mobile from '~/mixins/mobile' import HeaderMenu from '~/components/HeaderMenu/HeaderMenu' import Modal from '~/components/Modal' import PageFooter from '~/components/PageFooter/PageFooter' -import ChatModule from '~/components/Chat/Chat.vue' +import Chat from '~/components/Chat/Chat.vue' export default { components: { HeaderMenu, Modal, PageFooter, - ChatModule, + Chat, }, mixins: [seo, mobile()], methods: { diff --git a/webapp/pages/chat.vue b/webapp/pages/chat.vue index b5f255506..e2a577c5e 100644 --- a/webapp/pages/chat.vue +++ b/webapp/pages/chat.vue @@ -14,6 +14,11 @@ export default { mounted() { this.showChat({ showChat: false, roomID: null }) }, + data() { + return { + // former, + } + }, methods: { ...mapMutations({ showChat: 'chat/SET_OPEN_CHAT', From 4a474a6a4a487dc460f6865c67b9557e28e3c0c4 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Tue, 18 Jul 2023 16:35:18 +0200 Subject: [PATCH 28/94] convert indexId to string (neo4j number problem) --- backend/src/schema/resolvers/messages.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/schema/resolvers/messages.ts b/backend/src/schema/resolvers/messages.ts index e473c2bb5..078584c9d 100644 --- a/backend/src/schema/resolvers/messages.ts +++ b/backend/src/schema/resolvers/messages.ts @@ -89,6 +89,7 @@ export default { SET room.lastMessageAt = toString(datetime()) RETURN message { .*, + indexId: toString(message.indexId), recipientId: recipientUser.id, senderId: currentUser.id, username: currentUser.name, From c7deefa5636e5e1f95839e86a2910682330024cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 18 Jul 2023 17:33:45 +0200 Subject: [PATCH 29/94] Close small chat if one changes to the chat room page --- webapp/components/Chat/Chat.vue | 16 +++++++++++----- webapp/layouts/default.vue | 14 +++++++++----- webapp/pages/chat.vue | 12 ++++++------ 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/webapp/components/Chat/Chat.vue b/webapp/components/Chat/Chat.vue index 43994ef5d..42dd1cf98 100644 --- a/webapp/components/Chat/Chat.vue +++ b/webapp/components/Chat/Chat.vue @@ -4,7 +4,7 @@ { diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index 27efcdd89..13e5bdb95 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -13,15 +13,14 @@ -
- +
+
+ 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/store/chat.js b/webapp/store/chat.js index ed6b5256c..1e0b496ac 100644 --- a/webapp/store/chat.js +++ b/webapp/store/chat.js @@ -14,6 +14,9 @@ export const mutations = { UPDATE_ROOM_COUNT(state, count) { state.unreadRoomCount = count }, + UPDATE_ROOM_ID(state, roomid) { + state.roomId = roomid || null + }, } export const getters = { From 26282c67b7bd6d44be3334342d6269068471bf4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 19 Jul 2023 16:41:23 +0200 Subject: [PATCH 75/94] =?UTF-8?q?Make=20user=20search=20in=20chats=20funct?= =?UTF-8?q?ion=20=E2=80=93=20second=20step?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Chat/AddChatRoomByUserSearch.vue | 110 ++++++++++++++++++ webapp/components/Chat/Chat.vue | 2 +- webapp/pages/chat.vue | 18 +-- 3 files changed, 122 insertions(+), 8 deletions(-) create mode 100644 webapp/components/Chat/AddChatRoomByUserSearch.vue diff --git a/webapp/components/Chat/AddChatRoomByUserSearch.vue b/webapp/components/Chat/AddChatRoomByUserSearch.vue new file mode 100644 index 000000000..b5cf0fd4c --- /dev/null +++ b/webapp/components/Chat/AddChatRoomByUserSearch.vue @@ -0,0 +1,110 @@ + + + + + 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 45dba25a7ad28852dcdf5c8acd9ffc9c8852b371 Mon Sep 17 00:00:00 2001 From: Markus Date: Wed, 19 Jul 2023 17:24:37 +0200 Subject: [PATCH 76/94] [fix] changed css rule for single chat icon --- 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 f947f4886..139e30290 100644 --- a/webapp/components/Chat/Chat.vue +++ b/webapp/components/Chat/Chat.vue @@ -425,7 +425,7 @@ body { } } -.single-chat-bubble { +.ds-flex-item.single-chat-bubble { margin-right: 1em; } 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 77/94] 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 78/94] 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 83/94] 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 84/94] 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 85/94] 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 @@