@bcc-code/vue-bcc-chat-ui 3.40.2 → 3.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat/data.d.ts +2 -1
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/types.d.ts +6 -0
- package/dist/components/BccChatMessageList.vue.d.ts +6 -2
- package/dist/vue-bcc-chat-ui.js +11911 -11831
- package/dist/vue-bcc-chat-ui.js.map +1 -1
- package/package.json +1 -1
- package/src/components/BccChatMessageList.vue +68 -7
package/package.json
CHANGED
|
@@ -8,16 +8,18 @@ import {
|
|
|
8
8
|
provide,
|
|
9
9
|
ref,
|
|
10
10
|
watch,
|
|
11
|
+
watchEffect,
|
|
11
12
|
} from "vue";
|
|
12
13
|
import chat from "../chat";
|
|
13
14
|
import { connect, disconnect } from "../chat/connection";
|
|
14
15
|
import { loggedIn } from "../chat/login";
|
|
15
|
-
import { Group } from "@cometchat/chat-sdk-javascript";
|
|
16
|
+
import { CometChat, Group, GroupMember } from "@cometchat/chat-sdk-javascript";
|
|
16
17
|
import { watchAndApplyStyle } from "../chat/styleFix";
|
|
17
|
-
import { ChatInstance } from "../chat/types";
|
|
18
|
+
import { ChatInstance, ParticipantInfo } from "../chat/types";
|
|
18
19
|
import { CometChatMessageEvents, MessageStatus } from "@cometchat/uikit-resources";
|
|
19
20
|
import BccChatMessages from "./BccChatMessages.vue";
|
|
20
21
|
import BccScheduledMessages from "./BccScheduledMessages.vue";
|
|
22
|
+
import { getGroupMembersInfo } from "../chat/data";
|
|
21
23
|
const props = defineProps({
|
|
22
24
|
chatUid: { type: String, required: true },
|
|
23
25
|
senderDisplayName: { type: String, required: false },
|
|
@@ -33,6 +35,9 @@ const componentId = ref(
|
|
|
33
35
|
);
|
|
34
36
|
const chatGroup = ref<Group>();
|
|
35
37
|
|
|
38
|
+
const emit = defineEmits(['groupMembersFetched']);
|
|
39
|
+
const groupMembers = ref<ParticipantInfo[]>();
|
|
40
|
+
|
|
36
41
|
const chatInstance: Ref<ChatInstance> = ref({
|
|
37
42
|
componentId: componentId,
|
|
38
43
|
replyToMessage: null,
|
|
@@ -86,6 +91,8 @@ watch([loggedIn, () => props.chatUid, chat.initialized, () => props.groupMessage
|
|
|
86
91
|
}
|
|
87
92
|
}
|
|
88
93
|
])
|
|
94
|
+
|
|
95
|
+
getGroupMembersInfo(_chatUid).then((participants) => groupMembers.value = participants);
|
|
89
96
|
}
|
|
90
97
|
|
|
91
98
|
await chat.clearGroupChatCount(props.chatUid);
|
|
@@ -94,7 +101,13 @@ watch([loggedIn, () => props.chatUid, chat.initialized, () => props.groupMessage
|
|
|
94
101
|
}
|
|
95
102
|
}, { immediate: true });
|
|
96
103
|
|
|
97
|
-
|
|
104
|
+
watchEffect(() => {
|
|
105
|
+
if (groupMembers.value && groupMembers.value.length) {
|
|
106
|
+
emit('groupMembersFetched', groupMembers.value);
|
|
107
|
+
} else {
|
|
108
|
+
emit('groupMembersFetched', []);
|
|
109
|
+
}
|
|
110
|
+
})
|
|
98
111
|
|
|
99
112
|
onMounted(() => {
|
|
100
113
|
watchAndApplyStyle(".bcc-chat-message-list-wrapper", [
|
|
@@ -115,6 +128,30 @@ onMounted(() => {
|
|
|
115
128
|
shadowDomSelector: "cometchat-preview",
|
|
116
129
|
}
|
|
117
130
|
]);
|
|
131
|
+
|
|
132
|
+
CometChat.addGroupListener("groupListener", new CometChat.GroupListener({
|
|
133
|
+
onGroupMemberScopeChanged: (_action: any, changedUser: GroupMember, newScope: any, _oldScope: any, _changedGroup: GroupMember) => {
|
|
134
|
+
handleGroupMemberChanges(changedUser, "update", newScope);
|
|
135
|
+
},
|
|
136
|
+
onGroupMemberKicked: (_action: any, changedUser: GroupMember, _Ye: any, _group: any) => {
|
|
137
|
+
handleGroupMemberChanges(changedUser, "remove");
|
|
138
|
+
},
|
|
139
|
+
onGroupMemberBanned: (_action: any, user: GroupMember, _Ye: any, _group: any) => {
|
|
140
|
+
handleGroupMemberChanges(user, "remove");
|
|
141
|
+
},
|
|
142
|
+
onGroupMemberUnbanned: (_action: any, user: GroupMember, _Ye: any, _group: any) => {
|
|
143
|
+
handleGroupMemberChanges(user, "add");
|
|
144
|
+
},
|
|
145
|
+
onMemberAddedToGroup: (_action: any, user: GroupMember, _Ye: any, _group: any) => {
|
|
146
|
+
handleGroupMemberChanges(user, "add");
|
|
147
|
+
},
|
|
148
|
+
onGroupMemberLeft: (_action: any, user: GroupMember, _group: any) => {
|
|
149
|
+
handleGroupMemberChanges(user, "remove");
|
|
150
|
+
},
|
|
151
|
+
onGroupMemberJoined: (_action: any, user: GroupMember, _group: any) => {
|
|
152
|
+
handleGroupMemberChanges(user, "add");
|
|
153
|
+
}
|
|
154
|
+
}))
|
|
118
155
|
});
|
|
119
156
|
|
|
120
157
|
onBeforeUnmount(() => {
|
|
@@ -125,6 +162,31 @@ onUnmounted(async () => {
|
|
|
125
162
|
await disconnect(componentId.value);
|
|
126
163
|
});
|
|
127
164
|
|
|
165
|
+
function handleGroupMemberChanges(changedUser: GroupMember, action: string, newScope?: string) {
|
|
166
|
+
let participant: ParticipantInfo = {
|
|
167
|
+
uid: changedUser.getUid(),
|
|
168
|
+
displayName: changedUser.getName(),
|
|
169
|
+
avatar: changedUser.getAvatar(),
|
|
170
|
+
role: newScope ? newScope : CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (action === "add" && !existsInGroup(changedUser.getUid())) {
|
|
174
|
+
groupMembers.value?.push(participant)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (action === "remove" && existsInGroup(changedUser.getUid())) {
|
|
178
|
+
groupMembers.value = groupMembers.value?.filter(participant => participant.uid !== changedUser.getUid());
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (action === "update" && existsInGroup(changedUser.getUid())) {
|
|
182
|
+
groupMembers.value = groupMembers.value?.map(p => p.uid === changedUser.getUid() ? { ...p, ...participant } : p);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function existsInGroup(uid: string): boolean {
|
|
187
|
+
return groupMembers.value?.some(p => p.uid === uid) ?? false;
|
|
188
|
+
}
|
|
189
|
+
|
|
128
190
|
function closeScheduledMessage() {
|
|
129
191
|
chatInstance.value.captionedAttachment = null
|
|
130
192
|
chatInstance.value.replyToMessage = null
|
|
@@ -144,8 +206,8 @@ function closeScheduledMessage() {
|
|
|
144
206
|
<div>Connecting: {{chat.connecting.value}}</div>
|
|
145
207
|
<div>CometChat: {{cometChatStatus}} <button @click="getCometChatStatus()">[refresh]</button></div>
|
|
146
208
|
</div> -->
|
|
147
|
-
<BccChatMessages v-if="chatGroup && !chatInstance.showScheduledMessagesChat" :chatGroup="chatGroup"
|
|
148
|
-
:chatUid="props.chatUid"></BccChatMessages>
|
|
209
|
+
<BccChatMessages v-if="chatGroup && !chatInstance.showScheduledMessagesChat" :chatGroup="chatGroup"
|
|
210
|
+
:hide-deleted-messages="props.hideDeletedMessages" :chatUid="props.chatUid"></BccChatMessages>
|
|
149
211
|
<BccScheduledMessages v-else-if="chatGroup && chatInstance.showScheduledMessagesChat"
|
|
150
212
|
class="bcc-scheduled-message-list" :chatGroup="chatInstance.scheduledMessageChat!"
|
|
151
213
|
:originalChatUid="props.chatUid" @close="closeScheduledMessage()"></BccScheduledMessages>
|
|
@@ -165,8 +227,6 @@ function closeScheduledMessage() {
|
|
|
165
227
|
body {
|
|
166
228
|
background: #fff;
|
|
167
229
|
color: #000;
|
|
168
|
-
|
|
169
|
-
|
|
170
230
|
}
|
|
171
231
|
|
|
172
232
|
:host.dark body {
|
|
@@ -232,6 +292,7 @@ accent900: text in avatar
|
|
|
232
292
|
|
|
233
293
|
.bcc-chat-message-list {
|
|
234
294
|
height: 100%;
|
|
295
|
+
|
|
235
296
|
/* 1. Wrapper for Messages component */
|
|
236
297
|
.cc-messages-wrapper {
|
|
237
298
|
|