From 04b4a4417185c9106324f98f1fba47e2918d7f5f Mon Sep 17 00:00:00 2001 From: Yejun Lee <107831192+rudah7@users.noreply.github.com> Date: Thu, 8 Dec 2022 16:42:29 +0900 Subject: [PATCH] =?UTF-8?q?#135=20feat:=20=EC=84=9C=EB=B2=84=EC=99=80=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0=20=EB=B0=8F=20=EB=8D=94=EB=AF=B8=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Endpoints/UserDetailEndpoint.swift | 11 +++++----- .../Data/Repository/DTO/UserDetailDTO.swift | 19 +++++----------- .../Data/Repository/MyPageRepository.swift | 22 +++++++++---------- .../Domain/UseCase/UserDetailUseCase.swift | 2 +- Segno/Segno/Entity/UserDetailItem.swift | 5 +++-- .../ViewController/MyPageViewController.swift | 2 +- .../ViewModel/MyPageViewModel.swift | 2 +- 7 files changed, 26 insertions(+), 37 deletions(-) diff --git a/Segno/Segno/Data/Network/Endpoints/UserDetailEndpoint.swift b/Segno/Segno/Data/Network/Endpoints/UserDetailEndpoint.swift index 52cbb07..f561a04 100644 --- a/Segno/Segno/Data/Network/Endpoints/UserDetailEndpoint.swift +++ b/Segno/Segno/Data/Network/Endpoints/UserDetailEndpoint.swift @@ -8,25 +8,24 @@ import Foundation enum UserDetailEndpoint: Endpoint { - case item + case item(String) var baseURL: URL? { return URL(string: BaseURL.urlString) } var httpMethod: HTTPMethod { - return .GET + return .POST } var path: String { - // TODO: 서버에 맞춰서 path 조정 - return "" + return "user" } var parameters: HTTPRequestParameter? { switch self { - case .item: - return HTTPRequestParameter.queries([:]) // TODO: queries로 무언가 들어가야함 + case .item(let token): + return HTTPRequestParameter.body(["token": token]) } } } diff --git a/Segno/Segno/Data/Repository/DTO/UserDetailDTO.swift b/Segno/Segno/Data/Repository/DTO/UserDetailDTO.swift index 25bee89..9f9a53d 100644 --- a/Segno/Segno/Data/Repository/DTO/UserDetailDTO.swift +++ b/Segno/Segno/Data/Repository/DTO/UserDetailDTO.swift @@ -6,22 +6,13 @@ // struct UserDetailDTO: Decodable { - // TODO: 일단은 UserDetailItem과 동일하게 작성. 이후 서버 사이드에 따라 바꾸겠습니다. - let identifier: String let nickname: String - let writtenDiary: String + let email: String + let oauthType: String + let diaryCount: Int enum CodingKeys: String, CodingKey { - case identifier = "_id" - case nickname - case writtenDiary = "diary" + case nickname = "nickName" + case email, oauthType, diaryCount } - - #if DEBUG - static let example = UserDetailDTO( - identifier: "id", - nickname: "test123", - writtenDiary: "50000" - ) - #endif } diff --git a/Segno/Segno/Data/Repository/MyPageRepository.swift b/Segno/Segno/Data/Repository/MyPageRepository.swift index 2a1fbfa..50d83e8 100644 --- a/Segno/Segno/Data/Repository/MyPageRepository.swift +++ b/Segno/Segno/Data/Repository/MyPageRepository.swift @@ -5,6 +5,8 @@ // Created by 이예준 on 2022/11/30. // +import Foundation + import RxSwift protocol MyPageRepository { @@ -13,18 +15,14 @@ protocol MyPageRepository { final class MyPageRepositoryImpl: MyPageRepository { func getUserDetail() -> Single { -// let endpoint = UserDetailEndpoint.item(id) -// -// return NetworkManager.shared.call(endpoint) -// .map { -// try JSONDecoder().decode(UserDetailDTO.self, from: $0) -// } - - // TODO: 추후에 NetworkManager로 변경 - return Single.create { observer -> Disposable in - observer(.success(UserDetailDTO.example)) + // TODO: Keychain으로부터 토큰 가져오기 + let token = "A1lmMjb2pgNWg6ZzAaPYgMcqRv/8BOyO4U/ui6i/Ic4=" + let endpoint = UserDetailEndpoint.item(token) - return Disposables.create() - } + return NetworkManager.shared.call(endpoint) + .map { + let userDetailDTO = try JSONDecoder().decode(UserDetailDTO.self, from: $0) + return userDetailDTO + } } } diff --git a/Segno/Segno/Domain/UseCase/UserDetailUseCase.swift b/Segno/Segno/Domain/UseCase/UserDetailUseCase.swift index 9bccdf5..2c92b61 100644 --- a/Segno/Segno/Domain/UseCase/UserDetailUseCase.swift +++ b/Segno/Segno/Domain/UseCase/UserDetailUseCase.swift @@ -21,7 +21,7 @@ final class UserDetailUseCaseImpl: UserDetailUseCase { func getUserDetail() -> Single { return repository.getUserDetail().map { - UserDetailItem(identifier: $0.identifier, nickname: $0.nickname, writtenDiary: $0.writtenDiary) + UserDetailItem(nickname: $0.nickname, email: $0.email, oauthType: $0.oauthType, diaryCount: $0.diaryCount) } } } diff --git a/Segno/Segno/Entity/UserDetailItem.swift b/Segno/Segno/Entity/UserDetailItem.swift index be17946..6b70f13 100644 --- a/Segno/Segno/Entity/UserDetailItem.swift +++ b/Segno/Segno/Entity/UserDetailItem.swift @@ -6,7 +6,8 @@ // struct UserDetailItem: Hashable { - let identifier: String let nickname: String - let writtenDiary: String + let email: String + let oauthType: String + let diaryCount: Int } diff --git a/Segno/Segno/Presentation/ViewController/MyPageViewController.swift b/Segno/Segno/Presentation/ViewController/MyPageViewController.swift index aee4e69..9e4ee00 100644 --- a/Segno/Segno/Presentation/ViewController/MyPageViewController.swift +++ b/Segno/Segno/Presentation/ViewController/MyPageViewController.swift @@ -113,7 +113,7 @@ final class MyPageViewController: UIViewController { numberFormatter.numberStyle = .decimal let price = Double(writtenDiary) - let result = numberFormatter.string(from: NSNumber(value:price!))! + "개" + let result = numberFormatter.string(from: NSNumber(value:price))! + "개" _ = Observable<[MyPageCellModel]>.just([ .writtenDiary(title: "작성한 일기 수", subtitle: result), diff --git a/Segno/Segno/Presentation/ViewModel/MyPageViewModel.swift b/Segno/Segno/Presentation/ViewModel/MyPageViewModel.swift index a312188..d7430e0 100644 --- a/Segno/Segno/Presentation/ViewModel/MyPageViewModel.swift +++ b/Segno/Segno/Presentation/ViewModel/MyPageViewModel.swift @@ -11,7 +11,7 @@ final class MyPageViewModel { let useCase: UserDetailUseCase var userDetailItem = PublishSubject() lazy var nicknameObservable = userDetailItem.map { $0.nickname } - lazy var writtenDiaryObservable = userDetailItem.map { $0.writtenDiary } + lazy var writtenDiaryObservable = userDetailItem.map { $0.diaryCount } private let disposeBag = DisposeBag()