@ethora/chat-component 26.9.8 → 26.10.3

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.
Files changed (140) hide show
  1. package/README.md +2 -1
  2. package/dist/{ChatProfileModal-3UH0H5Ec.js → ChatProfileModal-D73ioMj9.js} +44 -44
  3. package/dist/FilePreviewModal-BeGa8s4u.js +1763 -0
  4. package/dist/{ManageDataModal-BblTuE9g.js → ManageDataModal-DxhvKwLo.js} +17 -17
  5. package/dist/{MarkdownBody-RMEx8yW2.js → MarkdownBody-fzjy9KUP.js} +1 -1
  6. package/dist/{MessageSearchModal-CrYR2EH8.js → MessageSearchModal-3I0b3Nut.js} +40 -40
  7. package/dist/{PublicChatsModal-Bi5r4mrV.js → PublicChatsModal-Dzwl63q-.js} +19 -19
  8. package/dist/{SideDrawer-CDAoobvX.js → SideDrawer-BPebE2tZ.js} +37 -37
  9. package/dist/{UserProfileModal-4Frgvam-.js → UserProfileModal-BS5FZdJb.js} +10 -10
  10. package/dist/{UserSettingsModal-C-mb-9cb.js → UserSettingsModal-pBqmF_r2.js} +5 -5
  11. package/dist/{VideoCallOverlay-92dFLb9U.js → VideoCallOverlay-PIg8Z5Xr.js} +3824 -3708
  12. package/dist/{VisibilityModal-zIAV6dAP.js → VisibilityModal-CnBRSRQ9.js} +11 -11
  13. package/dist/api.config.d.ts +0 -23
  14. package/dist/assets/icons.d.ts +2 -3
  15. package/dist/components/ContextMenu/ContextMenuComponents.d.ts +24 -8
  16. package/dist/components/ExampleComponents/CustomMessage.d.ts +27 -9
  17. package/dist/components/Files/fileCategory.d.ts +4 -2
  18. package/dist/components/MainComponents/AlbumGrid.d.ts +22 -0
  19. package/dist/components/MainComponents/AttachmentList.d.ts +6 -6
  20. package/dist/components/MainComponents/ChooseChatMessage.d.ts +12 -4
  21. package/dist/components/MainComponents/EditWrapper.d.ts +12 -4
  22. package/dist/components/MainComponents/ImageUnavailable.d.ts +21 -0
  23. package/dist/components/MainComponents/MediaUploadOverlay.d.ts +31 -0
  24. package/dist/components/MainComponents/MessageContainer.d.ts +3 -0
  25. package/dist/components/MainComponents/MessageList.d.ts +2 -1
  26. package/dist/components/MainComponents/SystemMessage.d.ts +3 -1
  27. package/dist/components/MessageBubble/CustomDivider.d.ts +3 -1
  28. package/dist/components/MessageBubble/MediaCaption.d.ts +9 -0
  29. package/dist/components/MessageBubble/MessageAvatarPhoto.d.ts +17 -0
  30. package/dist/components/MessageBubble/MessageReaction.d.ts +6 -0
  31. package/dist/components/MessageBubble/MessageReply.d.ts +3 -1
  32. package/dist/components/MessageBubble/QuickReplies.d.ts +2 -0
  33. package/dist/components/Modals/FilePreviewModal/FilePreviewModal.d.ts +8 -10
  34. package/dist/components/Modals/FilePreviewModal/ImageLightbox.d.ts +4 -0
  35. package/dist/components/Modals/FilePreviewModal/PdfView.d.ts +4 -0
  36. package/dist/components/Modals/FilePreviewModal/ViewerChrome.d.ts +100 -0
  37. package/dist/components/Modals/MessageSearchModal/MessageHitResults.d.ts +3 -1
  38. package/dist/components/Modals/ModalReportChat/ModalReportChat.d.ts +3 -1
  39. package/dist/components/Modals/NewChatModal/styledNewChatComponents.d.ts +15 -5
  40. package/dist/components/Modals/SettingsModals/SharedStyledComponents.d.ts +27 -15
  41. package/dist/components/Modals/SettingsModals/Visibility/StyledComponents.d.ts +18 -6
  42. package/dist/components/Modals/SideDrawer/DrawerProfileParts.d.ts +27 -9
  43. package/dist/components/Modals/SideDrawer/SideDrawer.d.ts +39 -13
  44. package/dist/components/Modals/motionVariants.d.ts +8 -10
  45. package/dist/components/Modals/styledModalComponents.d.ts +53 -25
  46. package/dist/components/Notification/index.d.ts +3 -1
  47. package/dist/components/RoomComponents/LastMessageItem.d.ts +2 -0
  48. package/dist/components/RoomComponents/styled/LastMessageMedia.d.ts +19 -0
  49. package/dist/components/RoomComponents/styled/LastTextMessage.d.ts +2 -2
  50. package/dist/components/RoomComponents/styled/StyledRoomComponents.d.ts +29 -8
  51. package/dist/components/UsersList/StyledComponents.d.ts +18 -6
  52. package/dist/components/VideoCalls/VideoCallSession.d.ts +13 -0
  53. package/dist/components/styled/ChatWrapperBox.d.ts +9 -2
  54. package/dist/components/styled/DateLabel.d.ts +3 -1
  55. package/dist/components/styled/FileCard.d.ts +20 -0
  56. package/dist/components/styled/Loader.d.ts +3 -1
  57. package/dist/components/styled/MediaModal.d.ts +6 -2
  58. package/dist/components/styled/MediaSurface.d.ts +56 -0
  59. package/dist/components/styled/MessageImage.d.ts +9 -10
  60. package/dist/components/styled/NewMessageLabel.d.ts +3 -1
  61. package/dist/components/styled/RoomListComponents/index.d.ts +66 -22
  62. package/dist/components/styled/SendInput.d.ts +12 -2
  63. package/dist/components/styled/StyledComponents.d.ts +199 -41
  64. package/dist/components/styled/StyledInputComponents/MediaComponents.d.ts +78 -24
  65. package/dist/components/styled/StyledInputComponents/StyledInputComponents.d.ts +60 -22
  66. package/dist/components/styled/StyledInputComponents/VideoComponents.d.ts +18 -6
  67. package/dist/components/styled/TreadLabel.d.ts +3 -1
  68. package/dist/components/styled/UnsupportedType.d.ts +1 -0
  69. package/dist/components/styled/VideoMessage.d.ts +13 -6
  70. package/dist/e2ee/callKey.d.ts +32 -0
  71. package/dist/e2ee/fileEnvelope.d.ts +16 -5
  72. package/dist/e2ee/omemo.d.ts +18 -0
  73. package/dist/firebase-messaging-sw.js +20 -3
  74. package/dist/{handleCopyClick-BtXos0AJ.js → handleCopyClick-vPvh9hOU.js} +1 -1
  75. package/dist/helpers/albumLayout.d.ts +53 -0
  76. package/dist/helpers/attachments.d.ts +22 -1
  77. package/dist/helpers/avatarImageCache.d.ts +9 -0
  78. package/dist/helpers/caption.d.ts +63 -0
  79. package/dist/helpers/composerFocus.d.ts +22 -0
  80. package/dist/helpers/createMainMessageForThread.d.ts +1 -1
  81. package/dist/helpers/downloadFile.d.ts +19 -0
  82. package/dist/helpers/fileKind.d.ts +17 -0
  83. package/dist/helpers/lastMessagePreview.d.ts +55 -0
  84. package/dist/helpers/mapWithConcurrency.d.ts +8 -0
  85. package/dist/helpers/mediaBox.d.ts +110 -0
  86. package/dist/helpers/mediaBubble.d.ts +67 -0
  87. package/dist/helpers/mediaLabel.d.ts +10 -0
  88. package/dist/helpers/mediaSendRetry.d.ts +25 -0
  89. package/dist/helpers/messageRuns.d.ts +10 -0
  90. package/dist/helpers/receiptState.d.ts +48 -0
  91. package/dist/helpers/repairFilenameEncoding.d.ts +11 -0
  92. package/dist/helpers/roomImageGallery.d.ts +34 -0
  93. package/dist/helpers/safeUrl.d.ts +15 -0
  94. package/dist/helpers/secureFileUrl.d.ts +4 -1
  95. package/dist/helpers/textareaFit.d.ts +31 -0
  96. package/dist/helpers/timestamp.d.ts +7 -0
  97. package/dist/helpers/userEntry.d.ts +14 -0
  98. package/dist/helpers/viewerSender.d.ts +47 -0
  99. package/dist/hooks/useAvatarImage.d.ts +21 -0
  100. package/dist/hooks/useIsMobileViewport.d.ts +5 -0
  101. package/dist/hooks/useMediaProbe.d.ts +41 -0
  102. package/dist/hooks/usePaneWidthVar.d.ts +11 -0
  103. package/dist/hooks/usePdfThumbnail.d.ts +0 -1
  104. package/dist/hooks/usePrefersReducedMotion.d.ts +2 -0
  105. package/dist/hooks/useRoomInitialization.d.ts +2 -2
  106. package/dist/hooks/useRoomUrl.d.ts +2 -2
  107. package/dist/hooks/useSendMessage.d.ts +4 -1
  108. package/dist/{main-BnLtessp.js → main-CghdNDlB.js} +20803 -16260
  109. package/dist/main.js +10 -10
  110. package/dist/networking/api-requests/auth.api.d.ts +13 -5
  111. package/dist/networking/api-requests/user.api.d.ts +4 -4
  112. package/dist/networking/callKeyStanza.d.ts +7 -0
  113. package/dist/networking/deliveryReceiptBatcher.d.ts +53 -0
  114. package/dist/networking/displayedMarkerThrottle.d.ts +29 -0
  115. package/dist/networking/receiptsPolicy.d.ts +32 -0
  116. package/dist/networking/stanzaHandlers.d.ts +4 -2
  117. package/dist/networking/xmpp/sendDisplayedMarker.xmpp.d.ts +2 -0
  118. package/dist/networking/xmpp/sendMediaMessage.xmpp.d.ts +8 -0
  119. package/dist/networking/xmpp/sendReceivedReceipt.xmpp.d.ts +2 -0
  120. package/dist/networking/xmppClient.d.ts +5 -0
  121. package/dist/roomStore/callSlice.d.ts +6 -1
  122. package/dist/roomStore/index.d.ts +10 -0
  123. package/dist/roomStore/roomsSlice.d.ts +22 -3
  124. package/dist/styles/motion.d.ts +22 -2
  125. package/dist/types/models/attachment.model.d.ts +19 -0
  126. package/dist/types/models/config.model.d.ts +56 -2
  127. package/dist/types/models/customComponents.model.d.ts +2 -0
  128. package/dist/types/models/message.model.d.ts +9 -0
  129. package/dist/types/models/modal.model.d.ts +19 -0
  130. package/dist/types/models/room.model.d.ts +17 -0
  131. package/dist/types/models/xmpp.model.d.ts +3 -0
  132. package/dist/utils/messageNotificationContent.d.ts +34 -0
  133. package/dist/version.d.ts +1 -1
  134. package/package.json +8 -7
  135. package/public/firebase-messaging-sw.js +20 -3
  136. package/dist/FilePreviewModal-Cgj1iHry.js +0 -743
  137. package/dist/components/RoomComponents/styled/LastAudioMessage.d.ts +0 -6
  138. package/dist/components/RoomComponents/styled/LastMessageFile.d.ts +0 -6
  139. package/dist/components/RoomComponents/styled/LastMessagePhoto.d.ts +0 -6
  140. package/dist/components/RoomComponents/styled/LastMessageVideo.d.ts +0 -6
@@ -0,0 +1,34 @@
1
+ import { IMessage } from '../types/models/message.model';
2
+ import { IRoom, RoomMember } from '../types/models/room.model';
3
+ export declare const MAX_NOTIFICATION_BODY_LENGTH = 120;
4
+ export interface NotificationContent {
5
+ title: string;
6
+ body: string;
7
+ /** One per room, so a burst in the same room collapses into one entry. */
8
+ tag: string;
9
+ roomJID: string;
10
+ messageId: string;
11
+ }
12
+ export interface NotificationContentInput {
13
+ message: IMessage;
14
+ roomJID: string;
15
+ room?: IRoom | null;
16
+ usersSet?: Record<string, RoomMember>;
17
+ currentXmppUsername?: string;
18
+ activeRoomJID?: string | null;
19
+ tabVisible: boolean;
20
+ locale?: string | null;
21
+ strings?: Record<string, string> | null;
22
+ /** Names the caller already has (toast args); never trusted blindly. */
23
+ senderNameHint?: string;
24
+ roomNameHint?: string;
25
+ }
26
+ export declare const resolveNotificationSenderName: (message: IMessage, usersSet?: Record<string, RoomMember>, room?: IRoom | null, hint?: string) => string;
27
+ export declare const resolveNotificationRoomName: (roomJID: string, room?: IRoom | null, hint?: string) => string;
28
+ export declare const getNotificationTag: (roomJID: string) => string;
29
+ /**
30
+ * Returns what to show, or null when this message must not raise an alert:
31
+ * own messages, system/receipt/typing stanzas (nothing to say), muted rooms,
32
+ * and the open room while the tab is visible.
33
+ */
34
+ export declare const buildNotificationContent: (input: NotificationContentInput) => NotificationContent | null;
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const ETHORA_CHAT_COMPONENT_VERSION = "26.9.8";
1
+ export declare const ETHORA_CHAT_COMPONENT_VERSION = "26.10.1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethora/chat-component",
3
- "version": "26.9.8",
3
+ "version": "26.10.3",
4
4
  "type": "module",
5
5
  "main": "dist/main.js",
6
6
  "types": "dist/main.d.ts",
@@ -33,9 +33,13 @@
33
33
  "scripts": {
34
34
  "dev": "vite",
35
35
  "build": "tsc && vite build",
36
- "sync:lib": "node ./scripts/sync-lib.mjs",
37
- "build:lib": "npm run sync:lib && tsc --p ./tsconfig-build.json && vite build",
38
- "prepare": "npm run build && npm run build:lib",
36
+ "build:lib": "npm run build",
37
+ "prepare": "node scripts/install-git-hooks.mjs && npm run build",
38
+ "ci:local": "npm run lint && npm test && npm run test:release && npm run build",
39
+ "release": "node scripts/release.mjs",
40
+ "release:ci": "node scripts/release-ci.mjs",
41
+ "publish:npm": "node scripts/publish-npm.mjs",
42
+ "test:release": "node --test scripts/lib/version.check.mjs",
39
43
  "lint": "eslint . --quiet --report-unused-disable-directives",
40
44
  "lint:full": "eslint . --report-unused-disable-directives --max-warnings 0",
41
45
  "preview": "vite preview",
@@ -111,9 +115,6 @@
111
115
  "csstype": "3.1.3"
112
116
  },
113
117
  "description": "Open-source React chat and AI-agent UI SDK for Ethora: drop-in messaging, rooms, and AI bots with a self-hosted or cloud backend.",
114
- "directories": {
115
- "lib": "lib"
116
- },
117
118
  "author": "Ethora",
118
119
  "license": "MIT",
119
120
  "homepage": "https://ethora.com",
@@ -151,8 +151,25 @@ async function checkAssetAvailability(url) {
151
151
  }
152
152
  }
153
153
 
154
+ // `<appId>_<userId>` (24-hex ids, or an appId and a uuid) is a machine id,
155
+ // never something to put in a notification title.
156
+ const OPAQUE_ID_RE =
157
+ /^(?:[0-9a-f]{24}(?:_[0-9a-f]{24})?|[a-z0-9]+_(?:[0-9a-f]{24}|[0-9a-f-]{36})(?:_[0-9a-z-]+)*)$/i;
158
+
159
+ function isOpaqueId(value) {
160
+ const text = String(value || '').trim();
161
+ return !!text && OPAQUE_ID_RE.test(text.split('@')[0]);
162
+ }
163
+
154
164
  function pickTitle(raw = {}, data = {}, notification = {}) {
155
- return notification.title || raw.title || data.title || 'New Message';
165
+ const title = notification.title || raw.title || data.title || '';
166
+ return title && !isOpaqueId(title) ? title : 'New Message';
167
+ }
168
+
169
+ // One notification per chat: a newer message in the same room replaces it.
170
+ function roomTag(data = {}) {
171
+ const jid = String(data.jid || '').split('@')[0];
172
+ return jid ? `ethora-room-${jid}` : '';
156
173
  }
157
174
 
158
175
  function pickBody(raw = {}, data = {}, notification = {}) {
@@ -449,8 +466,8 @@ async function handlePush(raw = {}, source = 'push') {
449
466
  icon,
450
467
  badge,
451
468
  image,
452
- tag: isCall ? `call:${callId || dedupKey}` : dedupKey,
453
- renotify: isCall,
469
+ tag: isCall ? `call:${callId || dedupKey}` : roomTag(data) || dedupKey,
470
+ renotify: isCall || !!roomTag(data),
454
471
  requireInteraction: isCall,
455
472
  // Spread the ORIGINAL payload first so the click handler's isCallPush()
456
473
  // sees the full call fields (callId/callToken/kind/room); our routing