@convokitapp/vue-ui 0.2.1 → 0.2.2
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/CHANGELOG.md +6 -0
- package/PARITY.md +1 -0
- package/README.md +4 -0
- package/dist/index.cjs +16 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -31,6 +31,10 @@ import { defineComponent, h } from "vue";
|
|
|
31
31
|
|
|
32
32
|
// src/utils.ts
|
|
33
33
|
import { clsx } from "clsx";
|
|
34
|
+
var pendingMessageIdPrefix = "convokit-pending-";
|
|
35
|
+
function isConvoKitPendingMessage(message) {
|
|
36
|
+
return message.id.startsWith(pendingMessageIdPrefix);
|
|
37
|
+
}
|
|
34
38
|
function cx(...values) {
|
|
35
39
|
return clsx(values);
|
|
36
40
|
}
|
|
@@ -73,11 +77,15 @@ function mergeMessages(current, incoming) {
|
|
|
73
77
|
const byId = new Map(current.map((message) => [message.id, message]));
|
|
74
78
|
for (const message of incoming) byId.set(message.id, message);
|
|
75
79
|
return [...byId.values()].sort((left, right) => {
|
|
80
|
+
const leftPending = isConvoKitPendingMessage(left);
|
|
81
|
+
const rightPending = isConvoKitPendingMessage(right);
|
|
82
|
+
if (leftPending !== rightPending) return leftPending ? 1 : -1;
|
|
76
83
|
const byTime = left.createdAt.getTime() - right.createdAt.getTime();
|
|
77
84
|
return byTime === 0 ? left.id.localeCompare(right.id) : byTime;
|
|
78
85
|
});
|
|
79
86
|
}
|
|
80
87
|
function readerIdsFor(message, readAtByUserId) {
|
|
88
|
+
if (isConvoKitPendingMessage(message)) return /* @__PURE__ */ new Set();
|
|
81
89
|
return new Set([...readAtByUserId.entries()].filter(([userId, readAt]) => userId !== message.senderId && readAt.getTime() >= message.createdAt.getTime()).map(([userId]) => userId));
|
|
82
90
|
}
|
|
83
91
|
function partClass(part, appearance, defaultClass) {
|
|
@@ -506,7 +514,8 @@ var MessageListView = defineComponent2({
|
|
|
506
514
|
const renderMessage = (message, index) => {
|
|
507
515
|
const isCurrentUser = message.senderId === props.currentUserId;
|
|
508
516
|
const sender = participants.value.get(message.senderId);
|
|
509
|
-
const
|
|
517
|
+
const isPending = isConvoKitPendingMessage(message);
|
|
518
|
+
const readerIds = isPending ? /* @__PURE__ */ new Set() : props.readersResolver ? props.readersResolver(message) : readerIdsFor(message, props.readAtByUserId);
|
|
510
519
|
const slotProps = { message, chronologicalIndex: index, isCurrentUser, sender, readerIds };
|
|
511
520
|
const custom = slots.message?.(slotProps);
|
|
512
521
|
if (custom) return h2("div", { key: message.id, role: "listitem" }, custom);
|
|
@@ -539,12 +548,12 @@ var MessageListView = defineComponent2({
|
|
|
539
548
|
!isCurrentUser ? h2("strong", { class: "ckui-message-sender" }, sender?.name || message.senderId) : null,
|
|
540
549
|
message.text ? h2("div", { class: "ckui-message-text" }, message.text) : null,
|
|
541
550
|
...mediaNodes,
|
|
542
|
-
h2("
|
|
543
|
-
props.formatTime(message.createdAt),
|
|
544
|
-
isCurrentUser ? readerIds.size > 0 ? h2(CheckCheck, { size: 14, "aria-label": "Read" }) : h2(Check, { size: 14, "aria-label": "Delivered" }) : null
|
|
551
|
+
h2("span", { class: "ckui-message-time" }, [
|
|
552
|
+
isPending ? "Sending\u2026" : props.formatTime(message.createdAt),
|
|
553
|
+
isCurrentUser && !isPending ? readerIds.size > 0 ? h2(CheckCheck, { size: 14, "aria-label": "Read" }) : h2(Check, { size: 14, "aria-label": "Delivered" }) : null
|
|
545
554
|
])
|
|
546
555
|
]),
|
|
547
|
-
isCurrentUser ? slots["read-receipt"]?.(receiptSlotProps) ?? h2("div", {
|
|
556
|
+
isCurrentUser && !isPending ? slots["read-receipt"]?.(receiptSlotProps) ?? h2("div", {
|
|
548
557
|
class: partClass("receipt", currentAppearance, "ckui-read-receipt"),
|
|
549
558
|
style: partStyle("receipt", currentAppearance)
|
|
550
559
|
}, readerIds.size > 0 ? `Read by ${readerIds.size}` : "Delivered") : null
|
|
@@ -1431,6 +1440,7 @@ export {
|
|
|
1431
1440
|
defaultConvoKitTheme,
|
|
1432
1441
|
defaultReadersResolver,
|
|
1433
1442
|
formatFileSize,
|
|
1443
|
+
isConvoKitPendingMessage,
|
|
1434
1444
|
matchesConversation,
|
|
1435
1445
|
mergeConversations,
|
|
1436
1446
|
mergeMessages,
|