From 3c0711a179ed0f7f6606b4aed878d8fda4ffbac4 Mon Sep 17 00:00:00 2001 From: Ahmed Eltaher Date: Sun, 31 Jan 2021 23:08:03 +0100 Subject: [PATCH] Clean greadle file & update decencies, update UI test by Hilt annotations. --- app/build.gradle | 104 ++++++------------ app/src/androidTest/java/com/task/AppTest.kt | 4 - .../java/com/task/CustomTestRunner.kt | 4 +- .../java/com/task/di/TestDataModule.kt | 6 +- .../component/details/DetailsActivityTest.kt | 12 +- .../ui/component/login/LoginActivityTest.kt | 11 +- .../recipes/RecipesListActivityTest.kt | 9 +- app/src/main/java/com/task/App.kt | 12 +- .../com/task/data/error/mapper/ErrorMapper.kt | 19 ++-- ...apperInterface.kt => ErrorMapperSource.kt} | 2 +- .../java/com/task/data/local/LocalData.kt | 8 +- app/src/main/java/com/task/di/AppModule.kt | 10 +- app/src/main/java/com/task/di/ErrorModule.kt | 8 +- .../java/com/task/ui/base/BaseViewModel.kt | 5 +- .../ui/component/splash/SplashActivity.kt | 2 - .../ui/component/splash/SplashViewModel.kt | 11 -- .../com/task/usecase/errors/ErrorManager.kt | 2 +- .../{ErrorFactory.kt => ErrorUseCase.kt} | 2 +- app/src/main/java/com/task/utils/ViewExt.kt | 4 +- build.gradle | 45 ++------ 20 files changed, 101 insertions(+), 179 deletions(-) delete mode 100644 app/src/androidTest/java/com/task/AppTest.kt rename app/src/main/java/com/task/data/error/mapper/{ErrorMapperInterface.kt => ErrorMapperSource.kt} (78%) delete mode 100644 app/src/main/java/com/task/ui/component/splash/SplashViewModel.kt rename app/src/main/java/com/task/usecase/errors/{ErrorFactory.kt => ErrorUseCase.kt} (81%) diff --git a/app/build.gradle b/app/build.gradle index c99b439..db5eddf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,25 +1,26 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' -apply plugin: 'kotlin-kapt' -apply plugin: 'kotlin-platform-android' -apply plugin: 'dagger.hilt.android.plugin' +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'kotlin-android-extensions' + id 'kotlin-kapt' + id 'kotlin-platform-android' + id 'dagger.hilt.android.plugin' +} android { - compileSdkVersion 30 - buildToolsVersion '30.0.2' + compileSdkVersion rootProject.compileSdkVersion + buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId 'com.eltaher.task' minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 1 versionName "1.0" - multiDexEnabled true vectorDrawables.useSupportLibrary = true testInstrumentationRunner "com.task.CustomTestRunner" } - buildFeatures{ + buildFeatures { viewBinding = true } buildTypes { @@ -32,7 +33,6 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - flavorDimensions "default" productFlavors { dev { @@ -47,32 +47,21 @@ android { targetCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8 } - productFlavors { - } - defaultConfig { - testInstrumentationRunnerArguments clearPackageData: 'true' - } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8 } - packagingOptions { - pickFirst 'META-INF/kotlinx-io.kotlin_module' - pickFirst 'META-INF/atomicfu.kotlin_module' - pickFirst 'META-INF/kotlinx-coroutines-core.kotlin_module' - pickFirst 'META-INF/kotlinx-coroutines-io.kotlin_module' - } - configurations.all { resolutionStrategy { exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug" } } - + defaultConfig { + testInstrumentationRunnerArguments clearPackageData: 'true' + } testOptions { unitTests.returnDefaultValues = true } - android { sourceSets { String sharedTestDir = 'src/sharedTest/resources' @@ -90,71 +79,40 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //kotlin implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" implementation "androidx.annotation:annotation:$annotationVersion" - + implementation "com.squareup.picasso:picasso:$picassoVersion" + androidTestImplementation "androidx.test.ext:junit-ktx:$androidXJunitVersion" /**-------------------testing libs------------------------------------------**/ //UI Testing , AndroidJUnitRunner and JUnit Rules &Espresso dependencies //junit 5 testImplementation "org.junit.jupiter:junit-jupiter-engine:$junitVersion" - testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" - testImplementation "org.junit.platform:junit-platform-runner:$junitRunnerVersion" - androidTestImplementation "androidx.test.ext:junit:$androidXJunitVersion" + testImplementation "io.mockk:mockk:$mockVersion" androidTestImplementation "org.assertj:assertj-core:$assertjVersion" - androidTestImplementation "androidx.arch.core:core-testing:$coreTestingVersion" androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoIntentsVersion" - androidTestImplementation ("androidx.test.espresso:espresso-core:$espressoCoreVersion",{ - exclude group: 'com.android.support', module: 'support-annotations' - }) - implementation "androidx.test:rules:$testRulesVersion" - androidTestImplementation "androidx.test:runner:$runnerVersion" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesTestVersion" + implementation "androidx.arch.core:core-testing:$coreTestingVersion" implementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion" implementation "androidx.test.espresso:espresso-contrib:$espressoVersion" - implementation "androidx.arch.core:core-testing:$coreTestingVersion" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesTestVersion" - /**-------------------------------------------------------------**/ - - //android support & recyclerview - implementation "androidx.recyclerview:recyclerview:$recyclerviewVersion" + //android support implementation "androidx.appcompat:appcompat:$appcompatVersion" implementation "com.google.android.material:material:$materialVersion" - - implementation "androidx.coordinatorlayout:coordinatorlayout:$coordinatorLayoutVersion" - implementation "androidx.constraintlayout:constraintlayout:$constraintLayoutVersion" - implementation "androidx.cardview:cardview:$cardViewVersion" - - - - //Logging - implementation "com.squareup.okhttp3:logging-interceptor:$okhttpInterceptorVersion" - // retrofit - implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion" implementation "com.squareup.moshi:moshi:$moshiVersion" kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshiVersion" - implementation "com.squareup.okhttp3:okhttp:$okhttpVersion" - - //picasso - implementation "com.squareup.picasso:picasso:$picassoVersion" - - //MultiDex - implementation "androidx.multidex:multidex:$multiDexVersion" - - testImplementation "io.mockk:mockk:$mockVersion" - - //coroutines - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesCoreVersion" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutinesCommonVersion" - implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleExtensionsVersion" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleKTXVersion" - implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleKTXVersion" - implementation "androidx.core:core-ktx:$coreKtxVersion" + implementation "com.squareup.okhttp3:logging-interceptor:$okhttpInterceptorVersion" + implementation("com.github.bumptech.glide:glide:$glid") { + exclude group: "com.android.support" + } implementation "androidx.activity:activity-ktx:$activityKtxVersion" - - implementation 'com.google.dagger:hilt-android:2.31.2-alpha' - kapt 'com.google.dagger:hilt-android-compiler:2.31.2-alpha' + // Hilt + implementation "com.google.dagger:hilt-android:$hilt_version" + implementation "androidx.hilt:hilt-lifecycle-viewmodel:$hilt_viewmodels" + kapt "com.google.dagger:hilt-compiler:$hilt_version" + androidTestImplementation "com.google.dagger:hilt-android-testing:$hilt_version" + kaptAndroidTest "com.google.dagger:hilt-android-compiler:$hilt_version" } kapt { correctErrorTypes true diff --git a/app/src/androidTest/java/com/task/AppTest.kt b/app/src/androidTest/java/com/task/AppTest.kt deleted file mode 100644 index f043adc..0000000 --- a/app/src/androidTest/java/com/task/AppTest.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.task - -class AppTest: App() { -} diff --git a/app/src/androidTest/java/com/task/CustomTestRunner.kt b/app/src/androidTest/java/com/task/CustomTestRunner.kt index 2442e03..68ee26c 100644 --- a/app/src/androidTest/java/com/task/CustomTestRunner.kt +++ b/app/src/androidTest/java/com/task/CustomTestRunner.kt @@ -3,14 +3,14 @@ package com.task import android.app.Application import android.content.Context import androidx.test.runner.AndroidJUnitRunner +import dagger.hilt.android.testing.HiltTestApplication /** * A custom [AndroidJUnitRunner] used to replace the application used in tests with a * [CustomTestRunner]. */ class CustomTestRunner : AndroidJUnitRunner() { - override fun newApplication(cl: ClassLoader?, name: String?, context: Context?): Application { - return super.newApplication(cl, AppTest::class.java.name, context) + return super.newApplication(cl, HiltTestApplication::class.java.name, context) } } diff --git a/app/src/androidTest/java/com/task/di/TestDataModule.kt b/app/src/androidTest/java/com/task/di/TestDataModule.kt index d4420c5..81d6697 100644 --- a/app/src/androidTest/java/com/task/di/TestDataModule.kt +++ b/app/src/androidTest/java/com/task/di/TestDataModule.kt @@ -6,10 +6,14 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import dagger.hilt.testing.TestInstallIn import javax.inject.Singleton @Module -@InstallIn(SingletonComponent::class) +@TestInstallIn( + components = [SingletonComponent::class], + replaces = [DataModule::class] +) abstract class TestDataModule { @Binds @Singleton diff --git a/app/src/androidTest/java/com/task/ui/component/details/DetailsActivityTest.kt b/app/src/androidTest/java/com/task/ui/component/details/DetailsActivityTest.kt index d64b9ad..c02e256 100644 --- a/app/src/androidTest/java/com/task/ui/component/details/DetailsActivityTest.kt +++ b/app/src/androidTest/java/com/task/ui/component/details/DetailsActivityTest.kt @@ -7,25 +7,29 @@ import androidx.test.espresso.IdlingResource import androidx.test.espresso.action.ViewActions.scrollTo import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.* -import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.rule.ActivityTestRule import com.task.R +import com.task.RECIPE_ITEM_KEY import com.task.TestUtil.initData import com.task.TestUtil.recipes -import com.task.RECIPE_ITEM_KEY import com.task.utils.EspressoIdlingResource +import dagger.hilt.android.testing.HiltAndroidRule +import dagger.hilt.android.testing.HiltAndroidTest import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test -import org.junit.runner.RunWith /** * Created by AhmedEltaher */ -@RunWith(AndroidJUnit4::class) +@HiltAndroidTest class DetailsActivityTest { + + @get:Rule + var hiltRule = HiltAndroidRule(this) + @get:Rule var mActivityTestRule = ActivityTestRule(DetailsActivity::class.java, true, false) private var mIdlingResource: IdlingResource? = null diff --git a/app/src/androidTest/java/com/task/ui/component/login/LoginActivityTest.kt b/app/src/androidTest/java/com/task/ui/component/login/LoginActivityTest.kt index ce7a8ec..740c38e 100644 --- a/app/src/androidTest/java/com/task/ui/component/login/LoginActivityTest.kt +++ b/app/src/androidTest/java/com/task/ui/component/login/LoginActivityTest.kt @@ -10,24 +10,27 @@ import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent import androidx.test.espresso.intent.rule.IntentsTestRule import androidx.test.espresso.matcher.RootMatchers.withDecorView import androidx.test.espresso.matcher.ViewMatchers.* -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.filters.LargeTest import com.task.R +import dagger.hilt.android.testing.HiltAndroidRule +import dagger.hilt.android.testing.HiltAndroidTest import org.hamcrest.CoreMatchers.`is` import org.hamcrest.CoreMatchers.not import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test -import org.junit.runner.RunWith import java.lang.Thread.sleep /** * Created by AhmedEltaher */ -@RunWith(AndroidJUnit4::class) +@HiltAndroidTest class LoginActivityTest { + + @get:Rule + var hiltRule = HiltAndroidRule(this) + @get:Rule var mActivityTestRule = IntentsTestRule(LoginActivity::class.java, true, false) diff --git a/app/src/androidTest/java/com/task/ui/component/recipes/RecipesListActivityTest.kt b/app/src/androidTest/java/com/task/ui/component/recipes/RecipesListActivityTest.kt index 9ac2fc8..9fd992b 100644 --- a/app/src/androidTest/java/com/task/ui/component/recipes/RecipesListActivityTest.kt +++ b/app/src/androidTest/java/com/task/ui/component/recipes/RecipesListActivityTest.kt @@ -13,25 +13,28 @@ import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.contrib.RecyclerViewActions import androidx.test.espresso.matcher.RootMatchers import androidx.test.espresso.matcher.ViewMatchers.* -import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.rule.ActivityTestRule import com.task.DataStatus import com.task.R import com.task.TestUtil.dataStatus import com.task.TestUtil.recipes import com.task.utils.EspressoIdlingResource +import dagger.hilt.android.testing.HiltAndroidRule +import dagger.hilt.android.testing.HiltAndroidTest import org.hamcrest.CoreMatchers import org.hamcrest.Matchers.not import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test -import org.junit.runner.RunWith import java.lang.Thread.sleep -@RunWith(AndroidJUnit4::class) +@HiltAndroidTest class RecipesListActivityTest { + @get:Rule + var hiltRule = HiltAndroidRule(this) + @get:Rule var mActivityTestRule = ActivityTestRule(RecipesListActivity::class.java, false, false) private var mIdlingResource: IdlingResource? = null diff --git a/app/src/main/java/com/task/App.kt b/app/src/main/java/com/task/App.kt index 443ab95..6ba1f69 100644 --- a/app/src/main/java/com/task/App.kt +++ b/app/src/main/java/com/task/App.kt @@ -8,14 +8,4 @@ import dagger.hilt.android.HiltAndroidApp * Created by AhmedEltaher */ @HiltAndroidApp -open class App : Application() { - - override fun onCreate() { - super.onCreate() - context = applicationContext - } - - companion object { - lateinit var context: Context - } -} +open class App : Application() diff --git a/app/src/main/java/com/task/data/error/mapper/ErrorMapper.kt b/app/src/main/java/com/task/data/error/mapper/ErrorMapper.kt index 1ab8679..3c69c4b 100644 --- a/app/src/main/java/com/task/data/error/mapper/ErrorMapper.kt +++ b/app/src/main/java/com/task/data/error/mapper/ErrorMapper.kt @@ -1,23 +1,24 @@ package com.task.data.error.mapper -import com.task.App +import android.content.Context import com.task.R import com.task.data.error.* +import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject -class ErrorMapper @Inject constructor() : ErrorMapperInterface { +class ErrorMapper @Inject constructor(@ApplicationContext val context: Context) : ErrorMapperSource { override fun getErrorString(errorId: Int): String { - return App.context.getString(errorId) + return context.getString(errorId) } override val errorsMap: Map get() = mapOf( - Pair(NO_INTERNET_CONNECTION, getErrorString(R.string.no_internet)), - Pair(NETWORK_ERROR, getErrorString(R.string.network_error)), - Pair(PASS_WORD_ERROR, getErrorString(R.string.invalid_password)), - Pair(USER_NAME_ERROR, getErrorString(R.string.invalid_username)), - Pair(CHECK_YOUR_FIELDS, getErrorString(R.string.invalid_username_and_password)), - Pair(SEARCH_ERROR, getErrorString(R.string.search_error)) + Pair(NO_INTERNET_CONNECTION, getErrorString(R.string.no_internet)), + Pair(NETWORK_ERROR, getErrorString(R.string.network_error)), + Pair(PASS_WORD_ERROR, getErrorString(R.string.invalid_password)), + Pair(USER_NAME_ERROR, getErrorString(R.string.invalid_username)), + Pair(CHECK_YOUR_FIELDS, getErrorString(R.string.invalid_username_and_password)), + Pair(SEARCH_ERROR, getErrorString(R.string.search_error)) ).withDefault { getErrorString(R.string.network_error) } } diff --git a/app/src/main/java/com/task/data/error/mapper/ErrorMapperInterface.kt b/app/src/main/java/com/task/data/error/mapper/ErrorMapperSource.kt similarity index 78% rename from app/src/main/java/com/task/data/error/mapper/ErrorMapperInterface.kt rename to app/src/main/java/com/task/data/error/mapper/ErrorMapperSource.kt index 80127a1..bd1aa91 100644 --- a/app/src/main/java/com/task/data/error/mapper/ErrorMapperInterface.kt +++ b/app/src/main/java/com/task/data/error/mapper/ErrorMapperSource.kt @@ -1,6 +1,6 @@ package com.task.data.error.mapper -interface ErrorMapperInterface { +interface ErrorMapperSource { fun getErrorString(errorId: Int): String val errorsMap: Map } diff --git a/app/src/main/java/com/task/data/local/LocalData.kt b/app/src/main/java/com/task/data/local/LocalData.kt index 3835517..279e24d 100644 --- a/app/src/main/java/com/task/data/local/LocalData.kt +++ b/app/src/main/java/com/task/data/local/LocalData.kt @@ -1,12 +1,12 @@ package com.task.data.local +import android.content.Context import android.content.SharedPreferences -import com.task.App.Companion.context +import com.task.FAVOURITES_KEY +import com.task.SHARED_PREFERENCES_FILE_NAME import com.task.data.Resource import com.task.data.dto.login.LoginRequest import com.task.data.dto.login.LoginResponse -import com.task.FAVOURITES_KEY -import com.task.SHARED_PREFERENCES_FILE_NAME import com.task.data.error.PASS_WORD_ERROR import javax.inject.Inject @@ -14,7 +14,7 @@ import javax.inject.Inject * Created by AhmedEltaher */ -class LocalData @Inject constructor() { +class LocalData @Inject constructor(val context: Context) { fun doLogin(loginRequest: LoginRequest): Resource { if (loginRequest == LoginRequest("ahmed@ahmed.ahmed", "ahmed")) { diff --git a/app/src/main/java/com/task/di/AppModule.kt b/app/src/main/java/com/task/di/AppModule.kt index 153ab89..ebca587 100644 --- a/app/src/main/java/com/task/di/AppModule.kt +++ b/app/src/main/java/com/task/di/AppModule.kt @@ -1,5 +1,6 @@ package com.task.di +import android.content.Context import com.task.App import com.task.data.local.LocalData import com.task.utils.Network @@ -7,6 +8,7 @@ import com.task.utils.NetworkConnectivity import dagger.Module import dagger.Provides import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import kotlinx.coroutines.Dispatchers import javax.inject.Singleton @@ -17,8 +19,8 @@ import kotlin.coroutines.CoroutineContext class AppModule { @Provides @Singleton - fun provideLocalRepository(): LocalData { - return LocalData() + fun provideLocalRepository(@ApplicationContext context: Context): LocalData { + return LocalData(context) } @Provides @@ -29,7 +31,7 @@ class AppModule { @Provides @Singleton - fun provideNetworkConnectivity(): NetworkConnectivity { - return Network(App.context) + fun provideNetworkConnectivity(@ApplicationContext context: Context): NetworkConnectivity { + return Network(context) } } diff --git a/app/src/main/java/com/task/di/ErrorModule.kt b/app/src/main/java/com/task/di/ErrorModule.kt index 12f4bf1..631d64c 100644 --- a/app/src/main/java/com/task/di/ErrorModule.kt +++ b/app/src/main/java/com/task/di/ErrorModule.kt @@ -1,8 +1,8 @@ package com.task.di import com.task.data.error.mapper.ErrorMapper -import com.task.data.error.mapper.ErrorMapperInterface -import com.task.usecase.errors.ErrorFactory +import com.task.data.error.mapper.ErrorMapperSource +import com.task.usecase.errors.ErrorUseCase import com.task.usecase.errors.ErrorManager import dagger.Binds import dagger.Module @@ -16,9 +16,9 @@ import javax.inject.Singleton abstract class ErrorModule { @Binds @Singleton - abstract fun provideErrorFactoryImpl(errorManager: ErrorManager): ErrorFactory + abstract fun provideErrorFactoryImpl(errorManager: ErrorManager): ErrorUseCase @Binds @Singleton - abstract fun provideErrorMapper(errorMapper: ErrorMapper): ErrorMapperInterface + abstract fun provideErrorMapper(errorMapper: ErrorMapper): ErrorMapperSource } diff --git a/app/src/main/java/com/task/ui/base/BaseViewModel.kt b/app/src/main/java/com/task/ui/base/BaseViewModel.kt index 83c3b02..37ca786 100644 --- a/app/src/main/java/com/task/ui/base/BaseViewModel.kt +++ b/app/src/main/java/com/task/ui/base/BaseViewModel.kt @@ -1,8 +1,8 @@ package com.task.ui.base import androidx.lifecycle.ViewModel -import com.task.data.error.mapper.ErrorMapper import com.task.usecase.errors.ErrorManager +import javax.inject.Inject /** @@ -14,5 +14,6 @@ abstract class BaseViewModel : ViewModel() { /**Inject Singleton ErrorManager * Use this errorManager to get the Errors */ - val errorManager: ErrorManager = ErrorManager(ErrorMapper()) + @Inject + lateinit var errorManager: ErrorManager } diff --git a/app/src/main/java/com/task/ui/component/splash/SplashActivity.kt b/app/src/main/java/com/task/ui/component/splash/SplashActivity.kt index 5b6c871..299ff8c 100644 --- a/app/src/main/java/com/task/ui/component/splash/SplashActivity.kt +++ b/app/src/main/java/com/task/ui/component/splash/SplashActivity.kt @@ -16,8 +16,6 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class SplashActivity : BaseActivity(){ - private val splashViewModel: SplashViewModel by viewModels() - private lateinit var binding: SplashLayoutBinding override fun initViewBinding() { diff --git a/app/src/main/java/com/task/ui/component/splash/SplashViewModel.kt b/app/src/main/java/com/task/ui/component/splash/SplashViewModel.kt deleted file mode 100644 index 3c8d730..0000000 --- a/app/src/main/java/com/task/ui/component/splash/SplashViewModel.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.task.ui.component.splash - -import com.task.ui.base.BaseViewModel -import dagger.hilt.android.lifecycle.HiltViewModel -import javax.inject.Inject - -/** - * Created by AhmedEltaher - */ -@HiltViewModel -class SplashViewModel @Inject constructor() : BaseViewModel() diff --git a/app/src/main/java/com/task/usecase/errors/ErrorManager.kt b/app/src/main/java/com/task/usecase/errors/ErrorManager.kt index b358a65..ff64698 100644 --- a/app/src/main/java/com/task/usecase/errors/ErrorManager.kt +++ b/app/src/main/java/com/task/usecase/errors/ErrorManager.kt @@ -8,7 +8,7 @@ import javax.inject.Inject * Created by AhmedEltaher */ -class ErrorManager @Inject constructor(private val errorMapper: ErrorMapper) : ErrorFactory { +class ErrorManager @Inject constructor(private val errorMapper: ErrorMapper) : ErrorUseCase { override fun getError(errorCode: Int): Error { return Error(code = errorCode, description = errorMapper.errorsMap.getValue(errorCode)) } diff --git a/app/src/main/java/com/task/usecase/errors/ErrorFactory.kt b/app/src/main/java/com/task/usecase/errors/ErrorUseCase.kt similarity index 81% rename from app/src/main/java/com/task/usecase/errors/ErrorFactory.kt rename to app/src/main/java/com/task/usecase/errors/ErrorUseCase.kt index 5a9f8b2..bce09c1 100644 --- a/app/src/main/java/com/task/usecase/errors/ErrorFactory.kt +++ b/app/src/main/java/com/task/usecase/errors/ErrorUseCase.kt @@ -2,6 +2,6 @@ package com.task.usecase.errors import com.task.data.error.Error -interface ErrorFactory { +interface ErrorUseCase { fun getError(errorCode: Int): Error } diff --git a/app/src/main/java/com/task/utils/ViewExt.kt b/app/src/main/java/com/task/utils/ViewExt.kt index ffd0499..88d4d37 100644 --- a/app/src/main/java/com/task/utils/ViewExt.kt +++ b/app/src/main/java/com/task/utils/ViewExt.kt @@ -22,12 +22,12 @@ import com.task.App import com.task.R fun View.showKeyboard() { - (App.context.getSystemService(Service.INPUT_METHOD_SERVICE) as? InputMethodManager) + (this.context.getSystemService(Service.INPUT_METHOD_SERVICE) as? InputMethodManager) ?.showSoftInput(this, 0) } fun View.hideKeyboard() { - (App.context.getSystemService(Service.INPUT_METHOD_SERVICE) as? InputMethodManager) + (this.context.getSystemService(Service.INPUT_METHOD_SERVICE) as? InputMethodManager) ?.hideSoftInputFromWindow(this.windowToken, 0) } diff --git a/build.gradle b/build.gradle index e2efe49..357bbbc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,21 +1,18 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.4.21' + ext.hilt_version ='2.31.2-alpha' repositories { google() jcenter() - mavenCentral() - maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' } - maven { url "https://maven.google.com" } } dependencies { - classpath 'com.android.tools.build:gradle:4.1.2' - classpath 'com.google.dagger:hilt-android-gradle-plugin:2.31.2-alpha' - classpath 'com.google.dagger:hilt-android-gradle-plugin:' + classpath "com.android.tools.build:gradle:4.1.2" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'com.google.gms:google-services:4.3.4' - classpath 'com.android.support.test.espresso:espresso-idling-resource:3.0.2' } } @@ -23,9 +20,6 @@ allprojects { repositories { google() jcenter() - mavenCentral() - maven { url "https://jitpack.io" } - maven { url "https://maven.google.com" } } } @@ -39,44 +33,23 @@ ext { minSdkVersion = 21 targetSdkVersion = 30 compileSdkVersion = 30 - + buildToolsVersion = "30.0.2" junitVersion = '5.7.0' - junitRunnerVersion = '1.7.0' - androidXJunitVersion = '1.1.2' + androidXJunitVersion = '1.1.3-alpha03' assertjVersion = '3.19.0' coreTestingVersion = '2.1.0' espressoIntentsVersion = '3.3.0' - espressoCoreVersion = '3.3.0' - testRulesVersion = '1.3.0' - runnerVersion = '1.3.0' espressoVersion = '3.3.0' - coreTestingVersion = '2.1.0' coroutinesTestVersion = '1.4.2-native-mt' - recyclerviewVersion = '1.1.0' appcompatVersion='1.2.0' materialVersion= '1.3.0-rc01' - coreKtxVersion= '1.3.2' - coordinatorLayoutVersion='1.1.0' - constraintLayoutVersion= '2.0.4' - cardViewVersion='1.0.0' - activityVersion= '1.2.0-rc01' activityKtxVersion= '1.2.0-rc01' - daggerVersion = '2.31.2' retrofitVersion = '2.9.0' moshiVersion = '1.11.0' - okhttpVersion = '4.9.0' okhttpInterceptorVersion = '4.9.0' - multiDexVersion = '2.0.1' - picassoVersion = '2.71828' mockVersion = '1.10.5' - coroutinesCoreVersion ='1.3.4' - coroutinesCoreCommonVersion = '1.3.7' - lifecycleExtensionsVersion ='2.2.0' - lifecycleKTXVersion = '2.3.0-alpha04' - coroutinesCoreVersion = '1.4.2-native-mt' - coroutinesCommonVersion = '1.3.8' - lifecycleExtensionsVersion ='2.2.0' - lifecycleKTXVersion = '2.3.0-rc01' - kotlinVersion = '1.4.21' annotationVersion ='1.1.0' + glid = '4.11.0' + hilt_viewmodels = '1.0.0-alpha03' + picassoVersion = '2.71828' } \ No newline at end of file