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 + } +}