Skip to content

Commit 56f7101

Browse files
committed
🧩 :: λ””λ°”μ΄μŠ€ 토큰 μ‚­μ œ api 연동
1 parent d22d5cb commit 56f7101

File tree

8 files changed

+58
-3
lines changed

8 files changed

+58
-3
lines changed

β€ŽProjects/Data/Sources/DI/UseCaseAssembly.swiftβ€Ž

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ public final class UseCaseAssembly: Assembly {
3434
usersRepository: resolver.resolve(UsersRepository.self)!
3535
)
3636
}
37+
container.register(DeleteDeviceTokenUseCase.self) { resolver in
38+
DeleteDeviceTokenUseCase(
39+
usersRepository: resolver.resolve(UsersRepository.self)!
40+
)
41+
}
42+
3743

3844
// Students
3945
container.register(ChangePasswordUseCase.self) { reslover in
@@ -250,5 +256,12 @@ public final class UseCaseAssembly: Assembly {
250256
winterInternRepository: resolver.resolve(WinterInternRepository.self)!
251257
)
252258
}
259+
260+
// System
261+
container.register(FetchServerStatusUseCase.self) { resolver in
262+
FetchServerStatusUseCase(
263+
systemRepository: resolver.resolve(SystemRepository.self)!
264+
)
265+
}
253266
}
254267
}

β€ŽProjects/Data/Sources/DataSource/API/UsersAPI.swiftβ€Ž

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import AppNetwork
44

55
enum UsersAPI {
66
case signin(SigninRequestQuery)
7+
case deleteDeviceToken
78
}
89

910
extension UsersAPI: JobisAPI {
@@ -17,25 +18,33 @@ extension UsersAPI: JobisAPI {
1718
switch self {
1819
case .signin:
1920
return "/login"
21+
case .deleteDeviceToken:
22+
return "/device-token"
2023
}
2124
}
2225

2326
var method: Method {
2427
switch self {
2528
case .signin:
2629
return .post
30+
case .deleteDeviceToken:
31+
return .patch
2732
}
2833
}
2934

3035
var task: Task {
3136
switch self {
3237
case let .signin(req):
3338
return .requestJSONEncodable(req)
39+
default:
40+
return .requestPlain
3441
}
3542
}
3643

3744
var jwtTokenType: JwtTokenType {
3845
switch self {
46+
case .deleteDeviceToken:
47+
return .accessToken
3948
default:
4049
return .none
4150
}
@@ -50,6 +59,8 @@ extension UsersAPI: JobisAPI {
5059
404: .notFoundEmail,
5160
500: .internalServerError
5261
]
62+
default:
63+
return nil
5364
}
5465
}
5566
}

β€ŽProjects/Data/Sources/DataSource/Remote/RemoteUsersDataSource.swiftβ€Ž

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Domain
33

44
protocol RemoteUsersDataSource {
55
func signin(req: SigninRequestQuery) -> Single<AuthorityType>
6+
func deleteDeviceToken() -> Completable
67
}
78

89
final class RemoteUsersDataSourceImpl: RemoteBaseDataSource<UsersAPI>, RemoteUsersDataSource {
@@ -11,4 +12,9 @@ final class RemoteUsersDataSourceImpl: RemoteBaseDataSource<UsersAPI>, RemoteUse
1112
.map(AuthTokenResponseDTO.self)
1213
.map { $0.toDomain() }
1314
}
15+
16+
func deleteDeviceToken() -> Completable {
17+
request(.deleteDeviceToken)
18+
.asCompletable()
19+
}
1420
}

β€ŽProjects/Data/Sources/Repositories/UsersRepositoryImpl.swiftβ€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,8 @@ struct UsersRepositoryImpl: UsersRepository {
2020
func logout() {
2121
localUsersDataSource.clearTokens()
2222
}
23+
24+
func deleteDeviceToken() -> Completable {
25+
remoteUsersDataSource.deleteDeviceToken()
26+
}
2327
}

β€ŽProjects/Domain/Sources/Repositories/UsersRepository.swiftβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ import RxSwift
33
public protocol UsersRepository {
44
func signin(req: SigninRequestQuery) -> Single<AuthorityType>
55
func logout()
6+
func deleteDeviceToken() -> Completable
67
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import RxSwift
2+
3+
public struct DeleteDeviceTokenUseCase {
4+
public init(usersRepository: UsersRepository) {
5+
self.usersRepository = usersRepository
6+
}
7+
8+
private let usersRepository: UsersRepository
9+
10+
public func execute() {
11+
usersRepository.deleteDeviceToken()
12+
}
13+
}

β€ŽProjects/Presentation/Sources/DI/PresentationAssembly.swiftβ€Ž

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ public final class PresentationAssembly: Assembly {
6060
changeProfileImageUseCase: resolver.resolve(ChangeProfileImageUseCase.self)!,
6161
fetchStudentInfoUseCase: resolver.resolve(FetchStudentInfoUseCase.self)!,
6262
fetchWritableReviewListUseCase: resolver.resolve(FetchWritableReviewListUseCase.self)!,
63-
logoutUseCase: resolver.resolve(LogoutUseCase.self)!
63+
logoutUseCase: resolver.resolve(LogoutUseCase.self)!,
64+
deleteDeviceTokenUseCase: resolver.resolve(DeleteDeviceTokenUseCase.self)!
6465
)
6566
}
6667

@@ -84,7 +85,8 @@ public final class PresentationAssembly: Assembly {
8485

8586
container.register(OnboardingViewModel.self) { resolver in
8687
OnboardingViewModel(
87-
reissueTokenUaseCase: resolver.resolve(ReissueTokenUaseCase.self)!
88+
reissueTokenUaseCase: resolver.resolve(ReissueTokenUaseCase.self)!,
89+
fetchServerStatusUseCase: resolver.resolve(FetchServerStatusUseCase.self)!
8890
)
8991
}
9092
container.register(OnboardingViewController.self) { resolver in

β€ŽProjects/Presentation/Sources/MyPage/MyPageViewModel.swiftβ€Ž

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,24 @@ public final class MyPageViewModel: BaseViewModel, Stepper {
1414
private let fetchStudentInfoUseCase: FetchStudentInfoUseCase
1515
private let fetchWritableReviewListUseCase: FetchWritableReviewListUseCase
1616
private let logoutUseCase: LogoutUseCase
17+
private let deleteDeviceTokenUseCase: DeleteDeviceTokenUseCase
1718

1819
init(
1920
fetchPresignedURLUseCase: FetchPresignedURLUseCase,
2021
uploadImageToS3UseCase: UploadImageToS3UseCase,
2122
changeProfileImageUseCase: ChangeProfileImageUseCase,
2223
fetchStudentInfoUseCase: FetchStudentInfoUseCase,
2324
fetchWritableReviewListUseCase: FetchWritableReviewListUseCase,
24-
logoutUseCase: LogoutUseCase
25+
logoutUseCase: LogoutUseCase,
26+
deleteDeviceTokenUseCase: DeleteDeviceTokenUseCase
2527
) {
2628
self.fetchPresignedURLUseCase = fetchPresignedURLUseCase
2729
self.uploadImageToS3UseCase = uploadImageToS3UseCase
2830
self.changeProfileImageUseCase = changeProfileImageUseCase
2931
self.fetchStudentInfoUseCase = fetchStudentInfoUseCase
3032
self.fetchWritableReviewListUseCase = fetchWritableReviewListUseCase
3133
self.logoutUseCase = logoutUseCase
34+
self.deleteDeviceTokenUseCase = deleteDeviceTokenUseCase
3235
}
3336

3437
public struct Input {
@@ -85,6 +88,7 @@ public final class MyPageViewModel: BaseViewModel, Stepper {
8588
input.logoutPublisher
8689
.do(onNext: { _ in
8790
self.logoutUseCase.execute()
91+
self.deleteDeviceTokenUseCase.execute()
8892
})
8993
.map { _ in MyPageStep.tabsIsRequired }
9094
.bind(to: steps)
@@ -93,6 +97,7 @@ public final class MyPageViewModel: BaseViewModel, Stepper {
9397
input.withdrawalPublisher
9498
.do(onNext: { _ in
9599
self.logoutUseCase.execute()
100+
self.deleteDeviceTokenUseCase.execute()
96101
})
97102
.map { _ in MyPageStep.tabsIsRequired }
98103
.bind(to: steps)

0 commit comments

Comments
Β (0)