From 8ef4313be5c48ecddc7611c9743bbcfb554b23fc Mon Sep 17 00:00:00 2001 From: Ian Date: Mon, 17 Apr 2023 20:09:44 +0900 Subject: [PATCH] =?UTF-8?q?[Feat]=20#174=20-=20=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=B7=B0=20=ED=99=94=EB=A9=B4=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/Sources/Enum/ServiceType.swift | 14 ++++++++ .../Sources/SignInScene/VC/SignInVC.swift | 15 ++++++--- .../Sources/MainScene/VC/MainVC.swift | 32 ++++++++++++++++--- 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/SOPT-iOS/Projects/Core/Sources/Enum/ServiceType.swift b/SOPT-iOS/Projects/Core/Sources/Enum/ServiceType.swift index 22a1b5dc0..ef2b4cf9a 100644 --- a/SOPT-iOS/Projects/Core/Sources/Enum/ServiceType.swift +++ b/SOPT-iOS/Projects/Core/Sources/Enum/ServiceType.swift @@ -18,6 +18,20 @@ public enum ServiceType { case member case notice case crew + + public var serviceDomainLink: String { + switch self { + case .officialHomepage: return "https://sopt.org" + case .review: return "https://sopt.org/review" + case .project: return "https://playground.sopt.org/projects" + case .faq: return "https://sopt.org/FAQ" + case .youtube: return "https://m.youtube.com/@SOPTMEDIA" + case .attendance: return "" + case .member: return "https://playground.sopt.org/members" + case .notice: return "" + case .crew: return "https://playground.sopt.org/group" + } + } } public enum AppServiceType { diff --git a/SOPT-iOS/Projects/Features/AuthFeature/Sources/SignInScene/VC/SignInVC.swift b/SOPT-iOS/Projects/Features/AuthFeature/Sources/SignInScene/VC/SignInVC.swift index e3363ef77..408391079 100644 --- a/SOPT-iOS/Projects/Features/AuthFeature/Sources/SignInScene/VC/SignInVC.swift +++ b/SOPT-iOS/Projects/Features/AuthFeature/Sources/SignInScene/VC/SignInVC.swift @@ -14,6 +14,7 @@ import Core import Domain +import SafariServices import Combine import SnapKit import Then @@ -213,9 +214,15 @@ extension SignInVC { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyyMMddHHmmss" let state = dateFormatter.string(from: Date()) - UserDefaultKeyList.Auth.requestState = state - openExternalLink(urlStr: ExternalURL.Playground.login(state: state)) { - print("플레이그라운드 Open URL") - } + + UserDefaultKeyList.Auth.requestState = state + let safariviewController = SFSafariViewController(url: URL(string: ExternalURL.Playground.login(state: state))!) + safariviewController.modalPresentationStyle = .formSheet + self.present(safariviewController, animated: true) +// +// UserDefaultKeyList.Auth.requestState = state +// openExternalLink(urlStr: ExternalURL.Playground.login(state: state)) { +// print("플레이그라운드 Open URL") +// } } } 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 c6aa8b081..db89f9d75 100644 --- a/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/VC/MainVC.swift +++ b/SOPT-iOS/Projects/Features/MainFeature/Sources/MainScene/VC/MainVC.swift @@ -7,6 +7,7 @@ // import UIKit +import SafariServices import Core import Domain @@ -21,12 +22,14 @@ import MainFeatureInterface import StampFeatureInterface import SettingFeatureInterface import AppMyPageFeatureInterface +import AttendanceFeatureInterface public class MainVC: UIViewController, MainViewControllable { public typealias factoryType = AuthFeatureViewBuildable & StampFeatureViewBuildable & SettingFeatureViewBuildable & AppMyPageFeatureViewBuildable + & AttendanceFeatureViewBuildable // MARK: - Properties @@ -163,10 +166,31 @@ extension MainVC { extension MainVC: UICollectionViewDelegate { public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - if indexPath.section == 3 { - guard viewModel.userType != .visitor else { return } - presentSoptampFeature() - } + switch (indexPath.section, indexPath.row) { + case (0, _): break + case (1, _): + guard let service = viewModel.mainServiceList[safe: indexPath.item - 1] else { return } + + guard service != .attendance else { + let viewController = factory.makeShowAttendanceVC().viewController + self.navigationController?.pushViewController(viewController, animated: true) + return + } + + let safariViewController = SFSafariViewController(url: URL(string: service.serviceDomainLink)!) + self.present(safariViewController, animated: true) + + case (2, _): + guard let service = viewModel.otherServiceList[safe: indexPath.item] else { return } + + let safariViewController = SFSafariViewController(url: URL(string: service.serviceDomainLink)!) + self.present(safariViewController, animated: true) + case(3, _): + guard viewModel.userType != .visitor else { return } + + presentSoptampFeature() + default: break + } } }