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)