Skip to content

Commit a490330

Browse files
committed
[fix] BrowseRepository
1 parent e94c99a commit a490330

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

DailyQuest/DailyQuest/Data/Repositories/DefaultBrowseRepository.swift

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,38 +27,41 @@ extension DefaultBrowseRepository: BrowseRepository {
2727
/// Firebase 우선, 실패시 persistentStorage, persistentStorage도 실패시 Error반환
2828
/// - Returns: Observable<[BrowseQuest]>
2929
func fetch() -> Observable<[BrowseQuest]> {
30-
return networkService.getAllowUsers(limit: 10)
30+
return self.networkService.getAllowUsers(limit: 10)
3131
.map { $0.toDomain() }
32-
.flatMap { user in
33-
self.networkService
34-
.read(type: QuestDTO.self, userCase: .anotherUser(user.uuid), access: .quests, filter: .today(Date()))
35-
.map { $0.toDomain() }
36-
.toArray()
37-
.asObservable()
38-
.map { questList in
39-
return BrowseQuest(user: user, quests: questList)
40-
}
41-
}
42-
32+
.flatMap(fetchBrowseQuestNetworkService(user:))
4333
.filter { !$0.quests.isEmpty }
4434
.toArray()
4535
.asObservable()
46-
.do(afterNext: { browseQuests in
36+
.do(afterNext: { [weak self] browseQuests in
37+
guard let self = self else { return }
4738
self.persistentStorage.deleteBrowseQuests()
4839
.asObservable()
4940
.concatMap { _ in
5041
Observable.from(browseQuests)
51-
.flatMap { browseQuest in
52-
self.persistentStorage.saveBrowseQuest(browseQuest: browseQuest)
53-
.asObservable()
54-
}
42+
.flatMap (self.saveBrowseQuestPersistentStorage(browseQuest:))
5543
}
56-
.subscribe(onError: { error in
57-
print(error)
58-
}).disposed(by: self.disposeBag)
44+
.subscribe()
45+
.disposed(by: self.disposeBag)
5946
})
6047
.catch { error in
6148
return self.persistentStorage.fetchBrowseQuests()
6249
}
6350
}
6451
}
52+
53+
private extension DefaultBrowseRepository {
54+
func fetchBrowseQuestNetworkService(user: User) -> Observable<BrowseQuest> {
55+
networkService
56+
.read(type: QuestDTO.self, userCase: .anotherUser(user.uuid), access: .quests, filter: .today(Date()))
57+
.map { $0.toDomain() }
58+
.toArray()
59+
.asObservable()
60+
.map { return BrowseQuest(user: user, quests: $0) }
61+
}
62+
63+
func saveBrowseQuestPersistentStorage(browseQuest: BrowseQuest) -> Observable<BrowseQuest> {
64+
persistentStorage.saveBrowseQuest(browseQuest: browseQuest)
65+
.asObservable()
66+
}
67+
}

0 commit comments

Comments
 (0)