From f31ff106a2d3006dd8124bb8ec34bacd948148f2 Mon Sep 17 00:00:00 2001 From: yeonee Date: Sun, 12 Jul 2026 14:55:04 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20#472=20=EC=95=84=EC=9D=B4=EC=BD=98?= =?UTF-8?q?=20=ED=84=B0=EC=B9=98=20=EC=98=81=EC=97=AD=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Quest/View/CommonQuest/Common/QuestContentView.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Quest/View/CommonQuest/Common/QuestContentView.swift b/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Quest/View/CommonQuest/Common/QuestContentView.swift index 0b2a6991..97b71977 100644 --- a/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Quest/View/CommonQuest/Common/QuestContentView.swift +++ b/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Quest/View/CommonQuest/Common/QuestContentView.swift @@ -64,10 +64,15 @@ final class QuestContentView: BaseView { $0.spacing = 4.adjustedW } } + likeContainerView.do { + let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(likeButtonDidTap)) + $0.addGestureRecognizer(tapRecognizer) + $0.isUserInteractionEnabled = true + } likeButton.do { $0.setImage(.heartOff, for: .normal) $0.setImage(.heartOn, for: .selected) - $0.addTarget(self, action: #selector(likeButtonDidTap), for: .touchUpInside) + $0.isUserInteractionEnabled = false } commentIcon.do { $0.image = .comment From 8cfb72acad6dd1b787232ca4dca7c3d1e9778bfa Mon Sep 17 00:00:00 2001 From: yeonee Date: Sun, 12 Jul 2026 15:42:13 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20#472=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Presentation/Feature/Login/View/LoginView.swift | 4 +++- .../Login/ViewController/LoginViewController.swift | 4 +++- .../Feature/Login/ViewModel/LoginViewModel.swift | 11 ++++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/View/LoginView.swift b/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/View/LoginView.swift index 64427a21..2bdd49dd 100644 --- a/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/View/LoginView.swift +++ b/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/View/LoginView.swift @@ -35,11 +35,13 @@ final class LoginView: BaseView { appleLoginButton.do { $0.setImage(.appleLoginButton, for: .normal) $0.alpha = 0 + $0.isExclusiveTouch = true } - + kakaoLoginButton.do { $0.setImage(.kakaoLoginButton, for: .normal) $0.alpha = 0 + $0.isExclusiveTouch = true } } diff --git a/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/ViewController/LoginViewController.swift b/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/ViewController/LoginViewController.swift index 8ad6c509..fb2b2526 100644 --- a/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/ViewController/LoginViewController.swift +++ b/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/ViewController/LoginViewController.swift @@ -64,12 +64,14 @@ extension LoginViewController{ @objc private func kakaoLoginButtonDidTap() { rootView.kakaoLoginButton.isUserInteractionEnabled = false + rootView.appleLoginButton.isUserInteractionEnabled = false self.platform = .KAKAO viewModel.action(.socialLoginButtonDidTap(platform: .KAKAO)) } - + @objc private func appleLoginButtonDidTap() { + rootView.kakaoLoginButton.isUserInteractionEnabled = false rootView.appleLoginButton.isUserInteractionEnabled = false self.platform = .APPLE viewModel.action(.socialLoginButtonDidTap(platform: .APPLE)) diff --git a/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/ViewModel/LoginViewModel.swift b/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/ViewModel/LoginViewModel.swift index 1c2b74c3..334ee70a 100644 --- a/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/ViewModel/LoginViewModel.swift +++ b/ByeBoo-iOS/ByeBoo-iOS/Presentation/Feature/Login/ViewModel/LoginViewModel.swift @@ -23,7 +23,8 @@ final class LoginViewModel: NSObject { } private var cancellables = Set() - + private var isSocialLoginInProgress = false + private let socialLoginUseCase: SocialLoginUseCase private let getIsRegisteredUseCase: GetIsRegisteredUseCase private let getUserIDUseCase: GetUserIDUseCase @@ -60,7 +61,15 @@ extension LoginViewModel { extension LoginViewModel { private func socialLogin(platform: LoginPlatform) { + guard !isSocialLoginInProgress else { + ByeBooLogger.debug("이미 진행중인 요청 있음") + return + } + isSocialLoginInProgress = true + Task { + defer { isSocialLoginInProgress = false } + do { let _ = try await socialLoginUseCase.execute(platform: platform) socialLoginAuthSubject.send(.success(()))