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: 8 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
root = true

[*.{kt,kts}]
indent_size = 4
max_line_length = 120
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

This file was deleted.

12 changes: 7 additions & 5 deletions app/src/main/java/com/example/androidmovie/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,19 @@ import com.example.core.dependency.DepsMap
import com.example.core.dependency.HasDependencies
import javax.inject.Inject

class App : Application(), HasDependencies {

class App :
Application(),
HasDependencies {
@Inject
override lateinit var depsMap: DepsMap

override fun onCreate() {
super.onCreate()
DaggerAppComponent.builder()
DaggerAppComponent
.builder()
.application(this)
.connectivityManager(getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager)
.build().
inject(this)
.build()
.inject(this)
}
}
10 changes: 5 additions & 5 deletions app/src/main/java/com/example/androidmovie/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package com.example.androidmovie

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.fragment.NavHostFragment
import com.example.core.navigation.NavigationFlow
import com.example.core.navigation.Navigator
import com.example.core.navigation.ToFlowNavigatable
import com.example.core.navigation.R.navigation.main_nav_graph
import com.example.core.navigation.ToFlowNavigatable


class MainActivity : AppCompatActivity(R.layout.activity_main), ToFlowNavigatable {

class MainActivity :
AppCompatActivity(R.layout.activity_main),
ToFlowNavigatable {
private val navigator: Navigator = Navigator()

override fun onCreate(savedInstanceState: Bundle?) {
Expand Down
10 changes: 3 additions & 7 deletions app/src/main/java/com/example/androidmovie/di/AppComponent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,13 @@ annotation class AppScope
modules = [
AppModule::class,
DomainModule::class,
FeatureDepsModule::class
]
FeatureDepsModule::class,
],
)

@AppScope
interface AppComponent :
PopularMoviesDeps,
MovieDeps {

@Component.Builder
interface Builder {
@BindsInstance
Expand All @@ -49,7 +47,5 @@ interface AppComponent :
class AppModule {
@AppScope
@Provides
fun provideContext(
application: Application
): Context = application.applicationContext
fun provideContext(application: Application): Context = application.applicationContext
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.androidmovie.di.feature_deps
package com.example.androidmovie.di.featureDeps

import com.example.androidmovie.di.AppComponent
import com.example.core.dagger.DependenciesKey
Expand All @@ -14,4 +14,4 @@ interface MovieDepsModule {
@IntoMap
@DependenciesKey(MovieDeps::class)
fun bindMovieDeps(impl: AppComponent): Dependencies
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.example.androidmovie.di.feature_deps
package com.example.androidmovie.di.featureDeps

import com.example.androidmovie.di.AppComponent
import com.example.core.dagger.DependenciesKey
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,14 @@ import dagger.Provides
@Module(includes = [NetworkModule::class])
class DataModule {
@Provides
fun providePopularMoviesRepository(
api: Api
) : PopularMoviesRepository = PopularMoviesRepositoryImpl(
api
)
fun providePopularMoviesRepository(api: Api): PopularMoviesRepository =
PopularMoviesRepositoryImpl(
api,
)

@Provides
fun provideMovieRepository(
api: Api
) : MovieRepository = MovieRepositoryImpl(
api
)
}
fun provideMovieRepository(api: Api): MovieRepository =
MovieRepositoryImpl(
api,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,9 @@ import dagger.Provides
@Module(includes = [DataModule::class])
class DomainModule {
@Provides
fun providePopularMoviesInteractor(
popularMoviesRepository: PopularMoviesRepository
): PopularMoviesInteractor = PopularMoviesInteractorImpl(popularMoviesRepository)
fun providePopularMoviesInteractor(popularMoviesRepository: PopularMoviesRepository): PopularMoviesInteractor =
PopularMoviesInteractorImpl(popularMoviesRepository)

@Provides
fun provideMovieInteractor(
movieRepository: MovieRepository
): MovieInteractor = MovieInteractorImpl(movieRepository)
fun provideMovieInteractor(movieRepository: MovieRepository): MovieInteractor = MovieInteractorImpl(movieRepository)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.example.androidmovie.di.modules

import com.example.androidmovie.di.feature_deps.MovieDepsModule
import com.example.androidmovie.di.feature_deps.PopularMoviesDepsModule
import com.example.androidmovie.di.featureDeps.MovieDepsModule
import com.example.androidmovie.di.featureDeps.PopularMoviesDepsModule
import dagger.Module

@Module(
includes = [
PopularMoviesDepsModule::class,
MovieDepsModule::class
]
MovieDepsModule::class,
],
)
interface FeatureDepsModule
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.example.androidmovie.di.modules

import android.net.ConnectivityManager
import com.example.data.movies_api_provider.ApiProvider
import com.example.data.moviesApiProvider.ApiProvider
import com.example.network.network.ApiConst
import com.example.network.network.api.Api
import com.example.network.network.provider.NetworkProvider
Expand All @@ -11,17 +11,12 @@ import dagger.Provides
@Module
class NetworkModule {
@Provides
fun provideNetworkProvider(
connectivityManager: ConnectivityManager
): NetworkProvider = NetworkProvider(connectivityManager)
fun provideNetworkProvider(connectivityManager: ConnectivityManager): NetworkProvider =
NetworkProvider(connectivityManager)

@Provides
fun provideApiProvider(
networkProvider: NetworkProvider
): ApiProvider = ApiProvider(networkProvider)
fun provideApiProvider(networkProvider: NetworkProvider): ApiProvider = ApiProvider(networkProvider)

@Provides
fun provideApi(
provider: ApiProvider
) : Api = provider.provideNetwork(baseUrl = ApiConst.HOST_API)
fun provideApi(provider: ApiProvider): Api = provider.provideNetwork(baseUrl = ApiConst.HOST_API)
}
17 changes: 0 additions & 17 deletions app/src/test/java/com/example/androidmovie/ExampleUnitTest.kt

This file was deleted.

48 changes: 46 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,51 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '8.0.2' apply false
id 'com.android.library' version '8.0.2' apply false
id 'com.android.application' version '8.8.0' apply false
id 'com.android.library' version '8.8.0' apply false
id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
id 'androidx.navigation.safeargs.kotlin' version '2.5.0' apply false
id 'io.gitlab.arturbosch.detekt' version '1.23.8' apply false
}

apply from: "ktlint.gradle"

subprojects {
apply plugin: "io.gitlab.arturbosch.detekt"

detekt {
toolVersion = "1.23.8"
config.setFrom(file("$rootDir/config/detekt/detekt.yml"))
buildUponDefaultConfig = true
reports {
html.enabled = true
xml.enabled = false
txt.enabled = false
}
}
}

tasks.register("detektAll") {
group = "verification"
description = "Run detekt for all modules and generate a single report."

dependsOn subprojects.collect { it.tasks.findByName("detekt") }

doLast {
def outputDir = file("$buildDir/reports/detekt")
outputDir.mkdirs()

def mergedReport = new File(outputDir, "detekt-all-report.html")
mergedReport.write("") // Очищаем файл перед записью

subprojects.each { project ->
def reportFile = project.file("${project.buildDir}/reports/detekt/detekt.html")
if (reportFile.exists()) {
mergedReport.append("<!-- Report from ${project.name} -->\n")
mergedReport.append(reportFile.text)
mergedReport.append("\n")
} else {
println "Report not found for module: ${project.name}"
}
}
}
}

This file was deleted.

24 changes: 14 additions & 10 deletions common/src/main/java/com/example/common/Entity.kt
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package com.example.common

sealed class Entity<out T : Any>{
data class Success<out T : Any>(val data: T?, val code: Int? = null) : Entity<T>() {
override fun <K : Any> map(mapper: (oldValue: T?) -> K?): Success<K> {
return Success(mapper.invoke(data), code)
}
sealed class Entity<out T : Any> {
data class Success<out T : Any>(
val data: T?,
val code: Int? = null,
) : Entity<T>() {
override fun <K : Any> map(mapper: (oldValue: T?) -> K?): Success<K> = Success(mapper.invoke(data), code)
}
data class Error<out T : Any>(val exceptionMessage: String, val localData: T? = null) :
Entity<T>() {
override fun <K : Any> map(mapper: (oldValue: T?) -> K?): Error<K> {
return Error(exceptionMessage, mapper.invoke(localData))
}

data class Error<out T : Any>(
val exceptionMessage: String,
val localData: T? = null,
) : Entity<T>() {
override fun <K : Any> map(mapper: (oldValue: T?) -> K?): Error<K> =
Error(exceptionMessage, mapper.invoke(localData))
}

abstract fun <K : Any> map(mapper: (oldValue: T?) -> K?): Entity<K>
}
17 changes: 0 additions & 17 deletions common/src/test/java/com/example/common/ExampleUnitTest.kt

This file was deleted.

This file was deleted.

Loading