修复会议详情页显示裸user_id的问题(第9章复测发现)

创建/详情/更新/取消/我的回应这5个会议接口的 organizer.display_name/participants[].display_name
实测恒等于裸 user_id,只有列表接口 GET /meetings 会真的解析姓名。之前的注释误以为"响应已带
姓名解析"对所有会议接口都成立(可能是当时只测过列表接口就下了结论),这次复测用真实创建的
会议逐个接口验证,证伪了这个假设。

MeetingDetail 接入已有的 useUserNames(日报/月报详情页已经在用同一套机制),发起人和参会人
姓名解析不出来时不再显示裸 uid。同时更正了 MeetingCard 上那条误导性注释,说清楚它只对列表
接口成立。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Your Name
2026-09-04 13:31:55 +08:00
co-authored by Claude Sonnet 5
parent 1d51e53a46
commit d3d7e11b08
3 changed files with 27 additions and 9 deletions
+9 -2
View File
@@ -20349,6 +20349,13 @@ function MeetingDetail({
const myUserId = me && me.user_id;
const [busy, setBusy] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
const [loadError, setLoadError] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
const participantIds = (meeting && meeting.participants || []).map(p => p.user_id);
const nameIds = meeting ? [meeting.organizer_id, ...participantIds] : [];
const resolvedNames = useUserNames(nameIds, myUserId);
const nameFor = (id, fallback) => {
if (fallback && fallback !== id) return fallback;
return id && resolvedNames[id] || fallback || id;
};
const load = () => meetingId && (0,_lib_im_api_js__WEBPACK_IMPORTED_MODULE_3__.getMeeting)(meetingId).then(m => {
(0,_lib_use_cached_data_js__WEBPACK_IMPORTED_MODULE_4__.writeCachedData)('meeting:' + meetingId, m);
setMeeting(m);
@@ -20422,7 +20429,7 @@ function MeetingDetail({
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("dt", {
children: "发起人"
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("dd", {
children: meeting.organizer && meeting.organizer.display_name || meeting.organizer_display_name || meeting.organizer_id
children: nameFor(meeting.organizer_id, meeting.organizer && meeting.organizer.display_name || meeting.organizer_display_name)
}, void 0, false)]
}, void 0, true), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("div", {
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("dt", {
@@ -20447,7 +20454,7 @@ function MeetingDetail({
className: "meeting-participant-list",
children: (meeting.participants || []).map(p => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("li", {
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("span", {
children: p.display_name || p.user_id
children: nameFor(p.user_id, p.display_name)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("em", {
className: p.response,
children: RESPONSE_LABEL[p.response] || '待确认'
+1 -1
View File
File diff suppressed because one or more lines are too long