カレンダーイベントの外部変更に即時対応するためのイベント監視機構の追加
- EKEventStoreの変更通知を監視し、イベントやカレンダーの状態を自動で再読込する処理を追加 - 通知監視の開始・解除処理をコンストラクタおよびデイニシャライザで適切に実装
This commit is contained in:
@@ -12,6 +12,27 @@ class CalendarService: ObservableObject {
|
|||||||
Task {
|
Task {
|
||||||
await requestAccess()
|
await requestAccess()
|
||||||
}
|
}
|
||||||
|
setupNotificationObserver()
|
||||||
|
}
|
||||||
|
|
||||||
|
deinit {
|
||||||
|
NotificationCenter.default.removeObserver(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
private func setupNotificationObserver() {
|
||||||
|
NotificationCenter.default.addObserver(
|
||||||
|
forName: .EKEventStoreChanged,
|
||||||
|
object: eventStore,
|
||||||
|
queue: .main
|
||||||
|
) { [weak self] _ in
|
||||||
|
self?.handleEventStoreChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@MainActor
|
||||||
|
private func handleEventStoreChanged() {
|
||||||
|
loadCalendars()
|
||||||
|
loadEvents()
|
||||||
}
|
}
|
||||||
|
|
||||||
@MainActor
|
@MainActor
|
||||||
|
|||||||
Reference in New Issue
Block a user