@@ -47,22 +47,7 @@ final class PushNotificationRepositoryImpl: PushNotificationRepository {
4747 async let preferencesTask = todoCategoryService. fetchPreferences ( )
4848
4949 let ( response, preferences) = try await ( responseTask, preferencesTask)
50- let userTodoCategories : [ UserTodoCategory ] = preferences. compactMap { preference in
51- guard case . user( let userTodoCategory) = preference. category else {
52- return nil
53- }
54-
55- return userTodoCategory
56- }
57-
58- let responses = try response. items. map {
59- try resolve ( $0, userTodoCategories: userTodoCategories)
60- }
61-
62- return try PushNotificationPageResponse (
63- items: responses,
64- nextCursor: response. nextCursor
65- ) . toDomain ( )
50+ return try resolvePage ( from: response, with: preferences)
6651 }
6752
6853 func observeNotifications(
@@ -88,23 +73,7 @@ final class PushNotificationRepositoryImpl: PushNotificationRepository {
8873 Task {
8974 do {
9075 let preferences = try await self . todoCategoryService. fetchPreferences ( )
91- let userTodoCategories : [ UserTodoCategory ] = preferences. compactMap { preference in
92- guard case . user( let userTodoCategory) = preference. category else {
93- return nil
94- }
95-
96- return userTodoCategory
97- }
98-
99- let responses = try response. items. map {
100- try self . resolve ( $0, userTodoCategories: userTodoCategories)
101- }
102-
103- let page = try PushNotificationPageResponse (
104- items: responses,
105- nextCursor: response. nextCursor
106- ) . toDomain ( )
107-
76+ let page = try self . resolvePage ( from: response, with: preferences)
10877 subject. send ( page)
10978 } catch {
11079 subject. send ( completion: . failure( error) )
@@ -139,7 +108,30 @@ final class PushNotificationRepositoryImpl: PushNotificationRepository {
139108}
140109
141110private extension PushNotificationRepositoryImpl {
142- func resolve(
111+ func resolvePage(
112+ from response: PushNotificationPageResponse ,
113+ with preferences: [ TodoCategoryPreference ]
114+ ) throws -> PushNotificationPage {
115+ let userTodoCategories : [ UserTodoCategory ] = preferences. compactMap { preference in
116+ guard case . user( let userTodoCategory) = preference. category else {
117+ return nil
118+ }
119+
120+ return userTodoCategory
121+ }
122+
123+ let responses = try response. items. map {
124+ try resolve ( $0, userTodoCategories: userTodoCategories)
125+ }
126+
127+ return try PushNotificationPageResponse (
128+ items: responses,
129+ nextCursor: response. nextCursor
130+ ) . toDomain ( )
131+ }
132+
133+ // resolvePage() 메서드에서만 사용됨
134+ private func resolve(
143135 _ response: PushNotificationResponse ,
144136 userTodoCategories: [ UserTodoCategory ]
145137 ) throws -> PushNotificationResponse {
0 commit comments