From d439a9da09ab7d5049f54692d6f5cd99dbe541bd Mon Sep 17 00:00:00 2001 From: Mohammed Khalid Hamid Date: Sun, 20 Aug 2023 22:00:41 +0800 Subject: [PATCH] Fixed Fakerepos --- GitHubRepos/app/build.gradle.kts | 21 +--------- .../khalid/hamid/githubrepos/MercariApp.kt | 6 +-- .../githubrepos/network/RepositoryImple.kt | 38 ----------------- .../ui/timeline/ProductsTimelineViewModel.kt | 6 +-- .../ui/timeline/TimelineViewModel.kt | 6 +-- .../utilities/SafeClickListener.kt | 2 +- .../utilities/extentions/ViewExtensions.kt | 8 ++-- .../res/layout/view_holder_item_products.xml | 4 +- .../hamid/githubrepos/di/RepositoryModule.kt | 6 +-- .../network/remote/FakeDataSource.kt | 41 ++++++++++++++----- .../hamid/githubrepos/di/RepositoryModule.kt | 3 +- .../com/dependencies/tasks/ProjectTasks.kt | 19 +++++++-- 12 files changed, 67 insertions(+), 93 deletions(-) delete mode 100644 GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/network/RepositoryImple.kt diff --git a/GitHubRepos/app/build.gradle.kts b/GitHubRepos/app/build.gradle.kts index 950e474d..2fdf0647 100644 --- a/GitHubRepos/app/build.gradle.kts +++ b/GitHubRepos/app/build.gradle.kts @@ -3,26 +3,10 @@ import com.dependencies.pln plugins { id("com.khalid.hamid.KhalidAndroidPlugin") - //id("com.google.devtools.ksp") version ("1.9.0-1.0.11") -} -pln("after plugin") - -KPlugin { - pln("KPlugin Ext app...") - isLibraryModule = false - minSDK = 19 - compileSDK = "33" - targetSDK = "33" - versionCode = 10 - versionName = "1.1" - testRunner = "com.khalid.hamid.githubrepos.utilities.AppTestRunner" - lintBaseLineFilePath = "$rootDir/quality/lint-baseline.xml" - checkstylePath = "$rootDir/quality/checkstyle.xml" } allOpen.annotation("com.khalid.hamid.githubrepos.testing.OpenClass") android { - pln("android block...") namespace = "com.khalid.hamid.githubrepos" defaultConfig { applicationId = "com.khalid.hamid.githubrepos" @@ -113,7 +97,4 @@ dependencies { // Nav implementation(Dependencies.NAV_RUNTIME_FRAGMENT_KTX) debugImplementation(Dependencies.CHUCKER) -} - -pln("script end") - +} \ No newline at end of file diff --git a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/MercariApp.kt b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/MercariApp.kt index d5a3ef87..75f189ef 100644 --- a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/MercariApp.kt +++ b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/MercariApp.kt @@ -18,7 +18,7 @@ package com.khalid.hamid.githubrepos import androidx.multidex.BuildConfig import androidx.multidex.MultiDexApplication -import com.khalid.hamid.githubrepos.network.BaseRepository +import com.khalid.hamid.githubrepos.network.BaseDataSource import com.khalid.hamid.githubrepos.utilities.AppExecutors import com.khalid.hamid.githubrepos.utilities.CrashReportingTree import dagger.hilt.android.HiltAndroidApp @@ -29,7 +29,7 @@ import javax.inject.Inject class MercariApp : MultiDexApplication() { @Inject - lateinit var baseRepository: BaseRepository + lateinit var baseDataSource: BaseDataSource @Inject lateinit var appExecutors: AppExecutors @@ -40,6 +40,6 @@ class MercariApp : MultiDexApplication() { } else { Timber.plant(CrashReportingTree()) } - baseRepository.sync() + baseDataSource.sync() } } diff --git a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/network/RepositoryImple.kt b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/network/RepositoryImple.kt deleted file mode 100644 index 9f6f461d..00000000 --- a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/network/RepositoryImple.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021 Mohammed Khalid Hamid. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.khalid.hamid.githubrepos.network - -import com.khalid.hamid.githubrepos.network.local.LocalDataSource -import com.khalid.hamid.githubrepos.network.remote.RemoteDataSource - -/** - * This will return data from either DB or get from network -*/ -class RepositoryImple constructor( - private val remoteDataSource: RemoteDataSource, - private val localDataSource: LocalDataSource -) { - - /*override var isSyncing = false - override suspend fun fetchProductCategories(url: String): Result { - remoteDataSource.fetchProductCategories(url) - } - - override suspend fun fetchProductForCategory(url: String) : Result{ - remoteDataSource.fetchProductForCategory(url) - }*/ -} diff --git a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/ui/timeline/ProductsTimelineViewModel.kt b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/ui/timeline/ProductsTimelineViewModel.kt index 7da3baf1..54721448 100644 --- a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/ui/timeline/ProductsTimelineViewModel.kt +++ b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/ui/timeline/ProductsTimelineViewModel.kt @@ -19,14 +19,14 @@ package com.khalid.hamid.githubrepos.ui.timeline import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.khalid.hamid.githubrepos.core.BaseViewModel -import com.khalid.hamid.githubrepos.network.BaseRepository +import com.khalid.hamid.githubrepos.network.BaseDataSource import com.khalid.hamid.githubrepos.ui.timeline.dto.ProductList import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @HiltViewModel class ProductsTimelineViewModel @Inject constructor( - val baseRepository: BaseRepository + val baseDataSource: BaseDataSource ) : BaseViewModel() { val productTimelineEventLiveData: LiveData @@ -37,7 +37,7 @@ class ProductsTimelineViewModel @Inject constructor( launchAsyncAPI({ _productTimelineEventLiveData.value = FailedToFetchTimelineProducts(it.message) }) { - val products = baseRepository.getProductForCategory(categoryId) + val products = baseDataSource.getProductForCategory(categoryId) _productTimelineEventLiveData.value = ReceivedProductsEvent(products) } } diff --git a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/ui/timeline/TimelineViewModel.kt b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/ui/timeline/TimelineViewModel.kt index 04a0fe51..21dba394 100644 --- a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/ui/timeline/TimelineViewModel.kt +++ b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/ui/timeline/TimelineViewModel.kt @@ -19,7 +19,7 @@ package com.khalid.hamid.githubrepos.ui.timeline import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.khalid.hamid.githubrepos.core.BaseViewModel -import com.khalid.hamid.githubrepos.network.BaseRepository +import com.khalid.hamid.githubrepos.network.BaseDataSource import com.khalid.hamid.githubrepos.ui.timeline.dto.ProductCategoriesList import com.khalid.hamid.githubrepos.ui.timeline.dto.ProductList import com.khalid.hamid.githubrepos.utilities.Prefs @@ -29,7 +29,7 @@ import javax.inject.Inject @HiltViewModel class TimelineViewModel @Inject constructor( - val baseRepository: BaseRepository, + val baseDataSource: BaseDataSource, val perf: Prefs ) : BaseViewModel() { @@ -45,7 +45,7 @@ class TimelineViewModel @Inject constructor( launchAsyncAPI({ _mainTimelineEventLiveData.value = FailedToFetchProducts(it.message) }) { - baseRepository.run { + baseDataSource.run { Timber.d("launchAsyncAPI") val categoriesResult = getProductCategories() val categoryName = categoriesResult.firstOrNull()?.name ?: "" diff --git a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/utilities/SafeClickListener.kt b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/utilities/SafeClickListener.kt index 168420f9..7a97ab85 100644 --- a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/utilities/SafeClickListener.kt +++ b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/utilities/SafeClickListener.kt @@ -39,7 +39,7 @@ open class SafeClickListener( } } -@BindingAdapter("app:onSingleClick") +@BindingAdapter("onSingleClick") fun View.setSafeOnClickListener(onSafeClick: (View) -> Unit) { val safeClickListener = SafeClickListener { onSafeClick(it) diff --git a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/utilities/extentions/ViewExtensions.kt b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/utilities/extentions/ViewExtensions.kt index 9c3dde92..2908c4f9 100644 --- a/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/utilities/extentions/ViewExtensions.kt +++ b/GitHubRepos/app/src/main/java/com/khalid/hamid/githubrepos/utilities/extentions/ViewExtensions.kt @@ -38,7 +38,7 @@ fun View.gone() { visibility = View.GONE } -@BindingAdapter("app:productImage") +@BindingAdapter("productImage") fun PhotoView.loadSKUImage(imageURL: String?) { Glide.with(context) .load(imageURL) @@ -48,17 +48,17 @@ fun PhotoView.loadSKUImage(imageURL: String?) { .into(this) } -@BindingAdapter("app:productStatus") +@BindingAdapter("productStatus") fun ImageView.checkStatus(value: String) { visibility = if (value == "sold_out") View.VISIBLE else View.GONE } -@BindingAdapter("app:integerData") +@BindingAdapter("integerData") fun TextView.setIntegerData(value: Int) { text = value.toString() } -@BindingAdapter("app:productPrice") +@BindingAdapter("productPrice") fun TextView.setPrice(value: Int) { val sb = StringBuilder() sb.append("$ $value") diff --git a/GitHubRepos/app/src/main/res/layout/view_holder_item_products.xml b/GitHubRepos/app/src/main/res/layout/view_holder_item_products.xml index 3eaf09c4..e1e2751e 100644 --- a/GitHubRepos/app/src/main/res/layout/view_holder_item_products.xml +++ b/GitHubRepos/app/src/main/res/layout/view_holder_item_products.xml @@ -30,7 +30,7 @@ @@ -67,7 +67,7 @@ android:layout_height="wrap_content" android:layout_toEndOf="@+id/iv_like" android:textSize="6pt" - app:integerData="@{item.numLikes}" + integerData="@{item.numLikes}" app:layout_constraintBottom_toBottomOf="@+id/iv_like" app:layout_constraintStart_toEndOf="@+id/iv_like" app:layout_constraintTop_toTopOf="@+id/iv_like" diff --git a/GitHubRepos/app/src/mock/java/com/khalid/hamid/githubrepos/di/RepositoryModule.kt b/GitHubRepos/app/src/mock/java/com/khalid/hamid/githubrepos/di/RepositoryModule.kt index a40fadbf..c6b2f0ae 100644 --- a/GitHubRepos/app/src/mock/java/com/khalid/hamid/githubrepos/di/RepositoryModule.kt +++ b/GitHubRepos/app/src/mock/java/com/khalid/hamid/githubrepos/di/RepositoryModule.kt @@ -17,7 +17,7 @@ package com.khalid.hamid.githubrepos.di import android.app.Application -import com.khalid.hamid.githubrepos.network.BaseRepository +import com.khalid.hamid.githubrepos.network.BaseDataSource import com.khalid.hamid.githubrepos.network.remote.FakeDataSource import dagger.Module import dagger.Provides @@ -31,7 +31,7 @@ class RepositoryModule { @Singleton @Provides - fun provideRepository(context: Application): BaseRepository { - return BaseRepository(FakeDataSource(context)) + fun provideRepository(context: Application): BaseDataSource { + return FakeDataSource(context) } } diff --git a/GitHubRepos/app/src/mock/java/com/khalid/hamid/githubrepos/network/remote/FakeDataSource.kt b/GitHubRepos/app/src/mock/java/com/khalid/hamid/githubrepos/network/remote/FakeDataSource.kt index 433dde6d..b46fc021 100644 --- a/GitHubRepos/app/src/mock/java/com/khalid/hamid/githubrepos/network/remote/FakeDataSource.kt +++ b/GitHubRepos/app/src/mock/java/com/khalid/hamid/githubrepos/network/remote/FakeDataSource.kt @@ -20,14 +20,41 @@ import android.app.Application import com.google.gson.Gson import com.khalid.hamid.githubrepos.network.BaseDataSource import com.khalid.hamid.githubrepos.network.Result -import com.khalid.hamid.githubrepos.ui.timeline.dto.ProductCategoriesItem -import com.khalid.hamid.githubrepos.ui.timeline.dto.ProductsItem -import com.khalid.hamid.githubrepos.utilities.runSafe +import com.khalid.hamid.githubrepos.ui.timeline.dto.ProductCategoriesList +import com.khalid.hamid.githubrepos.ui.timeline.dto.ProductList +import com.khalid.hamid.githubrepos.utilities.extentions.runSafe import javax.inject.Inject class FakeDataSource @Inject constructor(val context: Application) : BaseDataSource { val gson = Gson() + override var isSyncCompleted = false + override suspend fun fetchProductCategories(url: String): Result { + return Result.Success(ProductCategoriesList()) + } + + override suspend fun fetchProductForCategory(url: String): Result { + return Result.Success(ProductList()) + } + + override suspend fun getProductCategories(): ProductCategoriesList { + return ProductCategoriesList() + } + + override suspend fun getProductForCategory(categoryId: String): ProductList { + return ProductList() + } + + override suspend fun getAllProducts(): ProductList { + return ProductList() + } + + override fun sync() { + // no-op + } + + override var isSyncing = false + private inline fun parse(jsonPath: String): T? { var response: T? = null runSafe { @@ -38,12 +65,4 @@ class FakeDataSource @Inject constructor(val context: Application) : BaseDataSou } return response } - - override suspend fun fetchProductCategories(url: String): Result> { - TODO("Not yet implemented") - } - - override suspend fun fetchProductForCategory(url: String): Result> { - TODO("Not yet implemented") - } } diff --git a/GitHubRepos/app/src/prod/java/com/khalid/hamid/githubrepos/di/RepositoryModule.kt b/GitHubRepos/app/src/prod/java/com/khalid/hamid/githubrepos/di/RepositoryModule.kt index 9d44276e..8d1dd447 100644 --- a/GitHubRepos/app/src/prod/java/com/khalid/hamid/githubrepos/di/RepositoryModule.kt +++ b/GitHubRepos/app/src/prod/java/com/khalid/hamid/githubrepos/di/RepositoryModule.kt @@ -16,6 +16,7 @@ package com.khalid.hamid.githubrepos.di +import com.khalid.hamid.githubrepos.network.BaseDataSource import com.khalid.hamid.githubrepos.network.BaseRepository import com.khalid.hamid.githubrepos.network.local.LocalDataSource import com.khalid.hamid.githubrepos.network.remote.RemoteDataSource @@ -31,7 +32,7 @@ class RepositoryModule { @Singleton @Provides - fun provideRepository(remoteDataSource: RemoteDataSource, localDataSource: LocalDataSource): BaseRepository { + fun provideRepository(remoteDataSource: RemoteDataSource, localDataSource: LocalDataSource): BaseDataSource { return BaseRepository(remoteDataSource, localDataSource) } } diff --git a/GitHubRepos/buildSrc/src/main/java/com/dependencies/tasks/ProjectTasks.kt b/GitHubRepos/buildSrc/src/main/java/com/dependencies/tasks/ProjectTasks.kt index 4bb7a1b2..58ada3fd 100644 --- a/GitHubRepos/buildSrc/src/main/java/com/dependencies/tasks/ProjectTasks.kt +++ b/GitHubRepos/buildSrc/src/main/java/com/dependencies/tasks/ProjectTasks.kt @@ -23,9 +23,13 @@ abstract class ProjectBuildTask: DefaultTask() { } @TaskAction - fun runTask(taskString: String){ - logger.quiet("running task ", taskString) - when(taskString.lowercase()){ + fun runAll(taskString: String){ + logger.quiet("running task ") + taskString.checkTask() + } + + private fun String.checkTask(){ + when(this.lowercase()){ "spotless" -> runSpotless() "sonar" -> runSonar() "oss" -> runOSSScan() @@ -48,11 +52,18 @@ abstract class ProjectBuildTask: DefaultTask() { runtime.exec("./gradlew :app:spotlessApply") } + private fun runLint() { + pln("runLint") + runtime.exec("./gradlew :app:lintProdDebug") + } + private fun runSonar() { - // TODO: + pln("runSonar") + runtime.exec("./gradlew jacocoTestReport --stacktrace") } private fun runDepUpdates() { + pln("runDepUpdates") runtime.exec("./gradlew app:dependencyUpdates") }