feat: integrate customer service chat

This commit is contained in:
richjohnrambo
2026-10-14 16:37:12 +08:00
parent f3f59fe7c3
commit 48b3564ac9
22 changed files with 1788 additions and 64 deletions
+6 -5
View File
@@ -76,9 +76,10 @@ export class CustomerServiceChat {
const ref = await this.upload(file, onProgress);
const descriptor = {
mime: file.type,
// Tinode returns a relative file path. Publish an absolute reference so
// other clients do not resolve it against their own web-app origin.
refurl: new URL(ref, this.session.api_base_url).toString(),
// Keep the server-issued relative reference. Tinode only includes
// relative references in extra.attachments, which lets the server bind
// the uploaded file to this message and authorize the recipient.
refurl: ref,
filename: file.name,
size: file.size,
width: dimensions.width,
@@ -187,8 +188,8 @@ export class CustomerServiceChat {
if (!ref) return '';
const apiBase = new URL(this.session.api_base_url);
const resolved = new URL(ref, apiBase);
// The SDK only signs relative file URLs. Convert our absolute IM file
// reference back to a relative path for signing when rendering locally.
// The SDK signs relative file URLs. Also tolerate historical absolute IM
// references by converting same-origin URLs back to a signable path.
const signable = resolved.origin === apiBase.origin
? `${resolved.pathname}${resolved.search}`
: ref;