From 266190968041cd4b6a23b4a343f5d13700e738c8 Mon Sep 17 00:00:00 2001 From: Sangwoo Byeon Date: Thu, 18 Jan 2024 07:06:01 +0900 Subject: [PATCH] =?UTF-8?q?[Network]=20#91=20-=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EB=AC=BC=EC=97=90=20=ED=95=B4=EB=8B=B9=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EB=8B=B5=EA=B8=80=20=EC=A1=B0=ED=9A=8C=20API=20=ED=98=B8?= =?UTF-8?q?=EC=B6=9C=20=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Post/ViewModel/PostViewModel.swift | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/DontBe-iOS/DontBe-iOS/Presentation/Post/ViewModel/PostViewModel.swift b/DontBe-iOS/DontBe-iOS/Presentation/Post/ViewModel/PostViewModel.swift index f82cfdc7..3857737b 100644 --- a/DontBe-iOS/DontBe-iOS/Presentation/Post/ViewModel/PostViewModel.swift +++ b/DontBe-iOS/DontBe-iOS/Presentation/Post/ViewModel/PostViewModel.swift @@ -13,15 +13,19 @@ final class PostViewModel: ViewModelType { private let cancelBag = CancelBag() private let networkProvider: NetworkServiceType private var getPostData = PassthroughSubject() + private var getPostReplyData = PassthroughSubject<[PostReplyResponseDTO], Never>() var postDetailData: [String] = [] + var postReplyData: [PostReplyResponseDTO] = [] struct Input { let viewUpdate: AnyPublisher + let collectionViewUpdata: AnyPublisher } struct Output { let getPostData: PassthroughSubject + let getPostReplyData: PassthroughSubject<[PostReplyResponseDTO], Never> } func transform(from input: Input, cancelBag: CancelBag) -> Output { @@ -42,7 +46,27 @@ final class PostViewModel: ViewModelType { } } .store(in: self.cancelBag) - return Output(getPostData: getPostData) + + input.collectionViewUpdata + .sink { value in + Task { + do { + if let accessToken = KeychainWrapper.loadToken(forKey: "accessToken") { + let postReplyResult = try await + self.getPostReplyDataAPI(accessToken: accessToken, contentId: value) + if let data = postReplyResult?.data { + self.postReplyData = data + self.getPostReplyData.send(data) + } + } + } catch { + print(error) + } + } + } + .store(in: self.cancelBag) + + return Output(getPostData: getPostData, getPostReplyData: getPostReplyData) } init(networkProvider: NetworkServiceType) { @@ -56,11 +80,23 @@ final class PostViewModel: ViewModelType { extension PostViewModel { private func getPostDetailDataAPI(accessToken: String, contentId: Int) async throws -> BaseResponse? { - let accessToken = accessToken do { let result: BaseResponse? = try await self.networkProvider.donNetwork(type: .get, baseURL: Config.baseURL + "/content/\(contentId)/detail", accessToken: accessToken, body: EmptyBody(), pathVariables: ["":""]) - + return result + } catch { + return nil + } + } + + private func getPostReplyDataAPI(accessToken: String, contentId: Int) async throws -> BaseResponse<[PostReplyResponseDTO]>? { + do { + let result: BaseResponse<[PostReplyResponseDTO]>? = try await + self.networkProvider.donNetwork(type: .get, + baseURL: Config.baseURL + "/content/\(contentId)/comment/all", + accessToken: accessToken, + body: EmptyBody(), + pathVariables: ["":""]) return result } catch { return nil