Skip to content

Commit 8c48338

Browse files
committed
🐛 任务管理侧栏:任务勾选,解除父子任务、设置优先级没有自动刷新 #278
1 parent 8dc515f commit 8c48338

File tree

2 files changed

+33
-38
lines changed

2 files changed

+33
-38
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11

2+
## v5.3.6 / 20260203
3+
-
4+
25
## v5.3.5 / 20260131
36
- 🎨 项目看板:里程碑管理弹窗支持查看任务
47
- 🎨 项目看板:筛选里程碑,已归档的里程碑显示为暗色

src/components/ReminderPanel.ts

Lines changed: 30 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ export class ReminderPanel {
8080
// 如果事件来自自己或显式要求跳过面板刷新,则忽略
8181
if (event && event.detail) {
8282
if (event.detail.source === this.panelId) return;
83-
if (event.detail.skipPanelRefresh) return;
8483
}
8584

8685
// 防抖处理,避免短时间内的多次更新
@@ -2553,7 +2552,7 @@ export class ReminderPanel {
25532552
await saveReminders(this.plugin, reminderData);
25542553
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
25552554
// 刷新界面显示
2556-
this.loadReminders(true);
2555+
this.loadReminders();
25572556
}
25582557
} catch (e) {
25592558
console.error("完成每日可做任务失败", e);
@@ -2581,7 +2580,7 @@ export class ReminderPanel {
25812580
await saveReminders(this.plugin, reminderData);
25822581
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
25832582
// 刷新界面显示
2584-
this.loadReminders(true);
2583+
this.loadReminders();
25852584
showMessage("已取消今日完成标记");
25862585
}
25872586
}
@@ -2612,7 +2611,7 @@ export class ReminderPanel {
26122611
await saveReminders(this.plugin, reminderData);
26132612
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
26142613
// 刷新界面显示
2615-
this.loadReminders(true);
2614+
this.loadReminders();
26162615
showMessage("今日已忽略该任务");
26172616
}
26182617
} catch (e) {
@@ -2636,7 +2635,7 @@ export class ReminderPanel {
26362635
await saveReminders(this.plugin, reminderData);
26372636
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
26382637
// 刷新界面显示
2639-
this.loadReminders(true);
2638+
this.loadReminders();
26402639
showMessage("已取消今日忽略");
26412640
}
26422641
}
@@ -3462,7 +3461,7 @@ export class ReminderPanel {
34623461

34633462
// 触发UI刷新
34643463
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
3465-
3464+
this.loadReminders();
34663465
return;
34673466
}
34683467

@@ -3509,12 +3508,13 @@ export class ReminderPanel {
35093508

35103509
// 触发UI刷新
35113510
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
3512-
3511+
this.loadReminders();
35133512
} catch (error) {
35143513
console.error('切换提醒状态失败:', error);
35153514
showMessage(i18n("operationFailed"));
35163515
// 即使出错也要触发UI刷新,确保界面状态同步
35173516
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
3517+
this.loadReminders();
35183518
}
35193519
}
35203520
/**
@@ -4104,11 +4104,9 @@ export class ReminderPanel {
41044104
await saveReminders(this.plugin, reminderData);
41054105

41064106
// 刷新界面
4107-
await this.loadReminders(true);
4108-
41094107
// 通知其他组件
41104108
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
4111-
4109+
await this.loadReminders();
41124110
showMessage(i18n("reminderUpdated") || "任务已更新");
41134111
}
41144112
} else {
@@ -4175,6 +4173,7 @@ export class ReminderPanel {
41754173

41764174
// 触发刷新以重新渲染整个列表(因为层级结构变化需要重新渲染)
41774175
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
4176+
await this.loadReminders();
41784177

41794178
} catch (error) {
41804179
console.error('移除父子关系失败:', error);
@@ -4600,6 +4599,7 @@ export class ReminderPanel {
46004599

46014600
// 触发刷新以重新渲染整个列表(因为层级结构变化需要重新渲染)
46024601
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
4602+
await this.loadReminders();
46034603

46044604
} catch (error) {
46054605
console.error('设置父子关系失败:', error);
@@ -4702,10 +4702,8 @@ export class ReminderPanel {
47024702

47034703
await saveReminders(this.plugin, reminderData);
47044704

4705-
// 触发全局刷新以更新UI(包括优先级颜色和位置)
4706-
// 不使用 skipPanelRefresh,因为优先级改变需要重新渲染样式
47074705
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
4708-
// showMessage(t("priorityUpdated") || "优先级已更新");
4706+
await this.loadReminders();
47094707

47104708
} else {
47114709
// 同优先级排序(原有逻辑)
@@ -4733,8 +4731,9 @@ export class ReminderPanel {
47334731
await saveReminders(this.plugin, reminderData);
47344732
// 注意:同优先级排序不触发强制刷新,因为 manually updateDOMOrder 会处理
47354733
window.dispatchEvent(new CustomEvent('reminderUpdated', {
4736-
detail: { skipPanelRefresh: true, source: this.panelId }
4734+
detail: { source: this.panelId }
47374735
}));
4736+
await this.loadReminders();
47384737
}
47394738

47404739
} catch (error) {
@@ -6109,7 +6108,7 @@ export class ReminderPanel {
61096108
}
61106109

61116110
// 全量刷新面板,保证父任务进度、分页和异步数据都能够正确更新
6112-
await this.loadReminders(true);
6111+
await this.loadReminders();
61136112
showMessage(i18n("reminderDeleted"));
61146113

61156114
// 触发其他组件更新
@@ -6266,13 +6265,11 @@ export class ReminderPanel {
62666265
}
62676266

62686267
// 如果当前按优先级排序,需要触发刷新以重新排序
6269-
if (this.currentSort === 'priority') {
6270-
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
6271-
} else {
6272-
window.dispatchEvent(new CustomEvent('reminderUpdated', {
6273-
detail: { skipPanelRefresh: true, source: this.panelId }
6274-
}));
6275-
}
6268+
window.dispatchEvent(new CustomEvent('reminderUpdated', {
6269+
detail: { source: this.panelId }
6270+
}));
6271+
await this.loadReminders();
6272+
62766273
}
62776274
} else {
62786275
showMessage(i18n("reminderNotExist"));
@@ -6371,15 +6368,10 @@ export class ReminderPanel {
63716368
}
63726369
}
63736370

6374-
// 如果当前有分类过滤(不是"全部分类"),需要触发刷新以更新列表
6375-
// 因为修改分类后,任务可能不再匹配当前的过滤条件
6376-
if (this.currentCategoryFilter !== 'all') {
6377-
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
6378-
} else {
6379-
window.dispatchEvent(new CustomEvent('reminderUpdated', {
6380-
detail: { skipPanelRefresh: true, source: this.panelId }
6381-
}));
6382-
}
6371+
window.dispatchEvent(new CustomEvent('reminderUpdated', {
6372+
detail: { source: this.panelId }
6373+
}));
6374+
await this.loadReminders();
63836375
}
63846376
} else {
63856377
showMessage(i18n("reminderNotExist"));
@@ -6597,7 +6589,7 @@ export class ReminderPanel {
65976589
// 5. 更新界面
65986590
this.loadReminders();
65996591
window.dispatchEvent(new CustomEvent('reminderUpdated', {
6600-
detail: { skipPanelRefresh: true }
6592+
detail: { source: this.panelId }
66016593
}));
66026594
showMessage(i18n("seriesSplitSuccess"));
66036595

@@ -6668,7 +6660,7 @@ export class ReminderPanel {
66686660
} else {
66696661
await this.loadReminders();
66706662
}
6671-
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { skipPanelRefresh: true, source: this.panelId } }));
6663+
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
66726664
} catch (e) {
66736665
console.error('实例编辑乐观更新失败,回退刷新', e);
66746666
this.loadReminders();
@@ -6737,7 +6729,7 @@ export class ReminderPanel {
67376729
async () => {
67386730
this.loadReminders();
67396731
window.dispatchEvent(new CustomEvent('reminderUpdated', {
6740-
detail: { skipPanelRefresh: true }
6732+
detail: { source: this.panelId }
67416733
}));
67426734
},
67436735
undefined,
@@ -6770,7 +6762,7 @@ export class ReminderPanel {
67706762
showMessage(i18n("instanceDeleted"));
67716763
this.loadReminders();
67726764
window.dispatchEvent(new CustomEvent('reminderUpdated', {
6773-
detail: { skipPanelRefresh: true }
6765+
detail: { source: this.panelId }
67746766
}));
67756767
} catch (error) {
67766768
console.error('删除重复实例失败:', error);
@@ -6915,7 +6907,7 @@ export class ReminderPanel {
69156907
showMessage(i18n("firstOccurrenceSkipped"));
69166908
this.loadReminders();
69176909
window.dispatchEvent(new CustomEvent('reminderUpdated', {
6918-
detail: { skipPanelRefresh: true }
6910+
detail: { source: this.panelId }
69196911
}));
69206912
} catch (error) {
69216913
console.error('跳过首次发生失败:', error);
@@ -7031,7 +7023,7 @@ export class ReminderPanel {
70317023
parentTask: parentReminder,
70327024
onSuccess: (totalCount) => {
70337025
showMessage(`${totalCount} 个子任务已创建`);
7034-
this.loadReminders(true);
7026+
this.loadReminders();
70357027
window.dispatchEvent(new CustomEvent('reminderUpdated', { detail: { source: this.panelId } }));
70367028
}
70377029
});
@@ -7369,7 +7361,7 @@ export class ReminderPanel {
73697361

73707362
// 触发更新事件
73717363
window.dispatchEvent(new CustomEvent('reminderUpdated', {
7372-
detail: { skipPanelRefresh: true }
7364+
detail: { source: this.panelId }
73737365
}));
73747366
} else {
73757367
throw new Error('提醒不存在');

0 commit comments

Comments
 (0)