From f396d3f0e39282f0033f3f401e07022ddddac078 Mon Sep 17 00:00:00 2001 From: Sejin Lee <lsj8706@naver.com> Date: Tue, 18 Apr 2023 23:58:06 +0900 Subject: [PATCH] =?UTF-8?q?[Feat]=20#179=20-=20=ED=94=8C=EA=B7=B8=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EB=93=B1=EB=A1=9D=20Alert=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Projects/Core/Sources/Enum/UserType.swift | 4 ++-- .../Sources/Literals/StringLiterals.swift | 2 ++ .../Sources/MainScene/VC/MainVC.swift | 23 ++++++++++++++++++- .../MainScene/ViewModel/MainViewModel.swift | 8 ++++--- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/SOPT-iOS/Projects/Core/Sources/Enum/UserType.swift b/SOPT-iOS/Projects/Core/Sources/Enum/UserType.swift index f9dd2b9c5..e23de015e 100644 --- a/SOPT-iOS/Projects/Core/Sources/Enum/UserType.swift +++ b/SOPT-iOS/Projects/Core/Sources/Enum/UserType.swift @@ -9,10 +9,10 @@ import Foundation public enum UserType: String { - case visitor = "VISITOR" // 비회원 + case visitor = "UNAUTHENTICATED" // 비회원 case active = "ACTIVE" // 활동 회원 case inactive = "INACTIVE" // 비활동 회원 - case unregisteredInactive // 비활동 회원 + 플그 프로필 미등록 + case unregisteredInactive = "UNREGISTERED" // 비활동 회원 + 플그 프로필 미등록 public func makeDescription(recentHistory: Int) -> String { switch self { diff --git a/SOPT-iOS/Projects/Core/Sources/Literals/StringLiterals.swift b/SOPT-iOS/Projects/Core/Sources/Literals/StringLiterals.swift index 6b0944d5c..806b3464b 100644 --- a/SOPT-iOS/Projects/Core/Sources/Literals/StringLiterals.swift +++ b/SOPT-iOS/Projects/Core/Sources/Literals/StringLiterals.swift @@ -151,6 +151,8 @@ public struct I18N { public static let encourage = "안녕하세요, \nSOPT의 열정이 되어주세요!" public static let hello = "안녕하세요" public static let welcome = "안녕하세요, \nSOPT에 오신 것을 환영합니다!" + public static let failedToGetUserInfo = "활동 정보를 가져올 수 없어요." + public static let needToRegisterPlayground = "플레이그라운드에서 프로필을 업데이트하면\n 서비스를 원활하게 사용할 수 있어요." public static func userHistory(name: String, months: String) -> String { return "\(name) 님은 \nSOPT와 \(months)개월째" diff --git a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/VC/MainVC.swift b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/VC/MainVC.swift index 311045d49..b53c97c2e 100644 --- a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/VC/MainVC.swift +++ b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/VC/MainVC.swift @@ -109,11 +109,19 @@ extension MainVC { } self?.collectionView.reloadData() }.store(in: self.cancelBag) - + output.isServiceAvailable .sink { isServiceAvailable in print("현재 앱 서비스 사용 가능(심사 X)?: \(isServiceAvailable)") }.store(in: self.cancelBag) + + // 플그 프로필 미등록 유저 알림 + output.needPlaygroundProfileRegistration + .sink { [weak self] needRegistration in + if needRegistration { + self?.presentPlaygroundRegisterationAlertVC() + } + }.store(in: self.cancelBag) } private func bindViews() { @@ -174,6 +182,19 @@ extension MainVC { self.present(networkAlertVC, animated: false) } + + private func presentPlaygroundRegisterationAlertVC() { + let alertVC = self.factory.makeAlertVC( + type: .networkErr, + theme: .main, + title: I18N.Main.failedToGetUserInfo, + description: I18N.Main.needToRegisterPlayground, + customButtonTitle: "", + customAction: nil) + .viewController + + self.present(alertVC, animated: false) + } } // MARK: - UICollectionViewDelegate diff --git a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/ViewModel/MainViewModel.swift b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/ViewModel/MainViewModel.swift index a80669852..f51d60a33 100644 --- a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/ViewModel/MainViewModel.swift +++ b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/ViewModel/MainViewModel.swift @@ -70,10 +70,12 @@ extension MainViewModel { private func bindOutput(output: Output, cancelBag: CancelBag) { useCase.userMainInfo.asDriver() .sink { [weak self] userMainInfo in - self?.userMainInfo = userMainInfo - self?.userType = userMainInfo?.userType ?? .unregisteredInactive + guard let self = self else { return } + self.userMainInfo = userMainInfo + self.userType = userMainInfo?.userType ?? .unregisteredInactive + self.setServiceList(with: self.userType) output.getUserMainInfoDidComplete.send() - if self?.userType == .unregisteredInactive { + if self.userType == .unregisteredInactive { output.needPlaygroundProfileRegistration.send(true) } }.store(in: self.cancelBag)