11//
22// WidgetSyncEventHandler.swift
3- // DevLogData
3+ // DevLogWidget
44//
55// Created by opfic on 4/30/26.
66//
77
88import Combine
99import Foundation
1010import DevLogCore
11- import DevLogDomain
11+ import DevLogData
1212
1313public final class WidgetSyncEventHandler {
14- private let repository : TodoRepository
14+ private let repository : WidgetTodoSnapshotRepository
1515 private let snapshotUpdater : WidgetSnapshotUpdater
1616 private let pageSize = 100
1717 private let logger = Logger ( category: " WidgetSyncEventHandler " )
1818 private var cancellables = Set < AnyCancellable > ( )
1919
2020 public init (
2121 eventBus: WidgetSyncEventBus ,
22- repository: TodoRepository ,
22+ repository: WidgetTodoSnapshotRepository ,
2323 snapshotUpdater: WidgetSnapshotUpdater
2424 ) {
2525 self . repository = repository
@@ -64,7 +64,7 @@ private extension WidgetSyncEventHandler {
6464 todosWithoutDueDate
6565 )
6666 snapshotUpdater. updateTodaySnapshot (
67- todos: ( todayTodosWithDueDate + todayTodosWithoutDueDate) . map ( WidgetTodoSnapshot . fromDomain ) ,
67+ todos: todayTodosWithDueDate + todayTodosWithoutDueDate,
6868 now: now
6969 )
7070 } catch {
@@ -103,9 +103,9 @@ private extension WidgetSyncEventHandler {
103103 deletedTodos
104104 )
105105 snapshotUpdater. updateHeatmapSnapshot (
106- createdTodos: createdTodoItems. map ( WidgetTodoSnapshot . fromDomain ) ,
107- completedTodos: completedTodoItems. map ( WidgetTodoSnapshot . fromDomain ) ,
108- deletedTodos: deletedTodoItems. map ( WidgetTodoSnapshot . fromDomain ) ,
106+ createdTodos: createdTodoItems,
107+ completedTodos: completedTodoItems,
108+ deletedTodos: deletedTodoItems,
109109 quarterStart: quarterStart,
110110 now: now
111111 )
@@ -121,39 +121,25 @@ private extension WidgetSyncEventHandler {
121121 dueDateFilter: TodoQuery . DueDateFilter ,
122122 sortTarget: TodoQuery . SortTarget ,
123123 sortOrder: TodoQuery . SortOrder
124- ) async throws -> [ Todo ] {
125- let todoPage = try await repository. fetchTodos (
126- TodoQuery (
127- completionFilter: . incomplete,
128- dueDateFilter: dueDateFilter,
129- sortTarget: sortTarget,
130- sortOrder: sortOrder,
131- pageSize: pageSize,
132- fetchAllPages: true
133- ) ,
134- cursor: nil
124+ ) async throws -> [ WidgetTodoSnapshot ] {
125+ try await repository. fetchTodayTodos (
126+ dueDateFilter: dueDateFilter,
127+ sortTarget: sortTarget,
128+ sortOrder: sortOrder,
129+ pageSize: pageSize
135130 )
136-
137- return todoPage. items
138131 }
139132
140133 func fetchHeatmapTodos(
141134 sortTarget: TodoQuery . SortTarget ,
142135 quarterStart: Date ,
143136 nextQuarterStart: Date
144- ) async throws -> [ Todo ] {
145- let todoPage = try await repository. fetchTodos (
146- TodoQuery (
147- sortDateFrom: quarterStart,
148- sortDateTo: nextQuarterStart,
149- includesDeleted: true ,
150- sortTarget: sortTarget,
151- pageSize: pageSize,
152- fetchAllPages: true
153- ) ,
154- cursor: nil
137+ ) async throws -> [ WidgetTodoSnapshot ] {
138+ try await repository. fetchHeatmapTodos (
139+ sortTarget: sortTarget,
140+ quarterStart: quarterStart,
141+ nextQuarterStart: nextQuarterStart,
142+ pageSize: pageSize
155143 )
156-
157- return todoPage. items
158144 }
159145}
0 commit comments