From 2e66c3f79b84ed395c59b776845769a195512e8f Mon Sep 17 00:00:00 2001 From: yungu0010 Date: Fri, 27 Sep 2024 09:33:03 +0900 Subject: [PATCH] =?UTF-8?q?[Feat]=20#388=20-=20DailySoptuneMain=20?= =?UTF-8?q?=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EB=B0=8F=20?= =?UTF-8?q?=EB=B7=B0=EB=AA=A8=EB=8D=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DailySoptuneFeatureBuildable.swift | 1 + .../Sources/DailySoptuneMainPresentable.swift | 17 ++++++++ .../Coordinator/DailySoptuneBuilder.swift | 6 +++ .../VC/DailySoptuneMainVC.swift | 22 +++++++++- .../ViewModel/DailySoptuneMainViewModel.swift | 40 +++++++++++++++++++ 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 SOPT-iOS/Projects/Features/DailySoptuneFeature/Interface/Sources/DailySoptuneMainPresentable.swift create mode 100644 SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/DailySoptuneScene/ViewModel/DailySoptuneMainViewModel.swift diff --git a/SOPT-iOS/Projects/Features/DailySoptuneFeature/Interface/Sources/DailySoptuneFeatureBuildable.swift b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Interface/Sources/DailySoptuneFeatureBuildable.swift index b9cc769d..cd097db3 100644 --- a/SOPT-iOS/Projects/Features/DailySoptuneFeature/Interface/Sources/DailySoptuneFeatureBuildable.swift +++ b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Interface/Sources/DailySoptuneFeatureBuildable.swift @@ -12,4 +12,5 @@ import Domain public protocol DailySoptuneFeatureBuildable { func makeDailySoptuneResultVC() -> DailySoptuneResultViewControllable + func makeDailySoptuneMainVc() -> DailySoptuneMainViewControllable } diff --git a/SOPT-iOS/Projects/Features/DailySoptuneFeature/Interface/Sources/DailySoptuneMainPresentable.swift b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Interface/Sources/DailySoptuneMainPresentable.swift new file mode 100644 index 00000000..02744dca --- /dev/null +++ b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Interface/Sources/DailySoptuneMainPresentable.swift @@ -0,0 +1,17 @@ +// +// DailySoptuneMainPresentable.swift +// DailySoptuneFeatureInterface +// +// Created by 강윤서 on 9/26/24. +// Copyright © 2024 SOPT-iOS. All rights reserved. +// + +import BaseFeatureDependency +import Core + +public protocol DailySoptuneMainViewControllable: ViewControllable {} + +public protocol DailySoptuneMainCoordinatable {} + +public typealias DailySoptuneMainViewModelType = ViewModelType & DailySoptuneMainCoordinatable +public typealias DailySoptuneMainPresentable = (vc: DailySoptuneMainViewControllable, vm: any DailySoptuneMainViewModelType) diff --git a/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/Coordinator/DailySoptuneBuilder.swift b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/Coordinator/DailySoptuneBuilder.swift index 47084fa9..ccd3d6ae 100644 --- a/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/Coordinator/DailySoptuneBuilder.swift +++ b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/Coordinator/DailySoptuneBuilder.swift @@ -20,4 +20,10 @@ extension DailySoptuneBuilder: DailySoptuneFeatureBuildable { let dailySoptuneResultVC = DailySoptuneResultVC(viewModel: viewModel) return dailySoptuneResultVC } + + public func makeDailySoptuneMainVc() -> DailySoptuneMainViewControllable { + let viewModel = DailySoptuneMainViewModel() + let dailySoptuneMainVC = DailySoptuneMainVC(viewModel: viewModel) + return dailySoptuneMainVC + } } diff --git a/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/DailySoptuneScene/VC/DailySoptuneMainVC.swift b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/DailySoptuneScene/VC/DailySoptuneMainVC.swift index 9bd06a93..2350bc3d 100644 --- a/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/DailySoptuneScene/VC/DailySoptuneMainVC.swift +++ b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/DailySoptuneScene/VC/DailySoptuneMainVC.swift @@ -15,8 +15,15 @@ import DSKit import SnapKit import Then -public final class DailySoptuneMainVC: UIViewController { +import BaseFeatureDependency +public final class DailySoptuneMainVC: UIViewController, DailySoptuneMainViewControllable { + + // MARK: - Properties + + public var viewModel: DailySoptuneMainViewModel + private var cancelBag = CancelBag() + // MARK: - UI Components private let backButton = UIButton().then { @@ -46,6 +53,19 @@ public final class DailySoptuneMainVC: UIViewController { private let checkTodayFortuneButton = AppCustomButton(title: I18N.DailySoptune.checkTodayFortune) .setFontColor(customFont: DSKitFontFamily.Suit.semiBold.font(size: 18)) + // MARK: - Initialization + + public init(viewModel: DailySoptuneMainViewModel) { + self.viewModel = viewModel + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - View Life Cycle + public override func viewDidLoad() { super.viewDidLoad() diff --git a/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/DailySoptuneScene/ViewModel/DailySoptuneMainViewModel.swift b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/DailySoptuneScene/ViewModel/DailySoptuneMainViewModel.swift new file mode 100644 index 00000000..7e003a5f --- /dev/null +++ b/SOPT-iOS/Projects/Features/DailySoptuneFeature/Sources/DailySoptuneScene/ViewModel/DailySoptuneMainViewModel.swift @@ -0,0 +1,40 @@ +// +// DailySoptuneMainViewModel.swift +// DailySoptuneFeatureInterface +// +// Created by 강윤서 on 9/26/24. +// Copyright © 2024 SOPT-iOS. All rights reserved. +// + +import Foundation +import Core + +public class DailySoptuneMainViewModel: DailySoptuneMainViewModelType { + + // MARK: - Properties + + private var cancelBag = CancelBag() + + // MARK: - Inputs + + public struct Input { + } + + // MARK: - Outputs + + public struct Output { + } + + // MARK: - Initialization + + public init() { + + } +} + +extension DailySoptuneMainViewModel { + public func transform(from input: Input, cancelBag: CancelBag) -> Output { + let output = Output() + return output + } +}