diff --git a/Projects/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/Projects/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json
deleted file mode 100644
index eb87897..0000000
--- a/Projects/App/Resources/Assets.xcassets/AccentColor.colorset/Contents.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "colors" : [
- {
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 9221b9b..0000000
--- a/Projects/App/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "20x20"
- },
- {
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "20x20"
- },
- {
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "29x29"
- },
- {
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "29x29"
- },
- {
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "40x40"
- },
- {
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "40x40"
- },
- {
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "60x60"
- },
- {
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "60x60"
- },
- {
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "20x20"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "20x20"
- },
- {
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "29x29"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "29x29"
- },
- {
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "40x40"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "40x40"
- },
- {
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "76x76"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "76x76"
- },
- {
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "83.5x83.5"
- },
- {
- "idiom" : "ios-marketing",
- "scale" : "1x",
- "size" : "1024x1024"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/Projects/App/Resources/Assets.xcassets/Contents.json b/Projects/App/Resources/Assets.xcassets/Contents.json
deleted file mode 100644
index 73c0059..0000000
--- a/Projects/App/Resources/Assets.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/Projects/App/Sources/AppDelegate.swift b/Projects/App/Sources/AppDelegate.swift
index b28704c..4bab84f 100644
--- a/Projects/App/Sources/AppDelegate.swift
+++ b/Projects/App/Sources/AppDelegate.swift
@@ -5,7 +5,6 @@ import Then
import Presentation
import Domain
import Core
-import DesignSystem
@main
final class AppDelegate: UIResponder, UIApplicationDelegate {
diff --git a/Projects/Core/Sources/Steps/Tabs/ChatStep.swift b/Projects/Core/Sources/Steps/Tabs/ChatStep.swift
new file mode 100644
index 0000000..8b7b250
--- /dev/null
+++ b/Projects/Core/Sources/Steps/Tabs/ChatStep.swift
@@ -0,0 +1,5 @@
+import RxFlow
+
+public enum ChatStep: Step {
+ case chatIsRequired
+}
diff --git a/Projects/Core/Sources/Steps/Tabs/FriendsStep.swift b/Projects/Core/Sources/Steps/Tabs/FriendsStep.swift
new file mode 100644
index 0000000..25d9e47
--- /dev/null
+++ b/Projects/Core/Sources/Steps/Tabs/FriendsStep.swift
@@ -0,0 +1,5 @@
+import RxFlow
+
+public enum FriendsStep: Step {
+ case friendsIsRequired
+}
diff --git a/Projects/Core/Sources/Steps/Tabs/MyPageStep.swift b/Projects/Core/Sources/Steps/Tabs/MyPageStep.swift
new file mode 100644
index 0000000..5324db2
--- /dev/null
+++ b/Projects/Core/Sources/Steps/Tabs/MyPageStep.swift
@@ -0,0 +1,5 @@
+import RxFlow
+
+public enum MyPageStep: Step {
+ case myPageIsRequired
+}
diff --git a/Projects/Core/Sources/Steps/Tabs/StoreStep.swift b/Projects/Core/Sources/Steps/Tabs/StoreStep.swift
new file mode 100644
index 0000000..0914df4
--- /dev/null
+++ b/Projects/Core/Sources/Steps/Tabs/StoreStep.swift
@@ -0,0 +1,5 @@
+import RxFlow
+
+public enum StoreStep: Step {
+ case storeIsRequired
+}
diff --git a/Projects/Flow/Sources/AppFlow.swift b/Projects/Flow/Sources/AppFlow.swift
index cc67c6b..5c6448a 100644
--- a/Projects/Flow/Sources/AppFlow.swift
+++ b/Projects/Flow/Sources/AppFlow.swift
@@ -65,18 +65,17 @@ private extension AppFlow {
}
func navigationToTab() -> FlowContributors {
- let mainViewController = container.resolve(MainViewController.self)!
- UIView.transition(
- with: self.window,
- duration: 0.5,
- options: .transitionCrossDissolve
- ) {
- self.window.rootViewController = mainViewController
+ let tabsFlow = TabsFlow(container: container)
+ Flows.use(
+ tabsFlow,
+ when: .created
+ ) { [weak self] root in
+ self?.window.rootViewController = root
}
-
return .one(flowContributor: .contribute(
- withNextPresentable: mainViewController,
- withNextStepper: mainViewController.reactor
- ))
+ withNextPresentable: tabsFlow,
+ withNextStepper: OneStepper(withSingleStep: AppStep.tabIsRequired)
+ )
+ )
}
}
diff --git a/Projects/Flow/Sources/ChatFlow.swift b/Projects/Flow/Sources/ChatFlow.swift
new file mode 100644
index 0000000..fe62b30
--- /dev/null
+++ b/Projects/Flow/Sources/ChatFlow.swift
@@ -0,0 +1,39 @@
+import UIKit
+import RxFlow
+import RxSwift
+import Core
+import Swinject
+import Presentation
+
+public final class ChatFlow: Flow {
+
+ public let container: Container
+ private let rootViewController = BaseNavigationController()
+
+ public var root: Presentable {
+ return rootViewController
+ }
+
+ init(container: Container) {
+ self.container = container
+ }
+
+ public func navigate(to step: RxFlow.Step) -> RxFlow.FlowContributors {
+ guard let step = step as? ChatStep else { return .none }
+ switch step {
+ case .chatIsRequired:
+ return navigateToChat()
+ }
+ }
+}
+
+extension ChatFlow {
+ private func navigateToChat() -> FlowContributors {
+ let chatViewController = container.resolve(ChatViewController.self)!
+ self.rootViewController.pushViewController(chatViewController, animated: false)
+ return .one(flowContributor: .contribute(
+ withNextPresentable: chatViewController,
+ withNextStepper: chatViewController.reactor
+ ))
+ }
+}
diff --git a/Projects/Flow/Sources/FriendsFlow.swift b/Projects/Flow/Sources/FriendsFlow.swift
new file mode 100644
index 0000000..b2d674d
--- /dev/null
+++ b/Projects/Flow/Sources/FriendsFlow.swift
@@ -0,0 +1,40 @@
+import UIKit
+import RxFlow
+import RxSwift
+import Core
+import Swinject
+import Presentation
+
+public final class FriendsFlow: Flow {
+
+ public let container: Container
+ private let rootViewController = BaseNavigationController()
+
+ public var root: Presentable {
+ return rootViewController
+ }
+
+ init(container: Container) {
+ self.container = container
+ }
+
+ public func navigate(to step: RxFlow.Step) -> RxFlow.FlowContributors {
+ guard let step = step as? FriendsStep else { return .none }
+ switch step {
+ case .friendsIsRequired:
+ return navigateToFriends()
+ }
+ }
+}
+
+extension FriendsFlow {
+ private func navigateToFriends() -> FlowContributors {
+ let friendsViewController = container.resolve(FriendsViewController.self)!
+ self.rootViewController.pushViewController(friendsViewController, animated: false)
+ return .one(flowContributor: .contribute(
+ withNextPresentable: friendsViewController,
+ withNextStepper: friendsViewController.reactor
+ ))
+ }
+
+}
diff --git a/Projects/Flow/Sources/MyPageFlow.swift b/Projects/Flow/Sources/MyPageFlow.swift
new file mode 100644
index 0000000..330dbe4
--- /dev/null
+++ b/Projects/Flow/Sources/MyPageFlow.swift
@@ -0,0 +1,39 @@
+import UIKit
+import RxFlow
+import RxSwift
+import Core
+import Swinject
+import Presentation
+
+public final class MyPageFlow: Flow {
+
+ public let container: Container
+ private let rootViewController = BaseNavigationController()
+
+ public var root: Presentable {
+ return rootViewController
+ }
+
+ init(container: Container) {
+ self.container = container
+ }
+
+ public func navigate(to step: RxFlow.Step) -> RxFlow.FlowContributors {
+ guard let step = step as? MyPageStep else { return .none }
+ switch step {
+ case .myPageIsRequired:
+ return presentMyPage()
+ }
+ }
+}
+
+extension MyPageFlow {
+ private func presentMyPage() -> FlowContributors {
+ let myPageViewController = container.resolve(MyPageViewController.self)!
+ self.rootViewController.pushViewController(myPageViewController, animated: false)
+ return .one(flowContributor: .contribute(
+ withNextPresentable: rootViewController,
+ withNextStepper: myPageViewController.reactor
+ ))
+ }
+}
diff --git a/Projects/Flow/Sources/StoreFlow.swift b/Projects/Flow/Sources/StoreFlow.swift
new file mode 100644
index 0000000..5194193
--- /dev/null
+++ b/Projects/Flow/Sources/StoreFlow.swift
@@ -0,0 +1,39 @@
+import UIKit
+import RxFlow
+import RxSwift
+import Core
+import Swinject
+import Presentation
+
+public final class StoreFlow: Flow {
+
+ public let container: Container
+ private let rootViewController = BaseNavigationController()
+
+ public var root: Presentable {
+ return rootViewController
+ }
+
+ init(container: Container) {
+ self.container = container
+ }
+
+ public func navigate(to step: RxFlow.Step) -> RxFlow.FlowContributors {
+ guard let step = step as? StoreStep else { return .none }
+ switch step {
+ case .storeIsRequired:
+ return navigateToStore()
+ }
+ }
+}
+
+extension StoreFlow {
+ private func navigateToStore() -> FlowContributors {
+ let storeViewController = container.resolve(StoreViewController.self)!
+ self.rootViewController.pushViewController(storeViewController, animated: false)
+ return .one(flowContributor: .contribute(
+ withNextPresentable: storeViewController,
+ withNextStepper: storeViewController.reactor
+ ))
+ }
+}
diff --git a/Projects/Flow/Sources/TabsFlow.swift b/Projects/Flow/Sources/TabsFlow.swift
new file mode 100644
index 0000000..bf22c7f
--- /dev/null
+++ b/Projects/Flow/Sources/TabsFlow.swift
@@ -0,0 +1,110 @@
+import UIKit
+import RxFlow
+import RxSwift
+import Core
+import Swinject
+import Presentation
+import DesignSystem
+
+public final class TabsFlow: Flow {
+
+ public let container: Container
+ private let tabBarController = BaseTabBarController()
+
+ public var root: Presentable {
+ return self.tabBarController
+ }
+ init(container: Container) {
+ self.container = container
+ }
+
+ public func navigate(to step: RxFlow.Step) -> RxFlow.FlowContributors {
+ guard let step = step as? AppStep else { return .none }
+ switch step {
+ case .tabIsRequired:
+ return navigateToTabs()
+ default:
+ return .none
+ }
+ }
+ // swiftlint: disable function_body_length
+ private func navigateToTabs() -> FlowContributors {
+ let chatFlow = ChatFlow(container: container)
+ let friendsFlow = FriendsFlow(container: container)
+ let storeFlow = StoreFlow(container: container)
+ let myPageFlow = MyPageFlow(container: container)
+
+ Flows.use(
+ chatFlow,
+ friendsFlow,
+ storeFlow,
+ myPageFlow,
+ when: .created
+ ) { [weak self] chat, friends, store, mypage in
+
+ let tabItem1 = UITabBarItem(
+ title: nil,
+ image: UIImage.emotingImage(.chat),
+ selectedImage: UIImage.emotingImage(.chat).withTintColor(
+ .Main.main500,
+ renderingMode: .alwaysOriginal
+ )
+ )
+ let tabItem2 = UITabBarItem(
+ title: nil,
+ image: UIImage.emotingImage(.humanPlus),
+ selectedImage: UIImage.emotingImage(.humanPlus).withTintColor(
+ .Main.main500,
+ renderingMode: .alwaysOriginal
+ )
+ )
+ let tabItem3 = UITabBarItem(
+ title: nil,
+ image: UIImage.emotingImage(.store),
+ selectedImage: UIImage.emotingImage(.store).withTintColor(
+ .Main.main500,
+ renderingMode: .alwaysOriginal
+ )
+ )
+ let tabItem4 = UITabBarItem(
+ title: nil,
+ image: UIImage.emotingImage(.userProfile),
+ selectedImage: UIImage.emotingImage(.userProfile).withTintColor(
+ .Main.main500,
+ renderingMode: .alwaysOriginal
+ )
+ )
+ chat.tabBarItem = tabItem1
+ friends.tabBarItem = tabItem2
+ store.tabBarItem = tabItem3
+ mypage.tabBarItem = tabItem4
+
+ self?.tabBarController.setViewControllers(
+ [
+ chat,
+ friends,
+ store,
+ mypage
+ ], animated: false)
+ }
+ return .multiple(flowContributors: [
+ .contribute(
+ withNextPresentable: chatFlow,
+ withNextStepper: OneStepper(withSingleStep: ChatStep.chatIsRequired)
+ ),
+ .contribute(
+ withNextPresentable: friendsFlow,
+ withNextStepper: OneStepper(withSingleStep: FriendsStep.friendsIsRequired)
+ ),
+ .contribute(
+ withNextPresentable: storeFlow,
+ withNextStepper: OneStepper(withSingleStep: StoreStep.storeIsRequired)
+ ),
+ .contribute(
+ withNextPresentable: myPageFlow,
+ withNextStepper: OneStepper(withSingleStep: MyPageStep.myPageIsRequired)
+ )
+ ])
+ }
+ // swiftlint: enable function_body_length
+}
diff --git a/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/chat.imageset/Contents.json b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/chat.imageset/Contents.json
new file mode 100644
index 0000000..eb18f67
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/chat.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "chat.svg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/chat.imageset/chat.svg b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/chat.imageset/chat.svg
new file mode 100644
index 0000000..9c9505f
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/chat.imageset/chat.svg
@@ -0,0 +1,3 @@
+
diff --git a/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/human_plus.imageset/Contents.json b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/human_plus.imageset/Contents.json
new file mode 100644
index 0000000..db70a0e
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/human_plus.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "fluent_person-24-filled.svg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/human_plus.imageset/fluent_person-24-filled.svg b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/human_plus.imageset/fluent_person-24-filled.svg
new file mode 100644
index 0000000..2282ad5
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/human_plus.imageset/fluent_person-24-filled.svg
@@ -0,0 +1,4 @@
+
diff --git a/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/store.imageset/Contents.json b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/store.imageset/Contents.json
new file mode 100644
index 0000000..654a69d
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/store.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "home.svg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/store.imageset/home.svg b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/store.imageset/home.svg
new file mode 100644
index 0000000..958b7ef
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/store.imageset/home.svg
@@ -0,0 +1,3 @@
+
diff --git a/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/user_profile.imageset/Contents.json b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/user_profile.imageset/Contents.json
new file mode 100644
index 0000000..fcc5d09
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/user_profile.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "user_profile.svg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/user_profile.imageset/user_profile.svg b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/user_profile.imageset/user_profile.svg
new file mode 100644
index 0000000..624e7f2
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Resources/Images/Images.xcassets/user_profile.imageset/user_profile.svg
@@ -0,0 +1,3 @@
+
diff --git a/Projects/Modules/DesignSystem/Sources/Extension/UIView/UIView+addTopBorder.swift b/Projects/Modules/DesignSystem/Sources/Extension/UIView/UIView+addTopBorder.swift
new file mode 100644
index 0000000..67f8768
--- /dev/null
+++ b/Projects/Modules/DesignSystem/Sources/Extension/UIView/UIView+addTopBorder.swift
@@ -0,0 +1,12 @@
+import UIKit
+
+extension UIView {
+ public func addTopBorder(with color: UIColor?, andWidth borderWidth: CGFloat) {
+ let border = UIView()
+ border.backgroundColor = color
+ border.autoresizingMask = [.flexibleWidth, .flexibleBottomMargin]
+ border.frame = CGRect(x: 0, y: 0, width: frame.size.width, height: borderWidth)
+ addSubview(border)
+ }
+
+}
diff --git a/Projects/Modules/DesignSystem/Sources/Image/EmotingImage.swift b/Projects/Modules/DesignSystem/Sources/Image/EmotingImage.swift
index e97b042..4fb4ff4 100644
--- a/Projects/Modules/DesignSystem/Sources/Image/EmotingImage.swift
+++ b/Projects/Modules/DesignSystem/Sources/Image/EmotingImage.swift
@@ -12,6 +12,10 @@ public enum EmotingImage {
case kakao
case naver
case google
+ case chat
+ case humanPlus
+ case store
+ case userProfile
}
extension EmotingImage {
@@ -29,6 +33,18 @@ extension EmotingImage {
case .google:
return dsImages.google.image
+
+ case .chat:
+ return dsImages.chat.image
+
+ case .humanPlus:
+ return dsImages.humanPlus.image
+
+ case .store:
+ return dsImages.store.image
+
+ case .userProfile:
+ return dsImages.userProfile.image
}
}
}
diff --git a/Projects/Presentation/Sources/Base/BaseTabBarController.swift b/Projects/Presentation/Sources/Base/BaseTabBarController.swift
index 573ebf9..a9192fa 100644
--- a/Projects/Presentation/Sources/Base/BaseTabBarController.swift
+++ b/Projects/Presentation/Sources/Base/BaseTabBarController.swift
@@ -6,18 +6,16 @@ import DesignSystem
public class BaseTabBarController: UITabBarController,
SetLayoutable,
AddViewable {
- private let stroke = UIView().then { _ in
-// $0.backgroundColor = .GrayScale.gray30
+ private let stroke = UIView().then {
+ $0.backgroundColor = .white
+ $0.addTopBorder(with: .GrayScale.gray100, andWidth: 1)
}
private let impactFeedbackGenerator = UIImpactFeedbackGenerator(style: .light)
public override func viewDidLoad() {
super.viewDidLoad()
-// self.tabBar.tintColor = .GrayScale.gray90
-// self.tabBar.unselectedItemTintColor = .GrayScale.gray50
-// self.tabBar.backgroundColor = .GrayScale.gray10
self.delegate = self
-
+ self.tabBar.isTranslucent = false
addView()
setLayout()
}
@@ -30,7 +28,7 @@ public class BaseTabBarController: UITabBarController,
stroke.snp.makeConstraints {
$0.top.equalToSuperview().offset(-1)
$0.leading.trailing.equalToSuperview()
- $0.height.equalTo(1)
+ $0.height.equalTo(16)
}
}
diff --git a/Projects/Presentation/Sources/DI/PresentationAssembly.swift b/Projects/Presentation/Sources/DI/PresentationAssembly.swift
index 0216f88..74109a6 100644
--- a/Projects/Presentation/Sources/DI/PresentationAssembly.swift
+++ b/Projects/Presentation/Sources/DI/PresentationAssembly.swift
@@ -6,6 +6,7 @@ import Domain
public final class PresentationAssembly: Assembly {
public init() {}
+ // swiftlint: disable function_body_length
public func assemble(container: Container) {
container.register(OnboardingReactor.self) { _ in
OnboardingReactor()
@@ -62,5 +63,34 @@ public final class PresentationAssembly: Assembly {
container.register(ProfilSignupViewController.self) { resolver in
ProfilSignupViewController(resolver.resolve(ProfilSignupReactor.self)!)
}
+
+ container.register(ChatReactor.self) { _ in
+ ChatReactor()
+ }
+ container.register(ChatViewController.self) { resolver in
+ ChatViewController(resolver.resolve(ChatReactor.self)!)
+ }
+
+ container.register(FriendsReactor.self) { _ in
+ FriendsReactor()
+ }
+ container.register(FriendsViewController.self) { resolver in
+ FriendsViewController(resolver.resolve(FriendsReactor.self)!)
+ }
+
+ container.register(StoreReactor.self) { _ in
+ StoreReactor()
+ }
+ container.register(StoreViewController.self) { resolver in
+ StoreViewController(resolver.resolve(StoreReactor.self)!)
+ }
+
+ container.register(MyPageReactor.self) { _ in
+ MyPageReactor()
+ }
+ container.register(MyPageViewController.self) { resolver in
+ MyPageViewController(resolver.resolve(MyPageReactor.self)!)
+ }
+ // swiftlint: enable function_body_length
}
}
diff --git a/Projects/Presentation/Sources/Main/MainViewController.swift b/Projects/Presentation/Sources/Main/MainViewController.swift
deleted file mode 100644
index 4a2a066..0000000
--- a/Projects/Presentation/Sources/Main/MainViewController.swift
+++ /dev/null
@@ -1,3 +0,0 @@
-import UIKit
-
-public class MainViewController: BaseReactorViewController {}
diff --git a/Projects/Presentation/Sources/Main/MainReactor.swift b/Projects/Presentation/Sources/Tabs/Chat/ChatReactor.swift
similarity index 59%
rename from Projects/Presentation/Sources/Main/MainReactor.swift
rename to Projects/Presentation/Sources/Tabs/Chat/ChatReactor.swift
index 89d596f..12ec856 100644
--- a/Projects/Presentation/Sources/Main/MainReactor.swift
+++ b/Projects/Presentation/Sources/Tabs/Chat/ChatReactor.swift
@@ -5,7 +5,7 @@ import Domain
import RxFlow
import Core
-public final class MainReactor: BaseReactor, Stepper {
+public final class ChatReactor: BaseReactor, Stepper {
public let steps = PublishRelay()
public let initialState = State()
private let disposeBag = DisposeBag()
@@ -17,8 +17,3 @@ public final class MainReactor: BaseReactor, Stepper {
public struct State { }
}
-
-extension MainReactor {
- public func mutate(action: Action) -> Observable { }
- public func reduce(state: State, mutation: Mutation) -> State { }
-}
diff --git a/Projects/Presentation/Sources/Tabs/Chat/ChatViewController.swift b/Projects/Presentation/Sources/Tabs/Chat/ChatViewController.swift
new file mode 100644
index 0000000..891e0fa
--- /dev/null
+++ b/Projects/Presentation/Sources/Tabs/Chat/ChatViewController.swift
@@ -0,0 +1,3 @@
+import UIKit
+
+public class ChatViewController: BaseReactorViewController { }
diff --git a/Projects/Presentation/Sources/Tabs/Friends/FriendsReactor.swift b/Projects/Presentation/Sources/Tabs/Friends/FriendsReactor.swift
new file mode 100644
index 0000000..bfab69a
--- /dev/null
+++ b/Projects/Presentation/Sources/Tabs/Friends/FriendsReactor.swift
@@ -0,0 +1,19 @@
+import ReactorKit
+import RxSwift
+import RxCocoa
+import Domain
+import RxFlow
+import Core
+
+public final class FriendsReactor: BaseReactor, Stepper {
+ public let steps = PublishRelay()
+ public let initialState = State()
+ private let disposeBag = DisposeBag()
+ public init() {}
+
+ public enum Action { }
+
+ public enum Mutation { }
+
+ public struct State { }
+}
diff --git a/Projects/Presentation/Sources/Tabs/Friends/FriendsViewController.swift b/Projects/Presentation/Sources/Tabs/Friends/FriendsViewController.swift
new file mode 100644
index 0000000..7308ed9
--- /dev/null
+++ b/Projects/Presentation/Sources/Tabs/Friends/FriendsViewController.swift
@@ -0,0 +1,3 @@
+import UIKit
+
+public class FriendsViewController: BaseReactorViewController { }
diff --git a/Projects/Presentation/Sources/Tabs/MyPage/MyPageReactor.swift b/Projects/Presentation/Sources/Tabs/MyPage/MyPageReactor.swift
new file mode 100644
index 0000000..961eb6b
--- /dev/null
+++ b/Projects/Presentation/Sources/Tabs/MyPage/MyPageReactor.swift
@@ -0,0 +1,19 @@
+import ReactorKit
+import RxSwift
+import RxCocoa
+import Domain
+import RxFlow
+import Core
+
+public final class MyPageReactor: BaseReactor, Stepper {
+ public let steps = PublishRelay()
+ public let initialState = State()
+ private let disposeBag = DisposeBag()
+ public init() {}
+
+ public enum Action { }
+
+ public enum Mutation { }
+
+ public struct State { }
+}
diff --git a/Projects/Presentation/Sources/Tabs/MyPage/MyPageViewController.swift b/Projects/Presentation/Sources/Tabs/MyPage/MyPageViewController.swift
new file mode 100644
index 0000000..e88ef7a
--- /dev/null
+++ b/Projects/Presentation/Sources/Tabs/MyPage/MyPageViewController.swift
@@ -0,0 +1,3 @@
+import UIKit
+
+public class MyPageViewController: BaseReactorViewController { }
diff --git a/Projects/Presentation/Sources/Tabs/Store/StoreReactor.swift b/Projects/Presentation/Sources/Tabs/Store/StoreReactor.swift
new file mode 100644
index 0000000..94965e9
--- /dev/null
+++ b/Projects/Presentation/Sources/Tabs/Store/StoreReactor.swift
@@ -0,0 +1,19 @@
+import ReactorKit
+import RxSwift
+import RxCocoa
+import Domain
+import RxFlow
+import Core
+
+public final class StoreReactor: BaseReactor, Stepper {
+ public let steps = PublishRelay()
+ public let initialState = State()
+ private let disposeBag = DisposeBag()
+ public init() {}
+
+ public enum Action { }
+
+ public enum Mutation { }
+
+ public struct State { }
+}
diff --git a/Projects/Presentation/Sources/Tabs/Store/StoreViewController.swift b/Projects/Presentation/Sources/Tabs/Store/StoreViewController.swift
new file mode 100644
index 0000000..57a4a04
--- /dev/null
+++ b/Projects/Presentation/Sources/Tabs/Store/StoreViewController.swift
@@ -0,0 +1,3 @@
+import UIKit
+
+public class StoreViewController: BaseReactorViewController { }