From 22dc16bcd34ee3e6af456cc10806e2a70d436632 Mon Sep 17 00:00:00 2001 From: Sejin Lee Date: Tue, 18 Apr 2023 22:51:46 +0900 Subject: [PATCH] =?UTF-8?q?[Feat]=20#179=20-=20=ED=94=8C=EA=B7=B8=20?= =?UTF-8?q?=EB=AF=B8=EB=93=B1=EB=A1=9D=20=EC=9C=A0=EC=A0=80=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=EC=9D=91=ED=95=98=EB=8A=94=20UserType=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20(unregisteredInactive)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Projects/Core/Sources/Enum/UserType.swift | 11 +++++++---- .../Domain/Sources/Model/UserMainInfoModel.swift | 15 +++++++++++++++ .../Domain/Sources/UseCase/MainUseCase.swift | 12 ++++++++++++ .../AppMypageScene/AppMyPageViewController.swift | 2 +- .../Cells/UsersHistory/UserHistoryCVC.swift | 2 +- .../UsersHistory/UserHistoryHeaderView.swift | 2 +- .../MainScene/ViewModel/MainViewModel.swift | 7 ++++++- 7 files changed, 43 insertions(+), 8 deletions(-) diff --git a/SOPT-iOS/Projects/Core/Sources/Enum/UserType.swift b/SOPT-iOS/Projects/Core/Sources/Enum/UserType.swift index 2c7d4b859..f9dd2b9c5 100644 --- a/SOPT-iOS/Projects/Core/Sources/Enum/UserType.swift +++ b/SOPT-iOS/Projects/Core/Sources/Enum/UserType.swift @@ -8,10 +8,11 @@ import Foundation -public enum UserType { - case visitor // 비회원 - case active // 활동 회원 - case inactive // 비활동 회원 +public enum UserType: String { + case visitor = "VISITOR" // 비회원 + case active = "ACTIVE" // 활동 회원 + case inactive = "INACTIVE" // 비활동 회원 + case unregisteredInactive // 비활동 회원 + 플그 프로필 미등록 public func makeDescription(recentHistory: Int) -> String { switch self { @@ -21,6 +22,8 @@ public enum UserType { return "\(recentHistory)\(I18N.Main.active)" case .inactive: return "\(recentHistory)\(I18N.Main.inactive)" + case .unregisteredInactive: + return I18N.Main.inactiveMember } } } diff --git a/SOPT-iOS/Projects/Domain/Sources/Model/UserMainInfoModel.swift b/SOPT-iOS/Projects/Domain/Sources/Model/UserMainInfoModel.swift index cdae37cb7..2730bdddc 100644 --- a/SOPT-iOS/Projects/Domain/Sources/Model/UserMainInfoModel.swift +++ b/SOPT-iOS/Projects/Domain/Sources/Model/UserMainInfoModel.swift @@ -8,6 +8,8 @@ import Foundation +import Core + public struct UserMainInfoModel { public let status, name: String public let profileImage: String? @@ -17,6 +19,19 @@ public struct UserMainInfoModel { public let responseMessage: String? public var withError: Bool = false + public var userType: UserType { + switch status { + case "": // 플그 미등록인 경우 + return .unregisteredInactive + case UserType.active.rawValue: + return .active + case UserType.inactive.rawValue: + return .inactive + default: + return .visitor + } + } + public init(status: String, name: String, profileImage: String?, historyList: [Int], attendanceScore: Float?, announcement: String?, responseMessage: String?) { self.status = status self.name = name diff --git a/SOPT-iOS/Projects/Domain/Sources/UseCase/MainUseCase.swift b/SOPT-iOS/Projects/Domain/Sources/UseCase/MainUseCase.swift index dc61cbd79..61739519d 100644 --- a/SOPT-iOS/Projects/Domain/Sources/UseCase/MainUseCase.swift +++ b/SOPT-iOS/Projects/Domain/Sources/UseCase/MainUseCase.swift @@ -37,6 +37,7 @@ extension DefaultMainUseCase: MainUseCase { .sink { event in print("MainUseCase: \(event)") } receiveValue: { [weak self] userMainInfoModel in + self?.setUserType(with: userMainInfoModel?.userType) self?.userMainInfo.send(userMainInfoModel) }.store(in: self.cancelBag) } @@ -49,4 +50,15 @@ extension DefaultMainUseCase: MainUseCase { self?.serviceState.send(serviceStateModel) }.store(in: self.cancelBag) } + + private func setUserType(with userType: UserType?) { + switch userType { + case .none, .unregisteredInactive, .inactive: // nil인 경우도 플그 미등록 유저로 취급 + UserDefaultKeyList.Auth.isActiveUser = false + case .active: + UserDefaultKeyList.Auth.isActiveUser = true + default: + UserDefaultKeyList.Auth.isActiveUser = false + } + } } diff --git a/SOPT-iOS/Projects/Features/AppMyPageFeature/Sources/AppMypageScene/AppMyPageViewController.swift b/SOPT-iOS/Projects/Features/AppMyPageFeature/Sources/AppMypageScene/AppMyPageViewController.swift index c87796439..1abc70f10 100644 --- a/SOPT-iOS/Projects/Features/AppMyPageFeature/Sources/AppMypageScene/AppMyPageViewController.swift +++ b/SOPT-iOS/Projects/Features/AppMyPageFeature/Sources/AppMypageScene/AppMyPageViewController.swift @@ -182,7 +182,7 @@ extension AppMyPageVC { self.soptampSectionGroup, self.etcSectionGroup ) - case .visitor: + case .visitor, .unregisteredInactive: self.contentStackView.addArrangedSubviews( self.servicePolicySectionGroup, self.etcForVisitorsSectionGroup diff --git a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/Cells/UsersHistory/UserHistoryCVC.swift b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/Cells/UsersHistory/UserHistoryCVC.swift index 2699d88f6..8dafb08c9 100644 --- a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/Cells/UsersHistory/UserHistoryCVC.swift +++ b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/Cells/UsersHistory/UserHistoryCVC.swift @@ -95,7 +95,7 @@ extension UserHistoryCVC { } // 플그에 기수 정보 입력 안한 비활동 회원 대응 (추후 제거) - if userType == .inactive { + if userType == .inactive || userType == .unregisteredInactive { if allHistory == nil { self.userTypeLabel.text = I18N.Main.inactiveMember } diff --git a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/Cells/UsersHistory/UserHistoryHeaderView.swift b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/Cells/UsersHistory/UserHistoryHeaderView.swift index 3d7e61ed8..a60eeb8ef 100644 --- a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/Cells/UsersHistory/UserHistoryHeaderView.swift +++ b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/Cells/UsersHistory/UserHistoryHeaderView.swift @@ -62,7 +62,7 @@ extension UserHistoryHeaderView { if userType == .visitor { let text = I18N.Main.encourage setAttributedTextToUserInfoLabel(text: text, name: nil) - } else if userType == .inactive { + } else if userType == .inactive || userType == .unregisteredInactive { let text = I18N.Main.welcome setAttributedTextToUserInfoLabel(text: text, name: nil) } 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 535137118..a80669852 100644 --- a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/ViewModel/MainViewModel.swift +++ b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/ViewModel/MainViewModel.swift @@ -36,6 +36,7 @@ public class MainViewModel: ViewModelType { public struct Output { var getUserMainInfoDidComplete = PassthroughSubject() var isServiceAvailable = PassthroughSubject() + var needPlaygroundProfileRegistration = PassthroughSubject() } // MARK: - init @@ -70,7 +71,11 @@ extension MainViewModel { useCase.userMainInfo.asDriver() .sink { [weak self] userMainInfo in self?.userMainInfo = userMainInfo + self?.userType = userMainInfo?.userType ?? .unregisteredInactive output.getUserMainInfoDidComplete.send() + if self?.userType == .unregisteredInactive { + output.needPlaygroundProfileRegistration.send(true) + } }.store(in: self.cancelBag) useCase.serviceState.asDriver() @@ -88,7 +93,7 @@ extension MainViewModel { case .active: self.mainServiceList = [.attendance, .member, .project] self.otherServiceList = [.officialHomepage, .crew] - case .inactive: + case .inactive, .unregisteredInactive: self.mainServiceList = [.faq, .member, .project] self.otherServiceList = [.crew, .officialHomepage] }