From d4f77771fd47e6fff8b313c3d1807d1b78a1699a Mon Sep 17 00:00:00 2001 From: blwxnhan Date: Wed, 3 Dec 2025 14:59:58 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Fix]=20=EB=A7=A4=EC=9E=A5=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20API=20DTO=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MarketPlace/Model/Market/MarketSearchModel.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MarketPlace/Model/Market/MarketSearchModel.swift b/MarketPlace/Model/Market/MarketSearchModel.swift index da36865..61be03f 100644 --- a/MarketPlace/Model/Market/MarketSearchModel.swift +++ b/MarketPlace/Model/Market/MarketSearchModel.swift @@ -14,6 +14,9 @@ struct MarketSearchModel: Identifiable, Codable { var address: String var thumbnail: String var isNewCoupon: Bool + var isClosingCoupon: Bool + var major: String + var orderNo: Int? var id: Int { return marketId } } From 722917ae1de4a1b6276dd6cd5ef57500c4d00036 Mon Sep 17 00:00:00 2001 From: blwxnhan Date: Wed, 3 Dec 2025 15:50:55 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Fix]=20=EB=A7=A4=EC=9E=A5=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20API=20=ED=8E=98=EC=9D=B4=EC=A7=95=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MarketPlace/View/Search/View/SearchSecondView.swift | 7 ++++++- MarketPlace/View/Search/View/SearchView.swift | 7 ++++--- MarketPlace/ViewModel/Search/SearchMarketViewModel.swift | 5 ++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/MarketPlace/View/Search/View/SearchSecondView.swift b/MarketPlace/View/Search/View/SearchSecondView.swift index d9c6b90..aa56126 100644 --- a/MarketPlace/View/Search/View/SearchSecondView.swift +++ b/MarketPlace/View/Search/View/SearchSecondView.swift @@ -10,6 +10,7 @@ import SwiftUI struct SearchSecondView: View { @ObservedObject var viewModel: SearchMarketViewModel @Binding var lastIndex: Int + @Binding var lastPageID: Int var body: some View { ScrollView { @@ -24,8 +25,12 @@ struct SearchSecondView: View { } } .onAppear { - guard index == viewModel.market.count - 1 else { return } + guard index == viewModel.market.count - 1, + let lastPageIndex = viewModel.lastPageIndex + else { return } + lastIndex = index + lastPageID = lastPageIndex } } }.padding() diff --git a/MarketPlace/View/Search/View/SearchView.swift b/MarketPlace/View/Search/View/SearchView.swift index 23aed9a..0fc5702 100644 --- a/MarketPlace/View/Search/View/SearchView.swift +++ b/MarketPlace/View/Search/View/SearchView.swift @@ -31,6 +31,7 @@ struct SearchView: View { @State private var hasData: Bool = true @State var lastIndex: Int = 0 + @State var lastPageID: Int = 0 var body: some View { VStack(spacing: 0) { @@ -64,7 +65,7 @@ struct SearchView: View { } else { if hasData { - SearchSecondView(viewModel: viewModel, lastIndex: $lastIndex) + SearchSecondView(viewModel: viewModel, lastIndex: $lastIndex, lastPageID: $lastPageID) .padding(.top, 20) } else{ @@ -87,12 +88,12 @@ struct SearchView: View { } .onChange(of: lastIndex, { _, newValue in Task { - hasData = await viewModel.fetchMarkets(lastPageIndex: lastIndex, keyword: viewModel.currentKeyword) + hasData = await viewModel.fetchSearchingMarkets(lastPageIndex: lastPageID, keyword: viewModel.currentKeyword) } }) .onChange(of: viewModel.searchText) { _, newValue in Task { - hasData = await viewModel.fetchMarkets(keyword: newValue) + hasData = await viewModel.fetchSearchingMarkets(keyword: newValue) viewModel.currentKeyword = newValue } diff --git a/MarketPlace/ViewModel/Search/SearchMarketViewModel.swift b/MarketPlace/ViewModel/Search/SearchMarketViewModel.swift index c47d724..d9b76f8 100644 --- a/MarketPlace/ViewModel/Search/SearchMarketViewModel.swift +++ b/MarketPlace/ViewModel/Search/SearchMarketViewModel.swift @@ -58,7 +58,7 @@ final class SearchMarketViewModel: ObservableObject { // MARK: - 검색 결과 불러오는 메서드 @MainActor - func fetchMarkets( + func fetchSearchingMarkets( lastPageIndex: Int? = nil, pageSize: Int? = nil, keyword: String @@ -70,7 +70,7 @@ final class SearchMarketViewModel: ObservableObject { hasNextPage = true } - guard !isLoading, hasNextPage else { return false } + guard !isLoading, hasNextPage else { return hasData } isLoading = true @@ -95,7 +95,6 @@ final class SearchMarketViewModel: ObservableObject { self.hasNextPage = data.response.hasNext currentPage += 1 -// self.market = data.response.marketResDtos if market.isEmpty { hasData = false }