Skip to content

Commit 1c0805b

Browse files
authored
Merge pull request #98 from boostcampwm-2022/feature/UserUseCase
Feature/user use case
2 parents d84061a + 83f4592 commit 1c0805b

File tree

4 files changed

+65
-5
lines changed

4 files changed

+65
-5
lines changed

DailyQuest/DailyQuest.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@
127127
9BD8CD022938418500E6EA2F /* LastFollowingCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8CD012938418500E6EA2F /* LastFollowingCell.swift */; };
128128
A5003AB4293F5FEC00082A9C /* SignUpViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5003AB3293F5FEC00082A9C /* SignUpViewModel.swift */; };
129129
A5003AB6293F601E00082A9C /* SignUpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5003AB5293F601E00082A9C /* SignUpViewController.swift */; };
130+
A5003AB9293F909300082A9C /* UserUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5003AB8293F909300082A9C /* UserUseCase.swift */; };
131+
A5003ABB293F914500082A9C /* DefaultUserUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5003ABA293F914500082A9C /* DefaultUserUseCase.swift */; };
130132
A50DE906292B53D900E1FD60 /* DefaultQuestsRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = A50DE905292B53D900E1FD60 /* DefaultQuestsRepository.swift */; };
131133
A50DE90B292B73B900E1FD60 /* FirebaseDatabaseSwift in Frameworks */ = {isa = PBXBuildFile; productRef = A50DE90A292B73B900E1FD60 /* FirebaseDatabaseSwift */; };
132134
A50DE911292B74C500E1FD60 /* DTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = A50DE910292B74C500E1FD60 /* DTO.swift */; };
@@ -327,6 +329,8 @@
327329
9BD8CD012938418500E6EA2F /* LastFollowingCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LastFollowingCell.swift; sourceTree = "<group>"; };
328330
A5003AB3293F5FEC00082A9C /* SignUpViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpViewModel.swift; sourceTree = "<group>"; };
329331
A5003AB5293F601E00082A9C /* SignUpViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpViewController.swift; sourceTree = "<group>"; };
332+
A5003AB8293F909300082A9C /* UserUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserUseCase.swift; sourceTree = "<group>"; };
333+
A5003ABA293F914500082A9C /* DefaultUserUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultUserUseCase.swift; sourceTree = "<group>"; };
330334
A50DE905292B53D900E1FD60 /* DefaultQuestsRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultQuestsRepository.swift; sourceTree = "<group>"; };
331335
A50DE910292B74C500E1FD60 /* DTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DTO.swift; sourceTree = "<group>"; };
332336
A50F9A3329266F45005C00FE /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = "<group>"; };
@@ -447,6 +451,7 @@
447451
3416FC86292B54BF00B504C5 /* Protocols */,
448452
3416FC89292B560800B504C5 /* DefaultQuestUseCase.swift */,
449453
34FCD365293DE62700E0DC8A /* DefaultEnrollUseCase.swift */,
454+
A5003ABA293F914500082A9C /* DefaultUserUseCase.swift */,
450455
);
451456
path = Home;
452457
sourceTree = "<group>";
@@ -456,6 +461,7 @@
456461
children = (
457462
3416FC87292B54DB00B504C5 /* QuestUseCase.swift */,
458463
344A4599293DC495007A3D37 /* EnrollUseCase.swift */,
464+
A5003AB8293F909300082A9C /* UserUseCase.swift */,
459465
);
460466
path = Protocols;
461467
sourceTree = "<group>";
@@ -1292,6 +1298,7 @@
12921298
342830FD292E2AF200AE811B /* NavigateField.swift in Sources */,
12931299
342830F2292E196E00AE811B /* CommonField.swift in Sources */,
12941300
342830A8292E0FAC00AE811B /* SettingsCoordinator.swift in Sources */,
1301+
A5003AB9293F909300082A9C /* UserUseCase.swift in Sources */,
12951302
342830FB292E2A5F00AE811B /* NavigateItemViewModel.swift in Sources */,
12961303
A51F01C82923392F0031ECA2 /* UserInfoStorage.swift in Sources */,
12971304
34A529E429248178001BAD34 /* SettingsSceneDIContainer.swift in Sources */,
@@ -1330,6 +1337,7 @@
13301337
A51F01CA2923397E0031ECA2 /* UserInfoEntity.swift in Sources */,
13311338
345687F42937329E00CA51E3 /* EnrollViewController.swift in Sources */,
13321339
A511229029384FAF00384B4B /* DefaultUserRepository.swift in Sources */,
1340+
A5003ABB293F914500082A9C /* DefaultUserUseCase.swift in Sources */,
13331341
342830FF292E2B2A00AE811B /* NavigateCell.swift in Sources */,
13341342
3436FCFA293F2654003575C3 /* Notification+.swift in Sources */,
13351343
A51F01D8292343A80031ECA2 /* RealmBrowseQuestsStorage.swift in Sources */,

DailyQuest/DailyQuest/Data/Repositories/DefaultUserRepository.swift

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,17 @@ extension DefaultUserRepository: UserRepository {
4949

5050
extension DefaultUserRepository: ProtectedUserRepository {
5151
func deleteUser() -> Observable<Bool> {
52-
return self.persistentStorage.deleteUserInfo()
52+
// return self.persistentStorage.deleteUserInfo()
53+
// .map { _ in true }
54+
// .asObservable()
55+
// .concatMap { _ in
56+
// return self.networkService.delete(userCase: .currentUser, access: .userInfo, dto: UserDTO())
57+
// .map { _ in true }
58+
// }
59+
return networkService.delete(userCase: .currentUser, access: .userInfo, dto: UserDTO())
5360
.map { _ in true }
61+
.catchAndReturn(false)
5462
.asObservable()
55-
.concatMap { _ in
56-
return self.networkService.delete(userCase: .currentUser, access: .userInfo, dto: UserDTO())
57-
.map { _ in true }
58-
}
5963
}
6064
}
6165

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//
2+
// DefaultUserUseCase.swift
3+
// DailyQuest
4+
//
5+
// Created by 이전희 on 2022/12/07.
6+
//
7+
8+
import RxSwift
9+
10+
final class DefaultUserUseCase {
11+
private let userRepository: UserRepository
12+
13+
init(userRepository: UserRepository) {
14+
self.userRepository = userRepository
15+
}
16+
}
17+
18+
extension DefaultUserUseCase: UserUseCase {
19+
func fetch() -> Observable<User> {
20+
return userRepository.readUser()
21+
}
22+
23+
func save(with user: User) -> Observable<User> {
24+
return userRepository.updateUser(by: user)
25+
}
26+
27+
func delete() -> Observable<Bool> {
28+
guard let userRepository = userRepository as? ProtectedUserRepository else { return Observable.just(false) }
29+
return userRepository.deleteUser()
30+
.catchAndReturn(false)
31+
}
32+
}
33+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// UserUseCase.swift
3+
// DailyQuest
4+
//
5+
// Created by 이전희 on 2022/12/07.
6+
//
7+
8+
import RxSwift
9+
10+
protocol UserUseCase {
11+
func fetch() -> Observable<User>
12+
func save(with user: User) -> Observable<User>
13+
14+
func delete() -> Observable<Bool>
15+
}

0 commit comments

Comments
 (0)