From d03d5f9340ceccdd83f1bfdbd6a9684595932768 Mon Sep 17 00:00:00 2001 From: Evgeny Dubravin Date: Fri, 15 Mar 2024 17:16:41 +0700 Subject: [PATCH 1/9] set submodules --- .gitmodules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index aa5ba1d..2934f75 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,9 @@ [submodule "Template-common"] path = Template-common - url = git@github.com:TouchInstinct/Template-common.git + url = https://git.svc.touchin.ru/TouchInstinct/common-template [submodule "RoboSwag"] path = RoboSwag - url = git@github.com:TouchInstinct/RoboSwag.git + url = https://git.svc.touchin.ru/TouchInstinct/RoboSwag.git [submodule "BuildScripts"] path = BuildScripts - url = git@github.com:TouchInstinct/BuildScripts.git + url = https://git.svc.touchin.ru/TouchInstinct/BuildScripts.git -- 2.40.1 From f77bc0a8c5098407851b7d637c6beb09e9370b32 Mon Sep 17 00:00:00 2001 From: Evgeny Dubravin Date: Tue, 19 Mar 2024 16:47:50 +0700 Subject: [PATCH 2/9] =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D1=8B?= =?UTF-8?q?=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 43 ++---------- app/src/main/AndroidManifest.xml | 4 +- app/src/main/java/ru/touchin/template/App.kt | 24 +------ .../ru/touchin/template/SingleActivity.kt | 61 +--------------- .../template/di/ApplicationComponent.kt | 37 ---------- .../touchin/template/di/ApplicationModule.kt | 28 -------- .../touchin/template/di/CoordinatorsImpl.kt | 13 ---- .../template/di/MainNavigationModule.kt | 27 -------- .../template/navigation/MainNavigation.kt | 6 -- .../ru/touchin/template/navigation/Screens.kt | 13 ---- .../template/navigation/StartUpCoordinator.kt | 18 ----- .../navigation/login/LoginCoordinatorImpl.kt | 16 ----- build.gradle.kts | 15 +--- core/core_data/build.gradle.kts | 3 - core/core_data/src/main/AndroidManifest.xml | 1 - core/core_domain/build.gradle.kts | 3 - core/core_domain/src/main/AndroidManifest.xml | 1 - core/core_network/.gitignore | 1 - core/core_network/build.gradle.kts | 20 ------ .../core_network/src/main/AndroidManifest.xml | 1 - .../template/network/ResponseBodyExt.kt | 10 --- .../ru/touchin/template/network/di/ApiUrl.kt | 6 -- .../template/network/di/ChuckInterceptor.kt | 6 -- .../template/network/di/NetworkModule.kt | 69 ------------------- .../template/network/di/WithSslPinning.kt | 6 -- .../interceptor/ExceptionsInterceptor.kt | 41 ----------- .../network/models/ServerException.kt | 18 ----- .../network/models/TemplateApiError.kt | 9 --- .../src/main/res/values/strings.xml | 3 - core/core_prefs/.gitignore | 1 - core/core_prefs/build.gradle.kts | 8 --- core/core_prefs/src/main/AndroidManifest.xml | 1 - .../template/core_prefs/PreferencesModule.kt | 24 ------- core/core_strings/.gitignore | 1 - core/core_strings/build.gradle.kts | 15 ---- .../core_strings/src/main/AndroidManifest.xml | 1 - .../src/main/res/values/strings.xml | 4 -- core/core_ui/build.gradle.kts | 3 - core/core_ui/src/main/AndroidManifest.xml | 1 - core/core_utils/.gitignore | 1 - core/core_utils/build.gradle.kts | 3 - core/core_utils/src/main/AndroidManifest.xml | 1 - features/feature_login/.gitignore | 1 - features/feature_login/build.gradle.kts | 8 --- .../src/main/AndroidManifest.xml | 3 - .../template/feature_login/LoginDeps.kt | 7 -- .../feature_login/di/LoginComponent.kt | 19 ----- .../feature_login/di/ViewModelModule.kt | 24 ------- .../navigation/LoginCoordinator.kt | 8 --- .../presentation/LoginFragment.kt | 43 ------------ .../presentation/LoginViewAction.kt | 7 -- .../presentation/LoginViewModel.kt | 25 ------- .../presentation/LoginViewState.kt | 5 -- .../src/main/res/layout/fragment_login.xml | 22 ------ gradle/libs.versions.toml | 9 +++ settings.gradle.kts | 35 +++------- 56 files changed, 31 insertions(+), 752 deletions(-) delete mode 100644 app/src/main/java/ru/touchin/template/di/ApplicationComponent.kt delete mode 100644 app/src/main/java/ru/touchin/template/di/ApplicationModule.kt delete mode 100644 app/src/main/java/ru/touchin/template/di/CoordinatorsImpl.kt delete mode 100644 app/src/main/java/ru/touchin/template/di/MainNavigationModule.kt delete mode 100644 app/src/main/java/ru/touchin/template/navigation/MainNavigation.kt delete mode 100644 app/src/main/java/ru/touchin/template/navigation/Screens.kt delete mode 100644 app/src/main/java/ru/touchin/template/navigation/StartUpCoordinator.kt delete mode 100644 app/src/main/java/ru/touchin/template/navigation/login/LoginCoordinatorImpl.kt delete mode 100644 core/core_data/build.gradle.kts delete mode 100644 core/core_data/src/main/AndroidManifest.xml delete mode 100644 core/core_domain/build.gradle.kts delete mode 100644 core/core_domain/src/main/AndroidManifest.xml delete mode 100644 core/core_network/.gitignore delete mode 100644 core/core_network/build.gradle.kts delete mode 100644 core/core_network/src/main/AndroidManifest.xml delete mode 100644 core/core_network/src/main/java/ru/touchin/template/network/ResponseBodyExt.kt delete mode 100644 core/core_network/src/main/java/ru/touchin/template/network/di/ApiUrl.kt delete mode 100644 core/core_network/src/main/java/ru/touchin/template/network/di/ChuckInterceptor.kt delete mode 100644 core/core_network/src/main/java/ru/touchin/template/network/di/NetworkModule.kt delete mode 100644 core/core_network/src/main/java/ru/touchin/template/network/di/WithSslPinning.kt delete mode 100644 core/core_network/src/main/java/ru/touchin/template/network/interceptor/ExceptionsInterceptor.kt delete mode 100644 core/core_network/src/main/java/ru/touchin/template/network/models/ServerException.kt delete mode 100644 core/core_network/src/main/java/ru/touchin/template/network/models/TemplateApiError.kt delete mode 100644 core/core_network/src/main/res/values/strings.xml delete mode 100644 core/core_prefs/.gitignore delete mode 100644 core/core_prefs/build.gradle.kts delete mode 100644 core/core_prefs/src/main/AndroidManifest.xml delete mode 100644 core/core_prefs/src/main/java/ru/touchin/template/core_prefs/PreferencesModule.kt delete mode 100644 core/core_strings/.gitignore delete mode 100644 core/core_strings/build.gradle.kts delete mode 100644 core/core_strings/src/main/AndroidManifest.xml delete mode 100644 core/core_strings/src/main/res/values/strings.xml delete mode 100644 core/core_ui/build.gradle.kts delete mode 100644 core/core_ui/src/main/AndroidManifest.xml delete mode 100644 core/core_utils/.gitignore delete mode 100644 core/core_utils/build.gradle.kts delete mode 100644 core/core_utils/src/main/AndroidManifest.xml delete mode 100644 features/feature_login/.gitignore delete mode 100644 features/feature_login/build.gradle.kts delete mode 100644 features/feature_login/src/main/AndroidManifest.xml delete mode 100644 features/feature_login/src/main/java/ru/touchin/template/feature_login/LoginDeps.kt delete mode 100644 features/feature_login/src/main/java/ru/touchin/template/feature_login/di/LoginComponent.kt delete mode 100644 features/feature_login/src/main/java/ru/touchin/template/feature_login/di/ViewModelModule.kt delete mode 100644 features/feature_login/src/main/java/ru/touchin/template/feature_login/navigation/LoginCoordinator.kt delete mode 100644 features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginFragment.kt delete mode 100644 features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewAction.kt delete mode 100644 features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewModel.kt delete mode 100644 features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewState.kt delete mode 100644 features/feature_login/src/main/res/layout/fragment_login.xml create mode 100644 gradle/libs.versions.toml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a40f352..70fe55c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -21,23 +21,6 @@ android { addBuildType(BuildType.Debug, buildScriptDir = buildScriptDir) addBuildType(BuildType.Release, buildScriptDir = buildScriptDir) - - flavorDimensions( - ApiFlavour.DIMENSION_NAME, - SSLPinningFlavour.DIMENSION_NAME, - TestPanelFlavour.DIMENSION_NAME - ) - - addFlavour(flavour = ApiFlavour.CustomerStage, customEndpoint = customEndpoint) - addFlavour(flavour = ApiFlavour.CustomerProd, customEndpoint = customEndpoint) - - addFlavour(SSLPinningFlavour.OFF) - addFlavour(SSLPinningFlavour.ON) - - addEmptyFlavour(TestPanelFlavour.OFF) - addEmptyFlavour(TestPanelFlavour.ON) - - ignoreCustomerProdFlavourIfReleaseIsDebuggable() } androidExtensions { @@ -45,27 +28,11 @@ androidExtensions { } dependencies { - androidX() - featureModules() - mvi() - materialDesign() - dagger() - retrofit() - moshi() - navigation() - leakCanary() - sharedPrefs() - chucker() - implementation(Library.FIREBASE_ANAL) - implementation(Library.FIREBASE_CRASH) - implementation(Library.FIREBASE_PERF) - implementation(Library.ANDROIDX_SECURE) - coreNetwork() - coreStrings() - implementationModule(Module.Core.UI) - implementationModule(Module.Core.UTILS) - implementationModule(Module.Core.DATA) - implementationModule(Module.RoboSwag.UTILS) + implementation(Library.ANDROIDX_APPCOMPAT) + implementation(Library.ANDROIDX_CORE) + implementation(Library.ANDROID_MATERIAL) + implementation(Library.ANDROIDX_FRAGMENT) + implementation(Library.ANDROIDX_FRAGMENT_KTX) } apply(from = "$buildScriptDir/gradle/scripts/applicationFileNaming.gradle") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fd2e16f..f7d90c6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,8 +18,8 @@ android:name="ru.touchin.template.SingleActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme" - android:windowSoftInputMode="adjustResize"> - + android:windowSoftInputMode="adjustResize" + android:exported="true"> diff --git a/app/src/main/java/ru/touchin/template/App.kt b/app/src/main/java/ru/touchin/template/App.kt index dc4afba..c6ffdc1 100644 --- a/app/src/main/java/ru/touchin/template/App.kt +++ b/app/src/main/java/ru/touchin/template/App.kt @@ -1,25 +1,5 @@ package ru.touchin.template -import me.vponomarenko.injectionmanager.IHasComponent -import me.vponomarenko.injectionmanager.x.XInjectionManager -import ru.touchin.roboswag.navigation_base.TouchinApp -import ru.touchin.template.di.ApplicationComponent -import ru.touchin.template.di.DaggerApplicationComponent +import android.app.Application -class App : TouchinApp(), IHasComponent { - - override fun onCreate() { - super.onCreate() - initDagger() - } - - fun initDagger() { - XInjectionManager.init(this) - XInjectionManager.bindComponent(this) - } - - override fun getComponent(): ApplicationComponent = DaggerApplicationComponent - .factory() - .create(this) - -} +class App : Application() diff --git a/app/src/main/java/ru/touchin/template/SingleActivity.kt b/app/src/main/java/ru/touchin/template/SingleActivity.kt index 5e7a377..e71c1db 100644 --- a/app/src/main/java/ru/touchin/template/SingleActivity.kt +++ b/app/src/main/java/ru/touchin/template/SingleActivity.kt @@ -1,62 +1,5 @@ package ru.touchin.template -import android.os.Bundle -import androidx.activity.OnBackPressedCallback -import com.google.firebase.analytics.FirebaseAnalytics -import com.google.firebase.analytics.ktx.analytics -import com.google.firebase.ktx.Firebase -import me.vponomarenko.injectionmanager.x.XInjectionManager -import ru.terrakok.cicerone.NavigatorHolder -import ru.terrakok.cicerone.android.support.SupportAppNavigator -import ru.touchin.roboswag.navigation_base.activities.BaseActivity -import ru.touchin.roboswag.navigation_cicerone.CiceroneTuner -import ru.touchin.template.di.ApplicationComponent -import ru.touchin.template.navigation.MainNavigation -import ru.touchin.template.navigation.StartUpCoordinator -import javax.inject.Inject +import androidx.appcompat.app.AppCompatActivity -// TDOD: change package name everywhere -// TODO: change google play config -class SingleActivity : BaseActivity() { - - @Inject - @MainNavigation - lateinit var navigatorHolder: NavigatorHolder - - @Inject - lateinit var coordinator: StartUpCoordinator - - private lateinit var firebaseAnalytics: FirebaseAnalytics - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - firebaseAnalytics = Firebase.analytics - - setContentView(R.layout.activity_main) - - injectDependencies() - - lifecycle.addObserver( - CiceroneTuner( - navigatorHolder = navigatorHolder, - navigator = SupportAppNavigator(this, R.id.fragment_container) - ) - ) - - coordinator.start() - - onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - coordinator.closeCurrentScreen() - } - }) - } - - private fun injectDependencies() { - XInjectionManager - .findComponent() - .inject(this) - } - -} +class SingleActivity : AppCompatActivity() diff --git a/app/src/main/java/ru/touchin/template/di/ApplicationComponent.kt b/app/src/main/java/ru/touchin/template/di/ApplicationComponent.kt deleted file mode 100644 index a1475a4..0000000 --- a/app/src/main/java/ru/touchin/template/di/ApplicationComponent.kt +++ /dev/null @@ -1,37 +0,0 @@ -package ru.touchin.template.di - -import android.content.Context -import dagger.BindsInstance -import dagger.Component -import ru.terrakok.cicerone.Router -import ru.touchin.template.feature_login.LoginDeps -import ru.touchin.template.network.di.NetworkModule -import ru.touchin.template.App -import ru.touchin.template.SingleActivity -import ru.touchin.template.core_prefs.PreferencesModule -import ru.touchin.template.navigation.MainNavigation -import javax.inject.Singleton - -@Singleton -@Component(modules = [ - ApplicationModule::class, - PreferencesModule::class, - MainNavigationModule::class, - NetworkModule::class, - CoordinatorsImpl::class -]) -interface ApplicationComponent : LoginDeps { - - @MainNavigation - fun router(): Router - - fun inject(application: App) - - fun inject(activity: SingleActivity) - - @Component.Factory - interface Factory { - fun create(@BindsInstance context: Context): ApplicationComponent - } - -} diff --git a/app/src/main/java/ru/touchin/template/di/ApplicationModule.kt b/app/src/main/java/ru/touchin/template/di/ApplicationModule.kt deleted file mode 100644 index 90758d1..0000000 --- a/app/src/main/java/ru/touchin/template/di/ApplicationModule.kt +++ /dev/null @@ -1,28 +0,0 @@ -package ru.touchin.template.di - -import android.content.Context -import com.chuckerteam.chucker.api.ChuckerInterceptor -import dagger.Module -import dagger.Provides -import okhttp3.Interceptor -import ru.touchin.template.network.di.ApiUrl -import ru.touchin.template.network.di.ChuckInterceptor -import ru.touchin.template.network.di.WithSslPinning -import ru.touchin.template.BuildConfig - -@Module -class ApplicationModule { - - @Provides - @ApiUrl - fun provideApiUrl() = BuildConfig.API_URL - - @Provides - @WithSslPinning - fun providePluggerForSsl() = BuildConfig.WithSSLPinning - - @Provides - @ChuckInterceptor - fun provideChucker(context: Context): Interceptor = ChuckerInterceptor(context) - -} diff --git a/app/src/main/java/ru/touchin/template/di/CoordinatorsImpl.kt b/app/src/main/java/ru/touchin/template/di/CoordinatorsImpl.kt deleted file mode 100644 index d43191f..0000000 --- a/app/src/main/java/ru/touchin/template/di/CoordinatorsImpl.kt +++ /dev/null @@ -1,13 +0,0 @@ -package ru.touchin.template.di - -import dagger.Binds -import dagger.Module -import ru.touchin.template.feature_login.navigation.LoginCoordinator -import ru.touchin.template.navigation.login.LoginCoordinatorImpl - -@Module -abstract class CoordinatorsImpl { - - @Binds - abstract fun loginCoordinator(impl: LoginCoordinatorImpl): LoginCoordinator -} diff --git a/app/src/main/java/ru/touchin/template/di/MainNavigationModule.kt b/app/src/main/java/ru/touchin/template/di/MainNavigationModule.kt deleted file mode 100644 index d7c055d..0000000 --- a/app/src/main/java/ru/touchin/template/di/MainNavigationModule.kt +++ /dev/null @@ -1,27 +0,0 @@ -package ru.touchin.template.di - -import dagger.Module -import dagger.Provides -import ru.terrakok.cicerone.Cicerone -import ru.terrakok.cicerone.NavigatorHolder -import ru.terrakok.cicerone.Router -import ru.touchin.template.navigation.MainNavigation -import javax.inject.Singleton - -@Module -class MainNavigationModule { - - @Provides - @Singleton - @MainNavigation - fun provideCicerone(): Cicerone = Cicerone.create() - - @Provides - @MainNavigation - fun provideNavigatorHolder(@MainNavigation cicerone: Cicerone): NavigatorHolder = cicerone.navigatorHolder - - @Provides - @MainNavigation - fun provideRouter(@MainNavigation cicerone: Cicerone): Router = cicerone.router - -} diff --git a/app/src/main/java/ru/touchin/template/navigation/MainNavigation.kt b/app/src/main/java/ru/touchin/template/navigation/MainNavigation.kt deleted file mode 100644 index e63ac31..0000000 --- a/app/src/main/java/ru/touchin/template/navigation/MainNavigation.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ru.touchin.template.navigation - -import javax.inject.Qualifier - -@Qualifier -annotation class MainNavigation diff --git a/app/src/main/java/ru/touchin/template/navigation/Screens.kt b/app/src/main/java/ru/touchin/template/navigation/Screens.kt deleted file mode 100644 index 3ed2df7..0000000 --- a/app/src/main/java/ru/touchin/template/navigation/Screens.kt +++ /dev/null @@ -1,13 +0,0 @@ -package ru.touchin.template.navigation - -import androidx.fragment.app.Fragment -import ru.terrakok.cicerone.android.support.SupportAppScreen -import ru.touchin.template.feature_login.presentation.LoginFragment - -object Screens { - - class Login : SupportAppScreen() { - override fun getFragment(): Fragment = LoginFragment() - - } -} diff --git a/app/src/main/java/ru/touchin/template/navigation/StartUpCoordinator.kt b/app/src/main/java/ru/touchin/template/navigation/StartUpCoordinator.kt deleted file mode 100644 index b926336..0000000 --- a/app/src/main/java/ru/touchin/template/navigation/StartUpCoordinator.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ru.touchin.template.navigation - -import ru.terrakok.cicerone.Router -import javax.inject.Inject - -class StartUpCoordinator @Inject constructor( - @MainNavigation private val router: Router -) { - - fun start() { - router.newRootScreen(Screens.Login()) - } - - fun closeCurrentScreen() { - router.exit() - } - -} diff --git a/app/src/main/java/ru/touchin/template/navigation/login/LoginCoordinatorImpl.kt b/app/src/main/java/ru/touchin/template/navigation/login/LoginCoordinatorImpl.kt deleted file mode 100644 index f7ed3a7..0000000 --- a/app/src/main/java/ru/touchin/template/navigation/login/LoginCoordinatorImpl.kt +++ /dev/null @@ -1,16 +0,0 @@ -package ru.touchin.template.navigation.login - -import ru.terrakok.cicerone.Router -import ru.touchin.template.feature_login.navigation.LoginCoordinator -import ru.touchin.template.navigation.MainNavigation -import javax.inject.Inject - -class LoginCoordinatorImpl @Inject constructor( - @MainNavigation private val router: Router -) : LoginCoordinator { - - override fun openMainScreen() { - router.exit() - } - -} diff --git a/build.gradle.kts b/build.gradle.kts index e3b60e9..696b5e1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,7 +2,6 @@ buildscript { repositories { mavenCentral() google() - jcenter() maven("https://plugins.gradle.org/m2/") } dependencies { @@ -17,27 +16,17 @@ buildscript { plugins { id(Plugins.DEPENDENCY_GRAPH).version("0.5.0") - id("static-analysis-android") +// id("static-analysis-android") } allprojects { repositories { + mavenCentral() google() - jcenter() maven("http://dl.bintray.com/touchin/touchin-tools") maven("https://jitpack.io") } } -subprojects { - apply(plugin = Plugins.DETEKT) -} - val buildScriptsDir = "${rootProject.projectDir}/BuildScripts" ext["buildScriptsDir"] = buildScriptsDir - -apply(plugin = Plugins.DEPENDENCY_GRAPH) - -staticAnalysis { - buildScriptDir = buildScriptsDir -} diff --git a/core/core_data/build.gradle.kts b/core/core_data/build.gradle.kts deleted file mode 100644 index 6b554b4..0000000 --- a/core/core_data/build.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -plugins { - id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG) -} diff --git a/core/core_data/src/main/AndroidManifest.xml b/core/core_data/src/main/AndroidManifest.xml deleted file mode 100644 index 3fca1ad..0000000 --- a/core/core_data/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core/core_domain/build.gradle.kts b/core/core_domain/build.gradle.kts deleted file mode 100644 index 6b554b4..0000000 --- a/core/core_domain/build.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -plugins { - id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG) -} diff --git a/core/core_domain/src/main/AndroidManifest.xml b/core/core_domain/src/main/AndroidManifest.xml deleted file mode 100644 index 573c1d4..0000000 --- a/core/core_domain/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core/core_network/.gitignore b/core/core_network/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/core/core_network/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/core/core_network/build.gradle.kts b/core/core_network/build.gradle.kts deleted file mode 100644 index 7bebdca..0000000 --- a/core/core_network/build.gradle.kts +++ /dev/null @@ -1,20 +0,0 @@ -plugins { - id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG) -// id("api-generator-android") -} - -// TODO: uncomment api generator -//apiGenerator { -// pathToApiSchemes = "${AndroidConfig.COMMON_FOLDER}/api" -// outputPackageName = AndroidConfig.TEST_APP_ID -// outputLanguage = apigen.OutputLanguage.KotlinAndroid( -// methodOutputType = apigen.MethodOutputType.Coroutine -// ) -//} - -dependencies { - retrofit() - dagger() - moshi() - coroutines() -} diff --git a/core/core_network/src/main/AndroidManifest.xml b/core/core_network/src/main/AndroidManifest.xml deleted file mode 100644 index 7adec17..0000000 --- a/core/core_network/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core/core_network/src/main/java/ru/touchin/template/network/ResponseBodyExt.kt b/core/core_network/src/main/java/ru/touchin/template/network/ResponseBodyExt.kt deleted file mode 100644 index 3cbe4d6..0000000 --- a/core/core_network/src/main/java/ru/touchin/template/network/ResponseBodyExt.kt +++ /dev/null @@ -1,10 +0,0 @@ -package ru.touchin.template.network - -import okhttp3.ResponseBody -import java.nio.charset.Charset - -fun ResponseBody.cloneBody(): String? = source() - .also { it.request(Long.MAX_VALUE) } - .buffer - ?.clone() - ?.readString(Charset.forName("UTF-8")) diff --git a/core/core_network/src/main/java/ru/touchin/template/network/di/ApiUrl.kt b/core/core_network/src/main/java/ru/touchin/template/network/di/ApiUrl.kt deleted file mode 100644 index 819132a..0000000 --- a/core/core_network/src/main/java/ru/touchin/template/network/di/ApiUrl.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ru.touchin.template.network.di - -import javax.inject.Qualifier - -@Qualifier -annotation class ApiUrl diff --git a/core/core_network/src/main/java/ru/touchin/template/network/di/ChuckInterceptor.kt b/core/core_network/src/main/java/ru/touchin/template/network/di/ChuckInterceptor.kt deleted file mode 100644 index 2589f62..0000000 --- a/core/core_network/src/main/java/ru/touchin/template/network/di/ChuckInterceptor.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ru.touchin.template.network.di - -import javax.inject.Qualifier - -@Qualifier -annotation class ChuckInterceptor diff --git a/core/core_network/src/main/java/ru/touchin/template/network/di/NetworkModule.kt b/core/core_network/src/main/java/ru/touchin/template/network/di/NetworkModule.kt deleted file mode 100644 index 928e615..0000000 --- a/core/core_network/src/main/java/ru/touchin/template/network/di/NetworkModule.kt +++ /dev/null @@ -1,69 +0,0 @@ -package ru.touchin.template.network.di - -import com.squareup.moshi.Moshi -import dagger.Module -import dagger.Provides -import okhttp3.CertificatePinner -import okhttp3.Interceptor -import okhttp3.OkHttpClient -import okhttp3.logging.HttpLoggingInterceptor -import retrofit2.Retrofit -import retrofit2.converter.moshi.MoshiConverterFactory -import ru.touchin.template.network.interceptor.ExceptionsInterceptor -import ru.touchin.template.core_network.BuildConfig -import java.util.concurrent.TimeUnit -import javax.inject.Singleton - -@Module -class NetworkModule { - - companion object { - private const val TIMEOUT = 30L - } - - @Singleton - @Provides - fun providePublicClient( - exceptionsInterceptor: ExceptionsInterceptor, - @ChuckInterceptor chuckerInterceptor: Interceptor, - @WithSslPinning withSslPinning: Boolean - ): OkHttpClient = - buildPublicClient(exceptionsInterceptor, chuckerInterceptor, withSslPinning) - - @Singleton - @Provides - fun provideMoshi() = buildMoshi() - - @Singleton - @Provides - fun provideRetrofit(client: OkHttpClient, moshi: Moshi, @ApiUrl apiUrl: String) = buildRetrofitInstance(client, moshi, apiUrl) - - private fun buildMoshi() = Moshi.Builder() - .build() - - private fun buildRetrofitInstance(client: OkHttpClient, moshi: Moshi, apiUrl: String): Retrofit = Retrofit.Builder() - .baseUrl(apiUrl) - .client(client) - .addConverterFactory(MoshiConverterFactory.create(moshi)) - .build() - - private fun buildPublicClient( - exceptionsInterceptor: ExceptionsInterceptor, - chuckerInterceptor: Interceptor, - withSslPinning: Boolean - ): OkHttpClient = OkHttpClient.Builder() - .apply { - connectTimeout(TIMEOUT, TimeUnit.SECONDS) - readTimeout(TIMEOUT, TimeUnit.SECONDS) - writeTimeout(TIMEOUT, TimeUnit.SECONDS) - addInterceptor(exceptionsInterceptor) - addInterceptor(chuckerInterceptor) - if (BuildConfig.DEBUG) { - addNetworkInterceptor(HttpLoggingInterceptor().apply { level = HttpLoggingInterceptor.Level.BODY }) - } - if (withSslPinning) { - certificatePinner(CertificatePinner.DEFAULT) - } - }.build() - -} diff --git a/core/core_network/src/main/java/ru/touchin/template/network/di/WithSslPinning.kt b/core/core_network/src/main/java/ru/touchin/template/network/di/WithSslPinning.kt deleted file mode 100644 index 3334f32..0000000 --- a/core/core_network/src/main/java/ru/touchin/template/network/di/WithSslPinning.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ru.touchin.template.network.di - -import javax.inject.Qualifier - -@Qualifier -annotation class WithSslPinning diff --git a/core/core_network/src/main/java/ru/touchin/template/network/interceptor/ExceptionsInterceptor.kt b/core/core_network/src/main/java/ru/touchin/template/network/interceptor/ExceptionsInterceptor.kt deleted file mode 100644 index 78c4991..0000000 --- a/core/core_network/src/main/java/ru/touchin/template/network/interceptor/ExceptionsInterceptor.kt +++ /dev/null @@ -1,41 +0,0 @@ -package ru.touchin.template.network.interceptor - -import okhttp3.Interceptor -import okhttp3.Response -import okhttp3.ResponseBody -import org.json.JSONException -import org.json.JSONObject -import ru.touchin.template.network.cloneBody -import ru.touchin.template.network.models.ServerException -import java.io.IOException -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class ExceptionsInterceptor @Inject constructor() : Interceptor { - - companion object { - private const val ERROR_MESSAGE_FIELD = "errorMessage" - } - - override fun intercept(chain: Interceptor.Chain): Response = chain - .proceed(chain.request()) - .also { getError(it, it.body())?.let { exception -> throw exception } } - - @Suppress("detekt.NestedBlockDepth") - private fun getError(response: Response, body: ResponseBody?): IOException? = body - ?.cloneBody() - ?.let { responseBody -> - try { - val jsonObject = JSONObject(responseBody) - val message = jsonObject.optString(ERROR_MESSAGE_FIELD) - when { - response.code() != 200 -> ServerException(response.code(), message) - else -> null - } - } catch (error: JSONException) { - null - } - } - -} diff --git a/core/core_network/src/main/java/ru/touchin/template/network/models/ServerException.kt b/core/core_network/src/main/java/ru/touchin/template/network/models/ServerException.kt deleted file mode 100644 index cdd3ab2..0000000 --- a/core/core_network/src/main/java/ru/touchin/template/network/models/ServerException.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ru.touchin.template.network.models - -import java.io.IOException - -open class ServerException(val code: Int, message: String? = null) : IOException(message) { - - companion object { - private val codeToErrorTypeMap = mapOf( - 1 to TemplateApiError.VALID_RESPONSE, - 2 to TemplateApiError.INVALID_PARAMETERS - ) - - fun getErrorTypeByCode(code: Int) = codeToErrorTypeMap[code] - } - - fun getErrorType(): TemplateApiError? = codeToErrorTypeMap[code] - -} diff --git a/core/core_network/src/main/java/ru/touchin/template/network/models/TemplateApiError.kt b/core/core_network/src/main/java/ru/touchin/template/network/models/TemplateApiError.kt deleted file mode 100644 index 461b590..0000000 --- a/core/core_network/src/main/java/ru/touchin/template/network/models/TemplateApiError.kt +++ /dev/null @@ -1,9 +0,0 @@ -package ru.touchin.template.network.models - -enum class TemplateApiError { - - INVALID_PARAMETERS, - - VALID_RESPONSE - -} diff --git a/core/core_network/src/main/res/values/strings.xml b/core/core_network/src/main/res/values/strings.xml deleted file mode 100644 index e3a7072..0000000 --- a/core/core_network/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - My Library - diff --git a/core/core_prefs/.gitignore b/core/core_prefs/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/core/core_prefs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/core/core_prefs/build.gradle.kts b/core/core_prefs/build.gradle.kts deleted file mode 100644 index ca6e8e2..0000000 --- a/core/core_prefs/build.gradle.kts +++ /dev/null @@ -1,8 +0,0 @@ -plugins { - id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG) -} - -dependencies { - implementation(Library.DAGGER) - implementationModule(Module.RoboSwag.STORABLE) -} diff --git a/core/core_prefs/src/main/AndroidManifest.xml b/core/core_prefs/src/main/AndroidManifest.xml deleted file mode 100644 index 48c2fe8..0000000 --- a/core/core_prefs/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core/core_prefs/src/main/java/ru/touchin/template/core_prefs/PreferencesModule.kt b/core/core_prefs/src/main/java/ru/touchin/template/core_prefs/PreferencesModule.kt deleted file mode 100644 index ad458db..0000000 --- a/core/core_prefs/src/main/java/ru/touchin/template/core_prefs/PreferencesModule.kt +++ /dev/null @@ -1,24 +0,0 @@ -package ru.touchin.template.core_prefs - -import android.content.Context -import android.content.SharedPreferences -import android.preference.PreferenceManager -import dagger.Module -import dagger.Provides -import ru.touchin.roboswag.components.utils.storables.PreferenceUtils -import ru.touchin.roboswag.core.observables.storable.NonNullStorable -import javax.inject.Singleton - -@Module -class PreferencesModule { - - @Provides - @Singleton - fun provideDefaultSharedPreferences(context: Context): SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) - - @Provides - @Singleton - fun provideTutorialStorable(sharedPreferences: SharedPreferences): NonNullStorable = PreferenceUtils - .booleanStorable("TUTORIAL_STORABLE", sharedPreferences, false) - -} diff --git a/core/core_strings/.gitignore b/core/core_strings/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/core/core_strings/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/core/core_strings/build.gradle.kts b/core/core_strings/build.gradle.kts deleted file mode 100644 index cf68a50..0000000 --- a/core/core_strings/build.gradle.kts +++ /dev/null @@ -1,15 +0,0 @@ -plugins { - id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG) -} -android { - ext["languageMap"] = mapOf("ru" to "${AndroidConfig.COMMON_FOLDER}/strings/default_common_strings_ru.json") - ext["rootPath"] = "core/core_strings" -} - -//gradle.projectsEvaluated { -// tasks.named("preBuild") { -// dependsOn("stringGenerator") -// } -//} -// -//apply(from = "${rootProject.ext["buildScriptsDir"]}/gradle/stringGenerator.gradle") diff --git a/core/core_strings/src/main/AndroidManifest.xml b/core/core_strings/src/main/AndroidManifest.xml deleted file mode 100644 index af59855..0000000 --- a/core/core_strings/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core/core_strings/src/main/res/values/strings.xml b/core/core_strings/src/main/res/values/strings.xml deleted file mode 100644 index 69db99c..0000000 --- a/core/core_strings/src/main/res/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - Да - diff --git a/core/core_ui/build.gradle.kts b/core/core_ui/build.gradle.kts deleted file mode 100644 index 6b554b4..0000000 --- a/core/core_ui/build.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -plugins { - id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG) -} diff --git a/core/core_ui/src/main/AndroidManifest.xml b/core/core_ui/src/main/AndroidManifest.xml deleted file mode 100644 index 3381bd9..0000000 --- a/core/core_ui/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core/core_utils/.gitignore b/core/core_utils/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/core/core_utils/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/core/core_utils/build.gradle.kts b/core/core_utils/build.gradle.kts deleted file mode 100644 index 6b554b4..0000000 --- a/core/core_utils/build.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -plugins { - id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG) -} diff --git a/core/core_utils/src/main/AndroidManifest.xml b/core/core_utils/src/main/AndroidManifest.xml deleted file mode 100644 index 4d6d64c..0000000 --- a/core/core_utils/src/main/AndroidManifest.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/features/feature_login/.gitignore b/features/feature_login/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/features/feature_login/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/features/feature_login/build.gradle.kts b/features/feature_login/build.gradle.kts deleted file mode 100644 index a8d397e..0000000 --- a/features/feature_login/build.gradle.kts +++ /dev/null @@ -1,8 +0,0 @@ -plugins { - id(Plugins.ANDROID_LIB_PLUGIN_WITH_DEFAULT_CONFIG) -} - -dependencies { - dagger() - mvi() -} diff --git a/features/feature_login/src/main/AndroidManifest.xml b/features/feature_login/src/main/AndroidManifest.xml deleted file mode 100644 index d139092..0000000 --- a/features/feature_login/src/main/AndroidManifest.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/features/feature_login/src/main/java/ru/touchin/template/feature_login/LoginDeps.kt b/features/feature_login/src/main/java/ru/touchin/template/feature_login/LoginDeps.kt deleted file mode 100644 index db52f3e..0000000 --- a/features/feature_login/src/main/java/ru/touchin/template/feature_login/LoginDeps.kt +++ /dev/null @@ -1,7 +0,0 @@ -package ru.touchin.template.feature_login - -import ru.touchin.template.feature_login.navigation.LoginCoordinator - -interface LoginDeps { - fun loginCoordinator(): LoginCoordinator -} diff --git a/features/feature_login/src/main/java/ru/touchin/template/feature_login/di/LoginComponent.kt b/features/feature_login/src/main/java/ru/touchin/template/feature_login/di/LoginComponent.kt deleted file mode 100644 index b475563..0000000 --- a/features/feature_login/src/main/java/ru/touchin/template/feature_login/di/LoginComponent.kt +++ /dev/null @@ -1,19 +0,0 @@ -package ru.touchin.template.feature_login.di - -import dagger.Component -import ru.touchin.roboswag.navigation_base.scopes.FragmentScope -import ru.touchin.template.feature_login.LoginDeps -import ru.touchin.template.feature_login.presentation.LoginFragment - -@FragmentScope -@Component(modules = [ViewModelModule::class], dependencies = [LoginDeps::class]) -interface LoginComponent { - - fun inject(fragment: LoginFragment) - - @Component.Factory - interface Factory { - fun create(deps: LoginDeps): LoginComponent - } - -} diff --git a/features/feature_login/src/main/java/ru/touchin/template/feature_login/di/ViewModelModule.kt b/features/feature_login/src/main/java/ru/touchin/template/feature_login/di/ViewModelModule.kt deleted file mode 100644 index 3160570..0000000 --- a/features/feature_login/src/main/java/ru/touchin/template/feature_login/di/ViewModelModule.kt +++ /dev/null @@ -1,24 +0,0 @@ -package ru.touchin.template.feature_login.di - -import androidx.lifecycle.ViewModel -import com.squareup.inject.assisted.dagger2.AssistedModule -import dagger.Binds -import dagger.Module -import dagger.multibindings.IntoMap -import ru.touchin.template.feature_login.presentation.LoginViewModel -import ru.touchin.roboswag.mvi_arch.di.ViewModelAssistedFactory -import ru.touchin.roboswag.mvi_arch.di.ViewModelKey - -@Module(includes = [ViewModelAssistedFactoriesModule::class]) -interface ViewModelModule { - - @Binds - @IntoMap - @ViewModelKey(LoginViewModel::class) - fun bindLoginByPinFactory(factory: LoginViewModel.Factory): ViewModelAssistedFactory - -} - -@AssistedModule -@Module(includes = [AssistedInject_ViewModelAssistedFactoriesModule::class]) -abstract class ViewModelAssistedFactoriesModule diff --git a/features/feature_login/src/main/java/ru/touchin/template/feature_login/navigation/LoginCoordinator.kt b/features/feature_login/src/main/java/ru/touchin/template/feature_login/navigation/LoginCoordinator.kt deleted file mode 100644 index e2240da..0000000 --- a/features/feature_login/src/main/java/ru/touchin/template/feature_login/navigation/LoginCoordinator.kt +++ /dev/null @@ -1,8 +0,0 @@ -package ru.touchin.template.feature_login.navigation - -import ru.touchin.roboswag.navigation_base.scopes.FragmentScope - -@FragmentScope -interface LoginCoordinator { - fun openMainScreen() -} diff --git a/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginFragment.kt b/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginFragment.kt deleted file mode 100644 index e2001aa..0000000 --- a/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginFragment.kt +++ /dev/null @@ -1,43 +0,0 @@ -package ru.touchin.template.feature_login.presentation - -import android.os.Bundle -import android.view.View -import me.vponomarenko.injectionmanager.IHasComponent -import me.vponomarenko.injectionmanager.x.XInjectionManager -import ru.touchin.template.feature_login.R -import ru.touchin.template.feature_login.databinding.FragmentLoginBinding -import ru.touchin.template.feature_login.di.DaggerLoginComponent -import ru.touchin.template.feature_login.di.LoginComponent -import ru.touchin.roboswag.mvi_arch.core.MviFragment -import ru.touchin.roboswag.navigation_base.fragments.EmptyState -import ru.touchin.roboswag.navigation_base.fragments.viewBinding - -class LoginFragment : MviFragment(R.layout.fragment_login), - IHasComponent { - - private val binding by viewBinding(FragmentLoginBinding::bind) - - override val viewModel: LoginViewModel by viewModel() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - injectDependencies() - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - binding.goToMainScreenButton.dispatchActionOnRippleClick(LoginViewAction.GoToMainScreenButtonClicked) - } - - private fun injectDependencies() { - XInjectionManager.bindComponent(this) - .inject(this) - } - - override fun getComponent(): LoginComponent = DaggerLoginComponent - .factory() - .create(XInjectionManager.findComponent()) - -} diff --git a/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewAction.kt b/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewAction.kt deleted file mode 100644 index e04c6c0..0000000 --- a/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewAction.kt +++ /dev/null @@ -1,7 +0,0 @@ -package ru.touchin.template.feature_login.presentation - -import ru.touchin.roboswag.mvi_arch.marker.ViewAction - -sealed class LoginViewAction : ViewAction { - object GoToMainScreenButtonClicked : LoginViewAction() -} diff --git a/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewModel.kt b/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewModel.kt deleted file mode 100644 index da0ce3d..0000000 --- a/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewModel.kt +++ /dev/null @@ -1,25 +0,0 @@ -package ru.touchin.template.feature_login.presentation - -import androidx.lifecycle.SavedStateHandle -import com.squareup.inject.assisted.Assisted -import com.squareup.inject.assisted.AssistedInject -import ru.touchin.template.feature_login.navigation.LoginCoordinator -import ru.touchin.roboswag.mvi_arch.core.MviViewModel -import ru.touchin.roboswag.mvi_arch.di.ViewModelAssistedFactory -import ru.touchin.roboswag.navigation_base.fragments.EmptyState - -class LoginViewModel @AssistedInject constructor( - @Assisted arg0: SavedStateHandle, - private val coordinator: LoginCoordinator -) : MviViewModel(LoginViewState, arg0) { - - override fun dispatchAction(action: LoginViewAction) { - when (action) { - LoginViewAction.GoToMainScreenButtonClicked -> coordinator.openMainScreen() - } - } - - @AssistedInject.Factory - interface Factory : ViewModelAssistedFactory - -} diff --git a/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewState.kt b/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewState.kt deleted file mode 100644 index 1508948..0000000 --- a/features/feature_login/src/main/java/ru/touchin/template/feature_login/presentation/LoginViewState.kt +++ /dev/null @@ -1,5 +0,0 @@ -package ru.touchin.template.feature_login.presentation - -import ru.touchin.roboswag.mvi_arch.marker.ViewState - -object LoginViewState : ViewState diff --git a/features/feature_login/src/main/res/layout/fragment_login.xml b/features/feature_login/src/main/res/layout/fragment_login.xml deleted file mode 100644 index e566a1a..0000000 --- a/features/feature_login/src/main/res/layout/fragment_login.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -