
Your NameandClaude Sonnet 5
1d51e53a46
修复通话发起失败静默无反应的问题(第8章复测发现)
sendMessageToTopic 自己的 .catch 会吞掉发送失败——publishMessage 在服务端拒绝时只标记
pub._failed=true 让消息列表画红色感叹号(这是给聊天气泡设计的反馈方式),resolve 成 undefined
而不是 reject。通话邀请这条消息不会被用户看到(用户盯着的是全屏通话面板,不是消息列表),走
这条路径等于什么反馈都没有;而且原代码 `ctrl.code` 直接解引用,undefined.code 会抛
TypeError,变成一个没人 catch 的 rejected promise——handleCallClose() 根本不会被调用,
通话面板会卡在"呼叫中"状态出不来。
这条路径今天有了真实后果:后端新增的全局通话开关(im_client_feature)关闭时,服务端会拒绝
这条 {pub},正好命中这个从未被验证过的失败分支。
修复:判断 ctrl 是否存在、补 .catch,两处都调用 handleError 提示 + handleCallClose 复位。
顺带给通话按钮可见性加了一层预判——读共享的 bootstrap 缓存,features.audio_call/video_call
为 false 时不显示按钮;读不到缓存时按原行为放行(fail-open,只是预判不是安全边界)。
已用真实账号验证:通话菜单项在开关为真时正常显示,无回归。真实失败场景(开关被关闭)无法在
当前浏览器沙盒环境下端到端验证(摄像头/麦克风权限被拦截,此前已确认的环境限制),修复依据是
逐层读 tinode-sdk 源码精确追踪出的调用链,不是猜测。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 13:14:44 +08:00
..
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-03-02 14:39:27 +03:00
2024-02-02 16:26:49 -08:00
2024-02-02 16:26:49 -08:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2026-03-02 14:39:27 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-03-02 14:39:27 +03:00
2024-02-05 18:51:02 -08:00
2026-03-02 14:39:27 +03:00
2024-02-02 16:26:49 -08:00
2026-03-02 14:39:27 +03:00
2023-12-15 14:27:32 -08:00
2023-12-15 14:27:32 -08:00
2024-02-02 16:26:49 -08:00
2023-12-15 14:27:32 -08:00
2023-12-15 14:27:32 -08:00
2023-04-14 17:47:35 -07:00
2023-08-13 09:59:20 +03:00
2024-02-05 18:51:02 -08:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2023-02-01 15:37:44 -08:00
2023-08-13 09:59:20 +03:00
2026-03-02 14:11:36 +03:00
2023-06-29 03:57:12 -07:00
2023-08-13 09:59:20 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2023-05-09 14:23:26 -07:00
2023-08-13 09:59:20 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2024-02-05 18:51:02 -08:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2023-05-10 16:36:33 -07:00
2023-08-13 09:59:20 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2026-03-01 13:59:59 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-03-02 14:39:27 +03:00
2023-05-09 14:23:26 -07:00
2023-05-09 14:23:26 -07:00
2024-02-02 16:26:49 -08:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-03-02 14:39:27 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:03 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2024-02-05 18:51:02 -08:00
2026-03-02 14:39:27 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2024-02-05 18:51:02 -08:00
2024-02-02 16:26:49 -08:00
2024-02-05 18:51:02 -08:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2024-02-02 16:26:49 -08:00
2024-02-02 16:26:49 -08:00
2026-03-02 14:39:27 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2026-03-02 14:39:27 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2024-02-02 16:26:49 -08:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2024-02-05 18:51:02 -08:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2024-02-02 16:26:49 -08:00
2024-02-02 16:26:49 -08:00
2024-02-05 18:51:02 -08:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2024-02-05 18:51:02 -08:00
2026-01-16 20:51:57 +03:00
2026-01-16 20:51:57 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2025-10-18 15:32:14 +03:00
2025-10-18 15:32:14 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:29 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-09-04 13:14:44 +08:00
2026-09-04 13:14:44 +08:00
2026-07-04 16:01:47 +03:00
2026-07-04 15:42:55 +03:00
2026-07-04 16:01:47 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2026-09-03 18:45:13 +08:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:39:27 +03:00
2026-03-02 14:11:36 +03:00
2026-09-03 18:45:13 +08:00
2026-03-02 14:39:27 +03:00
2026-08-25 18:30:40 +08:00
2026-08-25 18:30:40 +08:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-09-03 21:15:33 +08:00
2026-09-03 21:15:33 +08:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-09-03 11:40:53 +08:00
2026-09-03 11:40:53 +08:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-01-16 20:51:57 +03:00
2026-01-16 20:51:57 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00
2026-07-04 15:19:03 +03:00