diff --git a/MarketPlace/API/Endpoint/MemberEndPoint.swift b/MarketPlace/API/Endpoint/MemberEndPoint.swift index c0eb0ea..6215d6f 100644 --- a/MarketPlace/API/Endpoint/MemberEndPoint.swift +++ b/MarketPlace/API/Endpoint/MemberEndPoint.swift @@ -12,6 +12,7 @@ enum MemberEndPoint: Endpoint { case signIn(studentId: String, password: String) case fetchFavoriteMarket(lastModifiedAt: String?, pageSize: Int?) case saveAccountNum(account: String, accountNumber: String) + case deleteAccountNum var baseURL: URL { URLManager.shared.baseURL } @@ -21,6 +22,7 @@ enum MemberEndPoint: Endpoint { case .signIn: return "api/members" case .fetchFavoriteMarket: return "api/markets/my-favorite" case .saveAccountNum: return "api/members/account/permit" + case .deleteAccountNum: return "api/members/account/deny" } } @@ -30,7 +32,7 @@ enum MemberEndPoint: Endpoint { .get case .signIn: .post - case .saveAccountNum: + case .saveAccountNum, .deleteAccountNum: .patch } } diff --git a/MarketPlace/Service/MemberService.swift b/MarketPlace/Service/MemberService.swift index 82b63e9..50a2ba8 100644 --- a/MarketPlace/Service/MemberService.swift +++ b/MarketPlace/Service/MemberService.swift @@ -19,14 +19,15 @@ protocol MemberServiceProtocol { // MARK: - 계좌번호 저장 API func saveAccountNum(account: String, accountNumber: String) async -> NetworkResult + + // MARK: - 계좌번호 삭제 API + func deleteAccountNum() async -> NetworkResult } final class MemberService: MemberServiceProtocol { private let networkService: NetworkServiceProtocol - init( - networkService: NetworkServiceProtocol = NetworkService() - ) { + init(networkService: NetworkServiceProtocol = NetworkService()) { self.networkService = networkService } @@ -50,4 +51,9 @@ final class MemberService: MemberServiceProtocol { func saveAccountNum(account: String, accountNumber: String) async -> NetworkResult { return await networkService.request(MemberEndPoint.saveAccountNum(account: account, accountNumber: accountNumber)) } + + // MARK: - 계좌번호 저장 API + func deleteAccountNum() async -> NetworkResult { + return await networkService.request(MemberEndPoint.deleteAccountNum) + } } diff --git a/MarketPlace/View/Login/LoginView.swift b/MarketPlace/View/Login/LoginView.swift index 995adc6..fc93bff 100644 --- a/MarketPlace/View/Login/LoginView.swift +++ b/MarketPlace/View/Login/LoginView.swift @@ -142,7 +142,7 @@ struct LoginView: View { }.disabled(studentID.isEmpty || password.isEmpty) HStack(spacing: 20) { - CheckboxView(title: "계정 정보 저장", isChecked: $saveAccount) + CheckboxView(title: "계정 정보 저장", isChecked: $saveAccount, action: { _ in }) } } .padding(.horizontal, 20) @@ -171,10 +171,12 @@ struct LoginView: View { struct CheckboxView: View { let title: String @Binding var isChecked: Bool + let action: ((Bool) -> Void)? var body: some View { Button(action: { isChecked.toggle() + action?(isChecked) }) { HStack { Image(systemName: isChecked ? "checkmark.square.fill" : "square") diff --git a/MarketPlace/View/Main/View/MainView.swift b/MarketPlace/View/Main/View/MainView.swift index 8c1c119..762e9c5 100644 --- a/MarketPlace/View/Main/View/MainView.swift +++ b/MarketPlace/View/Main/View/MainView.swift @@ -7,8 +7,6 @@ struct MainView: View { @StateObject var viewModel = MainViewModel() @EnvironmentObject var loginVM: LoginViewModel - @State private var isFullNoticePopUpVisible: Bool = true - var body: some View { NavigationStack { ZStack { @@ -50,11 +48,6 @@ struct MainView: View { } .background(Color.white) .edgesIgnoringSafeArea(.bottom) - - if isFullNoticePopUpVisible { - FullNoticePopUp(isPopupVisible: $isFullNoticePopUpVisible) - .transition(.scale) - } } .task { await viewModel.fetchCouponTopLatest(pageSize: nil) diff --git a/MarketPlace/View/MyPage/View/RegisterReceiptView.swift b/MarketPlace/View/MyPage/View/RegisterReceiptView.swift index 68d3066..0067a86 100644 --- a/MarketPlace/View/MyPage/View/RegisterReceiptView.swift +++ b/MarketPlace/View/MyPage/View/RegisterReceiptView.swift @@ -88,7 +88,13 @@ struct RegisterReceiptView: View { ) }.padding(.bottom, 10) - CheckboxView(title: "계좌번호 저장", isChecked: $isAccountSaved) + CheckboxView(title: "계좌번호 저장", isChecked: $isAccountSaved) { saveAccount in + if !saveAccount { + Task { + await viewModel.deleteAccountNum() + } + } + } Button(action: { // - 계좌번호 임시저장 diff --git a/MarketPlace/ViewModel/MyPage/SubmitReceiptViewModel.swift b/MarketPlace/ViewModel/MyPage/SubmitReceiptViewModel.swift index 8d98faa..65403c5 100644 --- a/MarketPlace/ViewModel/MyPage/SubmitReceiptViewModel.swift +++ b/MarketPlace/ViewModel/MyPage/SubmitReceiptViewModel.swift @@ -53,4 +53,16 @@ final class SubmitReceiptViewModel: ObservableObject { print("[saveAccountNum] - [\(statusCode)]: \(message ?? "알 수 없는 오류")") } } + + // MARK: - 계좌번호 삭제 API + func deleteAccountNum() async { + let result = await memberService.deleteAccountNum() + + switch result { + case .success(let data, let statusCode): + print(data.message) + case .failure(let statusCode, let message): + print("[deleteAccountNum] - [\(statusCode)]: \(message ?? "알 수 없는 오류")") + } + } }