第七轮深度测试:修复7个agent发现的12处前端问题,重点是列表分页截断与呼叫/播放状态机
- 通话状态机(Ch8):canStartCall 补齐通话中重复发起的防护,callShouldStart 补齐放弃/失败路径的清理 - 分页截断(Ch5-6):新增 fetchAllPages 辅助函数,修复通讯录/黑名单/好友申请/群成员/管理员/禁言等 11 处列表只读首页导致真实成员被遗漏的问题;群角色判断改用不受分页影响的 getGroup().my_role - 消息与媒体(Ch3-4/Ch7/Ch9):录音超时污染时长、手动重试丢失 head 导致消息被错误分类、批量删除 未取消上传中附件、语音播放器补齐同时只能播一条、workplace-collaboration-view 冗余重试请求 - 独立密码/青少年模式(Ch10-11):设置密码后按调用来源判断是否应自动开启青少年模式,避免关闭流程 中途"忘记密码"被误当成开启;注销账号确认文案补充群主后果说明 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
f42b8536e5
commit
bede45fd7f
@@ -181,6 +181,27 @@ export function translateReason(reason, details) {
|
||||
|
||||
const idem = () => ({'Idempotency-Key': requestId()});
|
||||
|
||||
// Most list endpoints here cap out at 20-50 items per page (some as low as 30, e.g. group
|
||||
// members against a 128-member cap) and round7 testing found several call sites only ever
|
||||
// fetched the first page -- for things like "am I this group's owner/admin" or the admin
|
||||
// candidate list, a real owner/admin sitting past page 1 went undetected entirely rather than
|
||||
// just showing an incomplete list. Empty/repeated next_cursor means done; this app's list
|
||||
// responses haven't been observed to send a separate has_more that disagrees with that.
|
||||
export async function fetchAllPages(fetchPage, startCursor = '') {
|
||||
let cursor = startCursor;
|
||||
let items = [];
|
||||
for (;;) {
|
||||
const page = await fetchPage(cursor);
|
||||
items = items.concat((page && page.items) || []);
|
||||
const nextCursor = (page && page.next_cursor) || '';
|
||||
if (!nextCursor || nextCursor === cursor) {
|
||||
break;
|
||||
}
|
||||
cursor = nextCursor;
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
export const imGet = (path, opts) => imRequest(path, opts);
|
||||
export const imPost = (path, body, opts = {}) => imRequest(path, {method: 'POST', body, headers: idem(), ...opts});
|
||||
export const imPatch = (path, body, opts = {}) => imRequest(path, {method: 'PATCH', body, headers: idem(), ...opts});
|
||||
|
||||
Reference in New Issue
Block a user