fix(日历本): 按 COMP_SET 类型分别列出 —— 待办只给待办本,日程只给日历本
上一个提交把"全部可写本"铺开,导致新建待办时连纯日历本(娱乐/生活/工作/家庭) 也列出来,新建日程时又把纯待办本列出来。用户选错类型时服务器会拒绝写入, 或写进去但永远不在对应列表显示。 ## 依据 `DavAccount.calendarComps[i]` 早就在库里存着服务器 COMP_SET 声明: 'event' 只有 VEVENT 'todo' 只有 VTODO 'both' 两者都支持 'unknown' 未声明(旧数据) 但 `CalSource` 没透传它,界面层拿不到类型,只能按"可写"一刀切。 ## 改动 - `CalSource` 增加 `comps` 字段 - `CalendarDataService.loadSources` 从 `acc.calendarComps[i]` 透传(空串归 'unknown') - 待办侧(`Index.openTodoCreator`):排除 `comps === 'event'` - 日程侧(`EventEditPage.CalendarDataBridge.loadWritableDavSources`):排除 `comps === 'todo'` **'unknown' 两端都保留**:旧数据没有 COMP_SET 信息,武断排除会让老用户 升级后发现日历本"消失"。 ## 真机验证(5NC0225B27004718) 服务器实际类型(PROPFIND 实测): | 本 | COMP_SET | 待办列表 | 日程列表 | |---|---|---|---| | 娱乐 / 生活 / 工作 / 家庭 | VEVENT | 不显示 | 显示 | | Inbox / 家庭计划 / 工作任务 / 个人成长 | VTODO | 显示 | 不显示 | 改后实测: - 新建待办 → 只列「群晖:Inbox / 家庭计划 / 工作任务 / 个人成长」4 个 ✅ - 新建日程 → 只列「群晖 · 娱乐 / 生活 / 工作 / 家庭」4 个 ✅ 两端的本数量都从 8 降到 4,与服务器声明完全一致。 ## 编译 `BUILD SUCCESSFUL`
This commit is contained in:
@@ -3174,6 +3174,11 @@ struct Index {
|
||||
if (!s.writable || s.source !== 'dav') {
|
||||
continue;
|
||||
}
|
||||
// ⭐ 只列**能放待办**的本:纯日历本(COMP_SET 只有 VEVENT)写不进 VTODO。
|
||||
// 'both' / 'unknown' 都保留 —— unknown 是服务器未声明或旧数据,不能武断排除。
|
||||
if (s.comps === 'event') {
|
||||
continue;
|
||||
}
|
||||
// calKey 形如 "<accountId>_<index>"
|
||||
const us: number = s.calKey.lastIndexOf('_');
|
||||
if (us <= 0) {
|
||||
|
||||
Reference in New Issue
Block a user