2 Commits

Author SHA1 Message Date
maaz519 e7c0adb93e chore(deps): @insignia/iios-kernel-client@0.1.6 — ReceiptEvent.userId
Needed by the Seen fix: the adapter reads e.userId to tell your own read receipt
from the other party's.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 17:49:23 +05:30
maaz519 384690f84d fix(messenger): sent messages no longer show Seen instantly (SDK 0.1.14)
Receipts now prefer userId over the IIOS actor UUID, so the SDK can actually
tell your own read receipt from the other party's.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 17:47:16 +05:30
3 changed files with 13 additions and 11 deletions
+8 -8
View File
@@ -11,8 +11,8 @@
"@abe-kap/appshell-sdk": "^0.2.6", "@abe-kap/appshell-sdk": "^0.2.6",
"@huggingface/transformers": "^4.2.0", "@huggingface/transformers": "^4.2.0",
"@imgly/background-removal": "^1.7.0", "@imgly/background-removal": "^1.7.0",
"@insignia/iios-kernel-client": "^0.1.4", "@insignia/iios-kernel-client": "^0.1.6",
"@insignia/iios-messaging-ui": "^0.1.13", "@insignia/iios-messaging-ui": "^0.1.14",
"@photo-gallery/sdk": "file:./vendor/photo-gallery-sdk", "@photo-gallery/sdk": "file:./vendor/photo-gallery-sdk",
"@tensorflow-models/coco-ssd": "^2.2.3", "@tensorflow-models/coco-ssd": "^2.2.3",
"@tensorflow/tfjs": "^4.22.0", "@tensorflow/tfjs": "^4.22.0",
@@ -1078,18 +1078,18 @@
"integrity": "sha512-+ycbP8ORdwllMtn7dmxIL7lnDpDDkV+gHqT2OKJtMplMivjKU03gsuuEveQxnrE1CMvZ3fcSljmfMs10Cw131g==" "integrity": "sha512-+ycbP8ORdwllMtn7dmxIL7lnDpDDkV+gHqT2OKJtMplMivjKU03gsuuEveQxnrE1CMvZ3fcSljmfMs10Cw131g=="
}, },
"node_modules/@insignia/iios-kernel-client": { "node_modules/@insignia/iios-kernel-client": {
"version": "0.1.4", "version": "0.1.6",
"resolved": "https://git.lynkedup.cloud/api/packages/insignia/npm/%40insignia%2Fiios-kernel-client/-/0.1.4/iios-kernel-client-0.1.4.tgz", "resolved": "https://git.lynkedup.cloud/api/packages/insignia/npm/%40insignia%2Fiios-kernel-client/-/0.1.6/iios-kernel-client-0.1.6.tgz",
"integrity": "sha512-pYBHH21TvgOOm0kp3ogvZx/iEzXLwmU23jHpDzIolh5FrqxCrcpUjRwLDkeYRTTkRVdoJAPTmPES/pU66iNoiA==", "integrity": "sha512-QfjqaGj8acKfwWQvYsf6Rxj1TeLQN+3fNTTlL+PkAP2usAxcdSkgRKkfHxy9FrhoxLXahQBuOn3wnUzd6Qh39Q==",
"dependencies": { "dependencies": {
"@insignia/iios-contracts": "0.1.0", "@insignia/iios-contracts": "0.1.0",
"socket.io-client": "^4.8.1" "socket.io-client": "^4.8.1"
} }
}, },
"node_modules/@insignia/iios-messaging-ui": { "node_modules/@insignia/iios-messaging-ui": {
"version": "0.1.13", "version": "0.1.14",
"resolved": "https://git.lynkedup.cloud/api/packages/insignia/npm/%40insignia%2Fiios-messaging-ui/-/0.1.13/iios-messaging-ui-0.1.13.tgz", "resolved": "https://git.lynkedup.cloud/api/packages/insignia/npm/%40insignia%2Fiios-messaging-ui/-/0.1.14/iios-messaging-ui-0.1.14.tgz",
"integrity": "sha512-ZJxn/E7P5mx/rCFjbXlCetl75KWStqSAeZHqvV4zKuYhPw6aDtOW5hVZW7x05qTyYvkHFdZlx+DkT1j0aalCzw==", "integrity": "sha512-ywm0DuOxoddlmi48tU27N3jtTF3pMGwnw9M/BhluPPcnJSlwy6aN03BynCGkWRrkXrxGY7c+3G1EMX/eUr7Ffw==",
"peerDependencies": { "peerDependencies": {
"@insignia/iios-kernel-client": "*", "@insignia/iios-kernel-client": "*",
"react": ">=18", "react": ">=18",
+2 -2
View File
@@ -13,8 +13,8 @@
"@abe-kap/appshell-sdk": "^0.2.6", "@abe-kap/appshell-sdk": "^0.2.6",
"@huggingface/transformers": "^4.2.0", "@huggingface/transformers": "^4.2.0",
"@imgly/background-removal": "^1.7.0", "@imgly/background-removal": "^1.7.0",
"@insignia/iios-kernel-client": "^0.1.4", "@insignia/iios-kernel-client": "^0.1.6",
"@insignia/iios-messaging-ui": "^0.1.13", "@insignia/iios-messaging-ui": "^0.1.14",
"@photo-gallery/sdk": "file:./vendor/photo-gallery-sdk", "@photo-gallery/sdk": "file:./vendor/photo-gallery-sdk",
"@tensorflow-models/coco-ssd": "^2.2.3", "@tensorflow-models/coco-ssd": "^2.2.3",
"@tensorflow/tfjs": "^4.22.0", "@tensorflow/tfjs": "^4.22.0",
+3 -1
View File
@@ -69,7 +69,9 @@ export class CrmMessagingAdapter implements MessagingAdapter {
}); });
socket.on("typing", (e) => this.emit(e.threadId, { kind: "typing", userId: e.userId })); socket.on("typing", (e) => this.emit(e.threadId, { kind: "typing", userId: e.userId }));
// Receipts carry no threadId → fan to all open threads; the UI filters by messageId. // Receipts carry no threadId → fan to all open threads; the UI filters by messageId.
socket.on("receipt", (e) => this.broadcast({ kind: "receipt", messageId: e.interactionId, actorId: e.actorId })); // Prefer userId: the SDK compares this against currentActorId(), which is a userId. e.actorId
// is an IIOS actor UUID, so using it made "is this my own receipt?" always answer no.
socket.on("receipt", (e) => this.broadcast({ kind: "receipt", messageId: e.interactionId, actorId: e.userId ?? e.actorId }));
socket.on("annotation", (e) => { socket.on("annotation", (e) => {
if (e.type !== REACTION) return; if (e.type !== REACTION) return;
this.setReactionUsers(e.interactionId, e.value, e.users); this.setReactionUsers(e.interactionId, e.value, e.users);