Skip to content

Commit bd8377d

Browse files
committed
refactor: 공통 로직을 헬퍼로 묶음
1 parent b240e46 commit bd8377d

1 file changed

Lines changed: 26 additions & 34 deletions

File tree

DevLog/Data/Repository/PushNotificationRepositoryImpl.swift

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

141110
private 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

Comments
 (0)