Skip to content

Commit

Permalink
add component module
Browse files Browse the repository at this point in the history
  • Loading branch information
makeevrserg committed Oct 12, 2023
1 parent 75f5b52 commit feb4eb0
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class MainActivity : ComponentActivity() {
}
}
}
ComposeApplication(rootModule.themeSwitcherComponent.value) {
ComposeApplication(rootModule.componentsModule.themeSwitcherComponent.value) {
ModalBottomSheetLayout(
sheetState = bottomSheetState.sheetState,
sheetContent = bottomSheetState.sheetContent.value,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class CheckStatusWork(
applicationContext.asEmpireApp().rootModule
}
private val rootStatusComponent by Provider {
rootModule.rootStatusComponent.value
rootModule.componentsModule.rootStatusComponent.value
}

override suspend fun doWork(): Result {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.makeevrserg.empireprojekt.mobile.features.root.di

import com.makeevrserg.empireprojekt.mobile.features.status.root.RootStatusComponent
import com.makeevrserg.empireprojekt.mobile.features.theme.ThemeSwitcherComponent
import ru.astrainteractive.klibs.kdi.Single

interface ComponentsModule {
// Global components
val rootStatusComponent: Single<RootStatusComponent>
val themeSwitcherComponent: Single<ThemeSwitcherComponent>
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,12 @@ package com.makeevrserg.empireprojekt.mobile.features.root.di

import com.makeevrserg.empireprojekt.mobile.features.logic.splash.di.SplashComponentModule
import com.makeevrserg.empireprojekt.mobile.features.status.di.StatusModule
import com.makeevrserg.empireprojekt.mobile.features.status.root.RootStatusComponent
import com.makeevrserg.empireprojekt.mobile.features.theme.ThemeSwitcherComponent
import ru.astrainteractive.klibs.kdi.Module
import ru.astrainteractive.klibs.kdi.Single

interface RootModule : Module {

val servicesModule: ServicesModule
val statusModule: StatusModule
val splashModule: SplashComponentModule

// Global components
val rootStatusComponent: Single<RootStatusComponent>
val themeSwitcherComponent: Single<ThemeSwitcherComponent>
val componentsModule: ComponentsModule
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.makeevrserg.empireprojekt.mobile.features.root.di.impl

import com.makeevrserg.empireprojekt.mobile.features.root.di.ComponentsModule
import com.makeevrserg.empireprojekt.mobile.features.root.di.RootModule
import com.makeevrserg.empireprojekt.mobile.features.status.root.DefaultRootStatusComponent
import com.makeevrserg.empireprojekt.mobile.features.status.root.RootStatusComponent
import com.makeevrserg.empireprojekt.mobile.features.theme.DefaultThemeSwitcherComponentComponent
import com.makeevrserg.empireprojekt.mobile.features.theme.ThemeSwitcherComponent
import com.makeevrserg.empireprojekt.mobile.features.theme.di.ThemeSwitcherModule
import ru.astrainteractive.klibs.kdi.Single

class ComponentsModuleImpl(
rootModule: RootModule
) : ComponentsModule {
override val rootStatusComponent: Single<RootStatusComponent> = Single {
DefaultRootStatusComponent(rootModule.statusModule)
}

override val themeSwitcherComponent: Single<ThemeSwitcherComponent> = Single {
val module = ThemeSwitcherModule.Default(
settings = rootModule.servicesModule.settings.value
)
DefaultThemeSwitcherComponentComponent(module)
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
package com.makeevrserg.empireprojekt.mobile.features.root.di.impl

import com.makeevrserg.empireprojekt.mobile.features.logic.splash.di.SplashComponentModule
import com.makeevrserg.empireprojekt.mobile.features.root.di.ComponentsModule
import com.makeevrserg.empireprojekt.mobile.features.root.di.RootModule
import com.makeevrserg.empireprojekt.mobile.features.root.di.ServicesModule
import com.makeevrserg.empireprojekt.mobile.features.status.di.StatusModule
import com.makeevrserg.empireprojekt.mobile.features.status.root.DefaultRootStatusComponent
import com.makeevrserg.empireprojekt.mobile.features.status.root.RootStatusComponent
import com.makeevrserg.empireprojekt.mobile.features.theme.DefaultThemeSwitcherComponentComponent
import com.makeevrserg.empireprojekt.mobile.features.theme.ThemeSwitcherComponent
import com.makeevrserg.empireprojekt.mobile.features.theme.di.ThemeSwitcherModule
import ru.astrainteractive.klibs.kdi.Provider
import ru.astrainteractive.klibs.kdi.Single
import ru.astrainteractive.klibs.kdi.getValue
Expand All @@ -33,12 +29,7 @@ class RootModuleImpl : RootModule {
)
}

override val rootStatusComponent: Single<RootStatusComponent> = Single {
DefaultRootStatusComponent(statusModule)
}

override val themeSwitcherComponent: Single<ThemeSwitcherComponent> = Single {
val module = ThemeSwitcherModule.Default(servicesModule.settings.value)
DefaultThemeSwitcherComponentComponent(module)
override val componentsModule: ComponentsModule by Single {
ComponentsModuleImpl(this)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ class RootScreenComponentChildFactory(

RootScreenComponent.Child.Status -> {
DefaultRootScreenComponent.Configuration.Status(
themeSwitcherComponent = rootModule.themeSwitcherComponent.value,
rootStatusComponent = rootModule.rootStatusComponent.value
themeSwitcherComponent = rootModule.componentsModule.themeSwitcherComponent.value,
rootStatusComponent = rootModule.componentsModule.rootStatusComponent.value
)
}
}
Expand Down

0 comments on commit feb4eb0

Please sign in to comment.