Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,15 @@ import I18N
import WebSocketManagementHelper

public final class AllMarketTickerBuilder {

// Service locator
@Injected private var allMarketTickersUseCase: AllMarketTickersUseCase
@Injected private var i18NManager: I18NManager
@Injected private var alertShooter: AlertShooter
@Injected private var webSocketManagementHelper: WebSocketManagementHelper


public init() { }

public func build(listener: AllMarketTickerPageListener) -> AllMarketTickerRoutable {
let viewModel = AllMarketTickerViewModel(
useCase: allMarketTickersUseCase,
i18NManager: i18NManager,
alertShooter: alertShooter,
webSocketHelper: webSocketManagementHelper
useCase: DependencyInjector.shared.resolve(),
i18NManager: DependencyInjector.shared.resolve(),
alertShooter: DependencyInjector.shared.resolve(),
webSocketHelper: DependencyInjector.shared.resolve()
)
viewModel.listener = listener
let view = AllMarketTickerView(viewModel: viewModel)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,14 @@ import CoreUtil
import WebSocketManagementHelper

public final class CoinDetailPageBuilder {
// Dependency
@Injected private var coinDetailPageUseCase: CoinDetailPageUseCase
@Injected private var webSocketManagementHelper: WebSocketManagementHelper

public init() { }

public func build(listener: CoinDetailPageListener, symbolInfo: CoinSymbolInfo) -> CoinDetailPageRoutable {
let viewModel = CoinDetailPageViewModel(
symbolInfo: symbolInfo,
useCase: coinDetailPageUseCase,
webSocketManagementHelper: webSocketManagementHelper
useCase: DependencyInjector.shared.resolve(),
webSocketManagementHelper: DependencyInjector.shared.resolve()
)
viewModel.listener = listener
let view = CoinDetailPageView(viewModel: viewModel)
Expand Down
46 changes: 31 additions & 15 deletions Projects/Features/Root/Feature/Sources/TabBar/TabBarRouter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -74,28 +74,44 @@ extension TabBarRouter {
func tabBarPage(_ page: TabBarPage) -> AnyView {
switch page {
case .allMarketTicker:
let router = allMarketTickerBuilder.build(listener: viewModel)
if let allMarketTickerRouter { dettach(allMarketTickerRouter) }
allMarketTickerRouter = router
attach(router)
return router.view
getAllMarketTickerPageRouter().view
case .setting:
let router = settingBuilder.build(listener: viewModel)
if let settingRouter { dettach(settingRouter) }
settingRouter = router
attach(router)
return router.view
getSettingPageRouter().view
}
}

func view(_ destination: TabBarPageDestination) -> AnyView {
switch destination {
case .coinDetailPage(let listener, let symbolInfo):
let router = coinDetailPageBuilder.build(listener: listener, symbolInfo: symbolInfo)
if let coinDetailPageRouter { dettach(coinDetailPageRouter) }
coinDetailPageRouter = router
attach(router)
return router.view
getCoinDetailPageRouter(listener: listener, symbolInfo: symbolInfo).view
}
}
}


// MARK: Create routers
private extension TabBarRouter {
func getAllMarketTickerPageRouter() -> AllMarketTickerRoutable {
if let allMarketTickerRouter { return allMarketTickerRouter }
let router = allMarketTickerBuilder.build(listener: viewModel)
allMarketTickerRouter = router
attach(router)
return router
}

func getSettingPageRouter() -> SettingRoutable {
if let settingRouter { return settingRouter }
let router = settingBuilder.build(listener: viewModel)
settingRouter = router
attach(router)
return router
}

func getCoinDetailPageRouter(listener: CoinDetailPageListener, symbolInfo: CoinSymbolInfo) -> CoinDetailPageRoutable {
if let coinDetailPageRouter { return coinDetailPageRouter }
let router = coinDetailPageBuilder.build(listener: listener, symbolInfo: symbolInfo)
coinDetailPageRouter = router
attach(router)
return router
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,13 @@ import DomainInterface
import CoreUtil

public class SettingBuilder {
// Dependency
@Injected private var i18NManager: I18NManager
@Injected private var userConfigurationRepository: UserConfigurationRepository

public init() { }

public func build(listener: SettingPageListener) -> SettingRoutable {
let viewModel = SettingViewModel(
i18NManager: i18NManager,
userConfigurationRepository: userConfigurationRepository
i18NManager: DependencyInjector.shared.resolve(),
userConfigurationRepository: DependencyInjector.shared.resolve()
)
viewModel.listener = listener
let view = SettingView(viewModel: viewModel)
Expand Down