@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/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 readerIds = props.readersResolver ? props.readersResolver(message) : readerIdsFor(message, props.readAtByUserId);
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("time", { class: "ckui-message-time", datetime: message.createdAt.toISOString() }, [
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,