feat(messenger): wire member management (add/remove/rename) + pull SDK 0.1.5

CrmMessagingAdapter implements addMember/removeMember/renameConversation over
crm.messenger.participant.add/remove + group.rename, powering the SDK's new
group/channel settings panel. listMembers maps customer role too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 12:54:47 +05:30
parent 2c38ce811f
commit 06a689bbd3
3 changed files with 18 additions and 6 deletions
+4 -4
View File
@@ -10,7 +10,7 @@
"dependencies": {
"@abe-kap/appshell-sdk": "^0.2.6",
"@insignia/iios-kernel-client": "^0.1.4",
"@insignia/iios-messaging-ui": "^0.1.4",
"@insignia/iios-messaging-ui": "^0.1.5",
"clsx": "^2.1.1",
"lucide-react": "^1.21.0",
"next": "16.2.9",
@@ -1028,9 +1028,9 @@
}
},
"node_modules/@insignia/iios-messaging-ui": {
"version": "0.1.4",
"resolved": "https://git.lynkedup.cloud/api/packages/insignia/npm/%40insignia%2Fiios-messaging-ui/-/0.1.4/iios-messaging-ui-0.1.4.tgz",
"integrity": "sha512-xgwVPY//NFyCrGxuLpLlrXn89q2SMgQoKTiW46CWdLx6rkaaxSesVEijGEoYt25rVPVF9+RcDPbwIBQ2GDtHQw==",
"version": "0.1.5",
"resolved": "https://git.lynkedup.cloud/api/packages/insignia/npm/%40insignia%2Fiios-messaging-ui/-/0.1.5/iios-messaging-ui-0.1.5.tgz",
"integrity": "sha512-3Ib72RsyyOEMIFl2MquAwdocbeYOMpg4XkSLaje8rmgche+QJSRnJd3hzZyhv89VBolxPxNZw+Sz6bN9J0gp9Q==",
"peerDependencies": {
"@insignia/iios-kernel-client": "*",
"react": ">=18",
+1 -1
View File
@@ -11,7 +11,7 @@
"dependencies": {
"@abe-kap/appshell-sdk": "^0.2.6",
"@insignia/iios-kernel-client": "^0.1.4",
"@insignia/iios-messaging-ui": "^0.1.4",
"@insignia/iios-messaging-ui": "^0.1.5",
"clsx": "^2.1.1",
"lucide-react": "^1.21.0",
"next": "16.2.9",
+13 -1
View File
@@ -207,9 +207,21 @@ export class CrmMessagingAdapter implements MessagingAdapter {
await this.sdk.command("crm.messenger.channel.leave", { threadId });
}
async addMember(threadId: string, userId: string): Promise<void> {
await this.sdk.command("crm.messenger.participant.add", { threadId, userId });
}
async removeMember(threadId: string, userId: string): Promise<void> {
await this.sdk.command("crm.messenger.participant.remove", { threadId, userId });
}
async renameConversation(threadId: string, subject: string): Promise<void> {
await this.sdk.command("crm.messenger.group.rename", { threadId, subject });
}
async listMembers(threadId: string): Promise<Person[]> {
const rows = await this.sdk.query<Array<{ userId: string; displayName: string; role: string }>>("crm.messenger.members", { threadId });
return rows.map((r) => ({ id: r.userId, name: r.displayName, kind: "staff" as const }));
return rows.map((r) => ({ id: r.userId, name: r.displayName, kind: r.role === "CUSTOMER" ? "customer" : "staff" }));
}
// ── polling fallback (no socket) ───────────────────────────────