Skip to content
Open
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
8 changes: 7 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ plugins {
alias(libs.plugins.detekt)
alias(libs.plugins.google.secrets.gradle.plugin)
alias(libs.plugins.automattic.measure.builds)
alias(libs.plugins.allopen)
id("io.kotzilla.kotzilla-plugin")
}
apply("$rootDir/gradle/report.gradle")
Expand Down Expand Up @@ -114,6 +115,10 @@ ksp {
arg("KOIN_CONFIG_CHECK", "true")
}

allOpen {
annotation("org.koin.core.annotation.Monitor")
}

dependencies {
implementation(project(":core"))
implementation(libs.kotlin.stdlib)
Expand Down Expand Up @@ -148,7 +153,8 @@ dependencies {
implementation(libs.koin.android)
implementation(libs.koin.androidx.compose)
implementation(libs.koin.androidx.startup)
implementation("io.kotzilla:kotzilla-sdk:1.2.1")
implementation("io.kotzilla:kotzilla-sdk:1.2.3")
//implementation("io.kotzilla:kotzilla-sdk-compose:1.2.3")

compileOnly(libs.koin.annotations.core)
ksp(libs.koin.annotations.compiler)
Expand Down
33 changes: 21 additions & 12 deletions app/src/main/java/com/santimattius/template/MainApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,39 @@ package com.santimattius.template

import android.app.Application
import android.util.Log
import com.santimattius.core.CoreModule
import com.santimattius.template.di.AppModule
import com.santimattius.template.di.DataModule
import io.kotzilla.sdk.analytics.koin.analytics
import org.koin.android.ext.koin.androidContext
import org.koin.androix.startup.KoinStartup
import org.koin.core.annotation.KoinApplication
import org.koin.core.annotation.KoinExperimentalAPI
import org.koin.dsl.KoinConfiguration
import org.koin.ksp.generated.com_santimattius_core_CoreModule
import org.koin.ksp.generated.com_santimattius_template_di_AppModule
import org.koin.ksp.generated.com_santimattius_template_di_DataModule
import org.koin.ksp.generated.defaultModule
import org.koin.dsl.module
import org.koin.ksp.generated.defineComSantimattiusTemplateUiComposeHomeComposeViewModel
import org.koin.ksp.generated.defineComSantimattiusTemplateUiXmlHomeHomeViewModel
import org.koin.ksp.generated.koinConfiguration

@KoinApplication(
configurations = ["default"],
modules = [CoreModule::class, DataModule::class, AppModule::class]
)
object MainKoinApplication

@OptIn(KoinExperimentalAPI::class)
class MainApplication : Application(), KoinStartup {

override fun onKoinStartup(): KoinConfiguration {
Log.d(this::class.simpleName, "onKoinStartup: ${Thread.currentThread().name}")
return KoinConfiguration {
val configuration = MainKoinApplication.koinConfiguration {
androidContext(this@MainApplication)
analytics()
modules(
com_santimattius_core_CoreModule,
com_santimattius_template_di_DataModule,
com_santimattius_template_di_AppModule,
defaultModule
)
modules(modules = module {
defineComSantimattiusTemplateUiComposeHomeComposeViewModel()
defineComSantimattiusTemplateUiXmlHomeHomeViewModel()
})
}
return KoinConfiguration(configuration)
}
}
}
2 changes: 2 additions & 0 deletions app/src/main/java/com/santimattius/template/di/AppModule.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.santimattius.template.di

import com.santimattius.template.BuildConfig
import org.koin.core.annotation.Configuration
import org.koin.core.annotation.Module
import org.koin.core.annotation.Named
import org.koin.core.annotation.Single


@Module
@Configuration
class AppModule {

@Single(createdAtStart = true)
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/com/santimattius/template/di/DataModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ import com.santimattius.core.data.datasources.implementation.RetrofitMovieNetwor
import com.santimattius.core.data.datasources.implementation.RoomMovieLocalDataSource
import com.santimattius.core.data.repositories.TMDbRepository
import com.santimattius.core.domain.repositories.MovieRepository
import org.koin.core.annotation.Configuration
import org.koin.core.annotation.Module
import org.koin.core.annotation.Single

@Module
@Configuration
class DataModule {

@Single
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,19 @@ class HomeComposeActivity : ComponentActivity() {
setContent {
// This shouldn't be needed, but allows robolectric tests to run successfully
// TODO remove once a solution is found or a fix in koin?
CompositionLocalProvider(
LocalKoinScope provides KoinPlatformTools.defaultContext()
.get().scopeRegistry.rootScope,
LocalKoinApplication provides KoinPlatformTools.defaultContext().get()
) {
AndroidTestingTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
HomeRoute(viewModel)
}
// CompositionLocalProvider(
// LocalKoinScope provides KoinPlatformTools.defaultContext()
// .get().scopeRegistry.rootScope,
// LocalKoinApplication provides KoinPlatformTools.defaultContext().get()
// ) {
//
// }
AndroidTestingTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
HomeRoute(viewModel)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import org.koin.android.annotation.KoinViewModel
import org.koin.core.annotation.Configuration
import org.koin.core.annotation.Monitor

@KoinViewModel
@Monitor
@Configuration
class HomeComposeViewModel(
private val movieRepository: MovieRepository,
) : ViewModel() {
Expand Down
3 changes: 2 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ plugins {
alias(libs.plugins.detekt) apply false
alias(libs.plugins.google.secrets.gradle.plugin) apply false
alias(libs.plugins.automattic.measure.builds) apply false
alias(libs.plugins.allopen) apply false
alias(libs.plugins.room) apply false
}

buildscript {
dependencies {
classpath(libs.dep.google.secrets.gradle.plugin)
classpath("io.kotzilla:kotzilla-plugin:1.2.1")
classpath("io.kotzilla:kotzilla-plugin:1.2.3")
}
}
2 changes: 2 additions & 0 deletions core/src/main/java/com/santimattius/core/CoreModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ import com.santimattius.core.data.client.database.TheMovieDataBase
import com.santimattius.core.data.client.network.RequestInterceptor
import com.santimattius.core.data.client.network.TheMovieDBService
import okhttp3.OkHttpClient
import org.koin.core.annotation.Configuration
import org.koin.core.annotation.Module
import org.koin.core.annotation.Named
import org.koin.core.annotation.Single
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

@Module
@Configuration
class CoreModule {

@Single(createdAtStart = true)
Expand Down
31 changes: 16 additions & 15 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[versions]
# Plugins
androidGradlePlugin = "8.12.2"
androidGradlePlugin = "8.13.0"
hamcrest = "3.0"
kotlin = "2.2.10"
kotlin = "2.2.20"
detektGradlePlugin = "1.23.8"
ksp = "2.2.10-2.0.2"
ksp = "2.2.20-2.0.2"
googleSecretsPlugin = "2.0.1"
automatticMeasureBuilds = "3.2.1"

Expand All @@ -15,23 +15,23 @@ appCompat = "1.7.1"
fragmentKtx = "1.8.9"
constraintLayout = "2.2.1"
recyclerView = "1.4.0"
materialVersion = "1.12.0"
lifecycle = "2.9.3"
materialVersion = "1.13.0"
lifecycle = "2.9.4"

retrofit = "3.0.0"
okHttp = "5.1.0"
okHttp = "5.2.0"

coroutine = "1.10.2"
gson = "2.13.1"
glide = "5.0.0-rc01"
gson = "2.13.2"
glide = "5.0.5"
coil = "2.7.0"
room = "2.7.2"
room = "2.8.1"

androidxComposeBom = "2025.08.01"
activityCompose = "1.10.1"
androidxComposeBom = "2025.09.01"
activityCompose = "1.11.0"

koinBom = "4.1.0"
koinAnnotations = "2.1.0"
koinBom = "4.1.1"
koinAnnotations = "2.2.0"

#Testing
junit = "4.13.2"
Expand All @@ -44,10 +44,10 @@ fragmentTesting = "1.8.9"
espressoCore = "3.7.0"
okhttp3IdlingResource = "1.0.0"

mockk = "1.14.5"
mockk = "1.14.6"
robolectric = "4.16"
turbine = "1.2.1"
mockitoKotlin = "6.0.0"
mockitoKotlin = "6.1.0"

[libraries]
# Define the libraries
Expand Down Expand Up @@ -153,6 +153,7 @@ kotlin = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
room = { id = "androidx.room", version.ref = "room"}
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detektGradlePlugin" }
google-secrets-gradle-plugin = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin", version.ref = "googleSecretsPlugin" }
automattic-measure-builds = { id = "com.automattic.android.measure-builds", version.ref = "automatticMeasureBuilds" }