diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..1d25749ae --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +charset = utf-8 +indent_size = 4 +indent_style = space +max_line_length = 150 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{kt,kts}] +ij_kotlin_allow_trailing_comma = true +ij_kotlin_allow_trailing_comma_on_call_site = true \ No newline at end of file diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index 21e07f523..f2b0195ef 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -49,9 +49,9 @@ jobs: # run: | # echo '${{ secrets.GOOGLE_SERVICES }}' >> ./app/google-services.json -# - name: Code style checks -# run: | -# ./gradlew detekt --continue + - name: Code style checks + run: | + ./gradlew detekt --continue - name: Run build run: ./gradlew buildDebug --stacktrace diff --git a/app/src/main/java/com/neki/android/app/MainActivity.kt b/app/src/main/java/com/neki/android/app/MainActivity.kt index aeffbba4b..d2cf71e54 100644 --- a/app/src/main/java/com/neki/android/app/MainActivity.kt +++ b/app/src/main/java/com/neki/android/app/MainActivity.kt @@ -48,7 +48,7 @@ class MainActivity : ComponentActivity() { currentKey = navigator.state.currentKey, onTabSelected = { navigator.navigate(it.navKey) }, ) - } + }, ) { innerPadding -> NavDisplay( modifier = Modifier.padding(innerPadding), diff --git a/app/src/main/java/com/neki/android/app/NekiApplication.kt b/app/src/main/java/com/neki/android/app/NekiApplication.kt index 3f2fad624..619cb171b 100644 --- a/app/src/main/java/com/neki/android/app/NekiApplication.kt +++ b/app/src/main/java/com/neki/android/app/NekiApplication.kt @@ -5,20 +5,20 @@ import dagger.hilt.android.HiltAndroidApp import timber.log.Timber @HiltAndroidApp -class NekiApplication: Application() { +class NekiApplication : Application() { override fun onCreate() { super.onCreate() if (BuildConfig.DEBUG) { Timber.plant(Timber.DebugTree()) } else { - Timber.plant(object : Timber.Tree() { - override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { - // 여기는 Release일 때 로그를 남기지 않고 어딘가로 전송 ? - - } - }) + Timber.plant( + object : Timber.Tree() { + override fun log(priority: Int, tag: String?, message: String, t: Throwable?) { + // 여기는 Release일 때 로그를 남기지 않고 어딘가로 전송 ? + } + }, + ) } - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/neki/android/app/navigation/TopLevelNavItem.kt b/app/src/main/java/com/neki/android/app/navigation/TopLevelNavItem.kt index cfbc08bdb..fbf1ee8ee 100644 --- a/app/src/main/java/com/neki/android/app/navigation/TopLevelNavItem.kt +++ b/app/src/main/java/com/neki/android/app/navigation/TopLevelNavItem.kt @@ -24,16 +24,17 @@ enum class TopLevelNavItem( selectedIcon = R.drawable.ic_nav_archive_selected, unselectedIcon = R.drawable.ic_nav_archive_unselected, iconTextId = R.string.top_level_nav_archive, - navKey = ArchiveNavKey.Archive + navKey = ArchiveNavKey.Archive, ), MAP( selectedIcon = R.drawable.ic_nav_map_selected, unselectedIcon = R.drawable.ic_nav_map_unselected, iconTextId = R.string.top_level_nav_map, - navKey = MapNavKey.Map - ); + navKey = MapNavKey.Map, + ), + ; companion object { val startTopLevelItem = ARCHIVE } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/neki/android/app/navigation/di/AppModule.kt b/app/src/main/java/com/neki/android/app/navigation/di/AppModule.kt index 17ce598fd..9c9f65551 100644 --- a/app/src/main/java/com/neki/android/app/navigation/di/AppModule.kt +++ b/app/src/main/java/com/neki/android/app/navigation/di/AppModule.kt @@ -15,4 +15,4 @@ internal interface AppModule { fun bindsNavigator( impl: NavigatorImpl, ): Navigator -} \ No newline at end of file +} diff --git a/app/src/main/java/com/neki/android/app/navigation/di/NavigationModule.kt b/app/src/main/java/com/neki/android/app/navigation/di/NavigationModule.kt index 05c0ec065..b601d9609 100644 --- a/app/src/main/java/com/neki/android/app/navigation/di/NavigationModule.kt +++ b/app/src/main/java/com/neki/android/app/navigation/di/NavigationModule.kt @@ -21,4 +21,4 @@ internal object NavigationModule { topLevelKeys = TOP_LEVEL_NAV_KEYS.toSet(), ) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/neki/android/app/ui/BottomNavigationBar.kt b/app/src/main/java/com/neki/android/app/ui/BottomNavigationBar.kt index 3def40c5a..29825020a 100644 --- a/app/src/main/java/com/neki/android/app/ui/BottomNavigationBar.kt +++ b/app/src/main/java/com/neki/android/app/ui/BottomNavigationBar.kt @@ -51,14 +51,14 @@ fun BottomNavigationBar( modifier = Modifier .fillMaxWidth() .padding(horizontal = 20.dp), - horizontalArrangement = Arrangement.spacedBy(2.5.dp) + horizontalArrangement = Arrangement.spacedBy(2.5.dp), ) { tabs.forEach { tab -> BottomNavigationBarItem( modifier = Modifier.weight(1f), selected = tab.navKey == currentTab, tab = tab, - onClick = { if (tab.navKey != currentKey) onTabSelected(tab) } + onClick = { if (tab.navKey != currentKey) onTabSelected(tab) }, ) } } @@ -78,7 +78,7 @@ fun BottomNavigationBarItem( Surface( modifier = modifier, - onClick = onClick + onClick = onClick, ) { Column( modifier = Modifier.padding(vertical = 8.dp), diff --git a/app/src/test/java/com/neki/android/ExampleUnitTest.kt b/app/src/test/java/com/neki/android/ExampleUnitTest.kt deleted file mode 100644 index 6bf1db485..000000000 --- a/app/src/test/java/com/neki/android/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.neki.android - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/build-logic/src/main/java/com/neki/android/buildlogic/extensions/Android.kt b/build-logic/src/main/java/com/neki/android/buildlogic/extensions/Android.kt index 5f814f081..e28d856ce 100644 --- a/build-logic/src/main/java/com/neki/android/buildlogic/extensions/Android.kt +++ b/build-logic/src/main/java/com/neki/android/buildlogic/extensions/Android.kt @@ -4,10 +4,12 @@ import com.neki.android.buildlogic.const.BuildConst import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project import org.gradle.api.plugins.ExtensionAware +import org.gradle.kotlin.dsl.dependencies import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions +import kotlin.text.get internal fun Project.configureAndroid( - commonExtension: CommonExtension<*, *, *, *, *, *> + commonExtension: CommonExtension<*, *, *, *, *, *>, ) { commonExtension.apply { compileSdk = BuildConst.COMPILE_SDK @@ -30,6 +32,10 @@ internal fun Project.configureAndroid( ) } } + + dependencies { + add("detektPlugins", libs.findLibrary("detekt.formatting").get()) + } } } diff --git a/build-logic/src/main/java/com/neki/android/buildlogic/plugins/KotlinLibraryConventionPlugin.kt b/build-logic/src/main/java/com/neki/android/buildlogic/plugins/KotlinLibraryConventionPlugin.kt index 1544eb89e..b17ca3a97 100644 --- a/build-logic/src/main/java/com/neki/android/buildlogic/plugins/KotlinLibraryConventionPlugin.kt +++ b/build-logic/src/main/java/com/neki/android/buildlogic/plugins/KotlinLibraryConventionPlugin.kt @@ -1,8 +1,10 @@ import com.neki.android.buildlogic.const.BuildConst +import com.neki.android.buildlogic.extensions.libs import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.JavaPluginExtension import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension class KotlinLibraryConventionPlugin: Plugin { @@ -21,6 +23,10 @@ class KotlinLibraryConventionPlugin: Plugin { extensions.configure { jvmToolchain(BuildConst.JDK_VERSION) } + + dependencies { + add("detektPlugins", libs.findLibrary("detekt.formatting").get()) + } } } } \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 4ba23462b..72150526f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,6 @@ +import io.gitlab.arturbosch.detekt.extensions.DetektExtension +import org.gradle.kotlin.dsl.configure + plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.library) apply false @@ -7,4 +10,18 @@ plugins { alias(libs.plugins.jetbrains.kotlin.jvm) apply false alias(libs.plugins.ksp) apply false alias(libs.plugins.hilt) apply false + alias(libs.plugins.detekt) apply false +} + +subprojects { + apply { + plugin(rootProject.libs.plugins.detekt.get().pluginId) + } + + configure { + parallel = true + buildUponDefaultConfig = true + toolVersion = rootProject.libs.versions.detekt.get() + config.setFrom(files("$rootDir/detekt-config.yml")) + } } \ No newline at end of file diff --git a/core/common/src/main/java/com/neki/android/core/common/const/Const.kt b/core/common/src/main/java/com/neki/android/core/common/const/Const.kt index 9fa393635..2d9b4a9d2 100644 --- a/core/common/src/main/java/com/neki/android/core/common/const/Const.kt +++ b/core/common/src/main/java/com/neki/android/core/common/const/Const.kt @@ -2,5 +2,4 @@ package com.neki.android.core.common.const object Const { const val TAG_REST_API = "TAG_REST_API" - -} \ No newline at end of file +} diff --git a/core/data-api/src/main/java/com/neki/android/core/dataapi/repository/SampleRespository.kt b/core/data-api/src/main/java/com/neki/android/core/dataapi/repository/SampleRespository.kt index be2feca69..4ce138ea9 100644 --- a/core/data-api/src/main/java/com/neki/android/core/dataapi/repository/SampleRespository.kt +++ b/core/data-api/src/main/java/com/neki/android/core/dataapi/repository/SampleRespository.kt @@ -5,8 +5,6 @@ import com.neki.android.core.model.Post interface SampleRepository { suspend fun getPosts(): List suspend fun getPost( - id: Int + id: Int, ): Post - - -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/neki/android/core/data/local/di/DataStoreRepository.kt b/core/data/src/main/java/com/neki/android/core/data/local/di/DataStoreRepository.kt index 4b30f951f..17cc664db 100644 --- a/core/data/src/main/java/com/neki/android/core/data/local/di/DataStoreRepository.kt +++ b/core/data/src/main/java/com/neki/android/core/data/local/di/DataStoreRepository.kt @@ -22,7 +22,7 @@ internal object DataStoreModule { @Singleton @Provides fun provideDataStore( - @ApplicationContext context: Context + @ApplicationContext context: Context, ): DataStore { return PreferenceDataStoreFactory.create( corruptionHandler = ReplaceFileCorruptionHandler( @@ -31,6 +31,4 @@ internal object DataStoreModule { produceFile = { context.preferencesDataStoreFile(DATASTORE_NAME) }, ) } - - -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/neki/android/core/data/remote/api/ApiService.kt b/core/data/src/main/java/com/neki/android/core/data/remote/api/ApiService.kt index 6dac50389..ad48056ca 100644 --- a/core/data/src/main/java/com/neki/android/core/data/remote/api/ApiService.kt +++ b/core/data/src/main/java/com/neki/android/core/data/remote/api/ApiService.kt @@ -6,7 +6,7 @@ import io.ktor.client.call.body import io.ktor.client.request.get class ApiService( - private val client: HttpClient + private val client: HttpClient, ) { // 게시글 목록 조회 suspend fun getPosts(): List { @@ -15,10 +15,8 @@ class ApiService( // 게시글 조회 suspend fun getPost( - id: Int + id: Int, ): PostResponse { return client.get("/posts/$id").body() } - - } diff --git a/core/data/src/main/java/com/neki/android/core/data/remote/di/NetworkModule.kt b/core/data/src/main/java/com/neki/android/core/data/remote/di/NetworkModule.kt index e3fd32750..068ddb995 100644 --- a/core/data/src/main/java/com/neki/android/core/data/remote/di/NetworkModule.kt +++ b/core/data/src/main/java/com/neki/android/core/data/remote/di/NetworkModule.kt @@ -21,6 +21,7 @@ import io.ktor.serialization.kotlinx.json.json import kotlinx.serialization.json.Json import timber.log.Timber import javax.inject.Singleton + @Module @InstallIn(SingletonComponent::class) internal object NetworkModule { @@ -31,7 +32,7 @@ internal object NetworkModule { @Provides @Singleton fun provideApiService( - client: HttpClient + client: HttpClient, ): ApiService = ApiService(client) @Provides @@ -44,11 +45,13 @@ internal object NetworkModule { } install(ContentNegotiation) { - json(Json { - prettyPrint = true - isLenient = true - ignoreUnknownKeys = true - }) + json( + Json { + prettyPrint = true + isLenient = true + ignoreUnknownKeys = true + }, + ) } install(Logging) { @@ -69,7 +72,4 @@ internal object NetworkModule { expectSuccess = true } } - - } - diff --git a/core/data/src/main/java/com/neki/android/core/data/remote/model/response/PostResponse.kt b/core/data/src/main/java/com/neki/android/core/data/remote/model/response/PostResponse.kt index 53b8977e4..d86386438 100644 --- a/core/data/src/main/java/com/neki/android/core/data/remote/model/response/PostResponse.kt +++ b/core/data/src/main/java/com/neki/android/core/data/remote/model/response/PostResponse.kt @@ -9,14 +9,14 @@ data class PostResponse( @SerialName("userId") val userId: Int, @SerialName("id") val id: Int, @SerialName("title") val title: String, - @SerialName("body") val body: String + @SerialName("body") val body: String, ) { fun toModel(): Post { return Post( userId = this.userId, id = this.id, title = this.title, - body = this.body + body = this.body, ) } -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/neki/android/core/data/repository/di/RepositoryModule.kt b/core/data/src/main/java/com/neki/android/core/data/repository/di/RepositoryModule.kt index a6c88f9da..5c3686db4 100644 --- a/core/data/src/main/java/com/neki/android/core/data/repository/di/RepositoryModule.kt +++ b/core/data/src/main/java/com/neki/android/core/data/repository/di/RepositoryModule.kt @@ -13,8 +13,6 @@ internal abstract class RepositoryModule { @Binds abstract fun bindSampleRepositoryImpl( - sampleRepositoryImpl: SampleRepositoryImpl + sampleRepositoryImpl: SampleRepositoryImpl, ): SampleRepository - - -} \ No newline at end of file +} diff --git a/core/data/src/main/java/com/neki/android/core/data/repository/impl/SampleRepositoryImpl.kt b/core/data/src/main/java/com/neki/android/core/data/repository/impl/SampleRepositoryImpl.kt index 9e257fb62..bcafcc53f 100644 --- a/core/data/src/main/java/com/neki/android/core/data/repository/impl/SampleRepositoryImpl.kt +++ b/core/data/src/main/java/com/neki/android/core/data/repository/impl/SampleRepositoryImpl.kt @@ -1,7 +1,5 @@ package com.neki.android.core.data.repository.impl -import androidx.datastore.core.DataStore -import androidx.datastore.preferences.core.Preferences import com.neki.android.core.data.remote.api.ApiService import com.neki.android.core.dataapi.repository.SampleRepository import com.neki.android.core.model.Post @@ -9,19 +7,17 @@ import javax.inject.Inject class SampleRepositoryImpl @Inject constructor( private val apiService: ApiService, - private val dataStore: DataStore -): SampleRepository { +// private val dataStore: DataStore, +) : SampleRepository { override suspend fun getPosts(): List { return apiService.getPosts() .map { it.toModel() } } override suspend fun getPost( - id: Int + id: Int, ): Post { return apiService.getPost(id = id) .toModel() } - - -} \ No newline at end of file +} diff --git a/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Color.kt b/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Color.kt index 4b467f099..d0da66a42 100644 --- a/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Color.kt +++ b/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Color.kt @@ -8,4 +8,4 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file +val Pink40 = Color(0xFF7D5260) diff --git a/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Theme.kt b/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Theme.kt index 4b2633b6a..c0f26af2d 100644 --- a/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Theme.kt +++ b/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Theme.kt @@ -13,13 +13,13 @@ import androidx.compose.ui.platform.LocalContext private val DarkColorScheme = darkColorScheme( primary = Purple80, secondary = PurpleGrey80, - tertiary = Pink80 + tertiary = Pink80, ) private val LightColorScheme = lightColorScheme( primary = Purple40, secondary = PurpleGrey40, - tertiary = Pink40 + tertiary = Pink40, /* Other default colors to override background = Color(0xFFFFFBFE), @@ -28,8 +28,7 @@ private val LightColorScheme = lightColorScheme( onSecondary = Color.White, onTertiary = Color.White, onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - */ + onSurface = Color(0xFF1C1B1F), */ ) @Composable @@ -37,7 +36,7 @@ fun NekiTheme( darkTheme: Boolean = isSystemInDarkTheme(), // Dynamic color is available on Android 12+ dynamicColor: Boolean = true, - content: @Composable () -> Unit + content: @Composable () -> Unit, ) { val colorScheme = when { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { @@ -52,6 +51,6 @@ fun NekiTheme( MaterialTheme( colorScheme = colorScheme, typography = Typography, - content = content + content = content, ) -} \ No newline at end of file +} diff --git a/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Type.kt b/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Type.kt index d0c0be7bf..28d50873f 100644 --- a/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Type.kt +++ b/core/designsystem/src/main/java/com/neki/android/core/designsystem/ui/theme/Type.kt @@ -13,8 +13,8 @@ val Typography = Typography( fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 24.sp, - letterSpacing = 0.5.sp - ) + letterSpacing = 0.5.sp, + ), /* Other default text styles to override titleLarge = TextStyle( fontFamily = FontFamily.Default, @@ -29,6 +29,5 @@ val Typography = Typography( fontSize = 11.sp, lineHeight = 16.sp, letterSpacing = 0.5.sp - ) - */ -) \ No newline at end of file + ) */ +) diff --git a/core/domain/src/main/java/com/neki/android/core/domain/usecase/OptionalUseCase.kt b/core/domain/src/main/java/com/neki/android/core/domain/usecase/OptionalUseCase.kt index 79520bdc7..c7ef9333b 100644 --- a/core/domain/src/main/java/com/neki/android/core/domain/usecase/OptionalUseCase.kt +++ b/core/domain/src/main/java/com/neki/android/core/domain/usecase/OptionalUseCase.kt @@ -1,4 +1,3 @@ package com.neki.android.core.domain.usecase -class OptionalUseCase { -} \ No newline at end of file +class OptionalUseCase diff --git a/core/model/src/main/java/com/neki/android/core/model/Post.kt b/core/model/src/main/java/com/neki/android/core/model/Post.kt index d1c1748f5..46099ba5e 100644 --- a/core/model/src/main/java/com/neki/android/core/model/Post.kt +++ b/core/model/src/main/java/com/neki/android/core/model/Post.kt @@ -4,5 +4,5 @@ data class Post( val userId: Int = 0, val id: Int = 0, val title: String = "", - val body: String = "" -) \ No newline at end of file + val body: String = "", +) diff --git a/detekt-config.yml b/detekt-config.yml new file mode 100644 index 000000000..4dd4a05f6 --- /dev/null +++ b/detekt-config.yml @@ -0,0 +1,81 @@ +complexity: + LongMethod: + threshold: 100 + ignoreAnnotated: [ 'Composable' ] + CyclomaticComplexMethod: + threshold: 40 + ignoreAnnotated: [ 'Composable' ] + LongParameterList: + active: false + TooManyFunctions: + active: false + ComplexCondition: + threshold: 7 + +performance: + SpreadOperator: + active: false + +formatting: + TrailingCommaOnCallSite: + active: true + TrailingCommaOnDeclarationSite: + active: true + ImportOrdering: + active: false + MaximumLineLength: + active: false + MultiLineIfElse: + active: false + Indentation: + indentSize: 4 + ParameterListWrapping: + active: false + ArgumentListWrapping: + indentSize: 4 + maxLineLength: 150 + KdocWrapping: + active: true + indentSize: 4 + Wrapping: + indentSize: 4 + active: false + CommentWrapping: + active: false + Filename: + active: false + PackageName: + active: false + AnnotationOnSeparateLine: + active: false + +style: + MagicNumber: + active: false + ignoreAnnotated: [ 'AllowMagicNumber' ] + ForbiddenComment: + active: false + UnusedPrivateMember: + ignoreAnnotated: [ 'Preview', 'ComponentPreview', 'DevicePreview' ] + ThrowsCount: + active: false + ReturnCount: + active: false + LoopWithTooManyJumpStatements: + active: false + DestructuringDeclarationWithTooManyEntries: + active: false + MaxLineLength: + active: false + +naming: + TopLevelPropertyNaming: + constantPattern: '[A-Z][A-Za-z0-9_]*' + FunctionNaming: + ignoreAnnotated: [ 'Composable' ] + MatchingDeclarationName: + active: false + VariableNaming: + active: false + PackageNaming: + packagePattern: '[a-z]+(\._?[_?A-Za-z0-9]*)*' diff --git a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/navigation/ArchiveEntryProvider.kt b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/navigation/ArchiveEntryProvider.kt index c9076d642..5f4b2159d 100644 --- a/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/navigation/ArchiveEntryProvider.kt +++ b/feature/archive/impl/src/main/kotlin/com/neki/android/feature/archive/impl/navigation/ArchiveEntryProvider.kt @@ -23,5 +23,7 @@ object ArchiveEntryProviderModule { } private fun EntryProviderScope.archiveEntry(navigator: Navigator) { - entry {} + entry { + navigator + } } diff --git a/feature/map/impl/src/main/java/com/neki/android/feature/map/impl/MapEntryProvider.kt b/feature/map/impl/src/main/java/com/neki/android/feature/map/impl/MapEntryProvider.kt index c4fa14ef2..0ad671f7a 100644 --- a/feature/map/impl/src/main/java/com/neki/android/feature/map/impl/MapEntryProvider.kt +++ b/feature/map/impl/src/main/java/com/neki/android/feature/map/impl/MapEntryProvider.kt @@ -23,7 +23,7 @@ object MapEntryProviderModule { } private fun EntryProviderScope.mapEntry(navigator: Navigator) { - entry {} + entry { + navigator + } } - - diff --git a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/navigation/PoseEntryProvider.kt b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/navigation/PoseEntryProvider.kt index 7323ae4f3..c487658f5 100644 --- a/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/navigation/PoseEntryProvider.kt +++ b/feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/navigation/PoseEntryProvider.kt @@ -23,7 +23,7 @@ object PoseEntryProviderModule { } private fun EntryProviderScope.poseEntry(navigator: Navigator) { - entry { } + entry { + navigator + } } - - diff --git a/feature/sample/impl/src/main/java/com/neki/android/feature/sample/impl/SampleEntryProvider.kt b/feature/sample/impl/src/main/java/com/neki/android/feature/sample/impl/SampleEntryProvider.kt index 616549fee..9adf4e256 100644 --- a/feature/sample/impl/src/main/java/com/neki/android/feature/sample/impl/SampleEntryProvider.kt +++ b/feature/sample/impl/src/main/java/com/neki/android/feature/sample/impl/SampleEntryProvider.kt @@ -25,10 +25,11 @@ object SampleEntryProviderModule { private fun EntryProviderScope.sampleEntry(navigator: Navigator) { entry { key -> + navigator val viewModel = hiltViewModel( creationCallback = { factory -> factory.create(key) - } + }, ) SampleScreen(viewModel = viewModel) } diff --git a/feature/sample/impl/src/main/java/com/neki/android/feature/sample/impl/SampleScreen.kt b/feature/sample/impl/src/main/java/com/neki/android/feature/sample/impl/SampleScreen.kt index 8e8dd2340..fc24a677b 100644 --- a/feature/sample/impl/src/main/java/com/neki/android/feature/sample/impl/SampleScreen.kt +++ b/feature/sample/impl/src/main/java/com/neki/android/feature/sample/impl/SampleScreen.kt @@ -10,5 +10,9 @@ fun SampleScreen( modifier: Modifier = Modifier, viewModel: SampleViewModel = hiltViewModel(), ) { - Text("Sample") + viewModel + Text( + modifier = modifier, + text = "Sample", + ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 99fdf5726..ea615c9de 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -22,6 +22,7 @@ androidxNavigation3 = "1.0.0" androidxLifecycleViewModelNavigation3 = "2.10.0" androidxHiltLifecycleViewmodelCompose = "1.3.0-alpha02" material = "1.13.0" +detekt = "1.23.8" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -61,6 +62,8 @@ androidx-datastore-preferences = { group = "androidx.datastore", name = "datasto timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "timber" } +detekt-formatting = { group = "io.gitlab.arturbosch.detekt", name = "detekt-formatting", version.ref = "detekt" } + # Dependencies of the included build-logic kotlin-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } android-gradle-plugin = { group = "com.android.tools.build", name = "gradle", version.ref = "agp" } @@ -86,4 +89,4 @@ jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "jetbrai ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } android-library = { id = "com.android.library", version.ref = "agp" } - +detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }