diff --git a/app/src/main/java/com/frogobox/appsdk/FrogoApp.kt b/app/src/main/java/com/frogobox/appsdk/FrogoApp.kt index 823096d..dd3fd44 100644 --- a/app/src/main/java/com/frogobox/appsdk/FrogoApp.kt +++ b/app/src/main/java/com/frogobox/appsdk/FrogoApp.kt @@ -9,7 +9,6 @@ import com.frogobox.appsdk.di.viewModelModule import com.frogobox.appsdk.util.AppConstant.CHANNEL_ID import com.frogobox.appsdk.util.AppConstant.CHANNEL_NAME import com.frogobox.sdk.FrogoApplication -import com.frogobox.sdk.FrogoKoinApplication import java.util.* /** diff --git a/core-sdk-android/src/main/java/com/frogobox/sdk/FrogoKoinApplication.kt b/app/src/main/java/com/frogobox/appsdk/FrogoKoinApplication.kt similarity index 93% rename from core-sdk-android/src/main/java/com/frogobox/sdk/FrogoKoinApplication.kt rename to app/src/main/java/com/frogobox/appsdk/FrogoKoinApplication.kt index 289e32c..991db1b 100644 --- a/core-sdk-android/src/main/java/com/frogobox/sdk/FrogoKoinApplication.kt +++ b/app/src/main/java/com/frogobox/appsdk/FrogoKoinApplication.kt @@ -1,5 +1,6 @@ -package com.frogobox.sdk +package com.frogobox.appsdk +import com.frogobox.sdk.FrogoApplication import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidLogger import org.koin.core.KoinApplication diff --git a/app/src/main/java/com/frogobox/appsdk/news/NewsActivity.kt b/app/src/main/java/com/frogobox/appsdk/news/NewsActivity.kt index 1ac7702..a8ef5ce 100644 --- a/app/src/main/java/com/frogobox/appsdk/news/NewsActivity.kt +++ b/app/src/main/java/com/frogobox/appsdk/news/NewsActivity.kt @@ -42,7 +42,7 @@ class NewsActivity : BaseActivity() { private fun setupRecyclerView(data: List
) { binding.recyclerView.apply { adapter = NewsViewAdapter().apply { - setupData(data) + setItems(data) } layoutManager = LinearLayoutManager(context).apply { orientation = LinearLayoutManager.VERTICAL diff --git a/app/src/main/java/com/frogobox/appsdk/news/NewsViewAdapter.kt b/app/src/main/java/com/frogobox/appsdk/news/NewsViewAdapter.kt index 7c46ad9..9da322a 100644 --- a/app/src/main/java/com/frogobox/appsdk/news/NewsViewAdapter.kt +++ b/app/src/main/java/com/frogobox/appsdk/news/NewsViewAdapter.kt @@ -2,12 +2,14 @@ package com.frogobox.appsdk.news import android.view.LayoutInflater import android.view.ViewGroup +import androidx.recyclerview.widget.AsyncListDiffer +import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.frogobox.appsdk.databinding.ItemNewsBinding import com.frogobox.appsdk.model.Article -/* +/** * Created by faisalamir on 11/04/22 * FrogoSDK * ----------------------------------------- @@ -22,11 +24,26 @@ import com.frogobox.appsdk.model.Article class NewsViewAdapter : RecyclerView.Adapter() { - private val listData = mutableListOf
() + private val diffUtil = object : DiffUtil.ItemCallback
() { + override fun areItemsTheSame( + oldItem: Article, + newItem: Article + ): Boolean { + return oldItem.id == newItem.id + } - fun setupData(data: List
) { - listData.clear() - listData.addAll(data) + override fun areContentsTheSame( + oldItem: Article, + newItem: Article + ): Boolean { + return oldItem == newItem + } + } + + private val asyncListDiffer = AsyncListDiffer(this, diffUtil) + + fun setItems(data: List
) { + asyncListDiffer.submitList(data) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NewsViewHolder { @@ -40,11 +57,11 @@ class NewsViewAdapter : RecyclerView.Adapter() { } override fun onBindViewHolder(holder: NewsViewHolder, position: Int) { - holder.bind(listData[position]) + holder.bind(asyncListDiffer.currentList[position]) } override fun getItemCount(): Int { - return listData.size + return asyncListDiffer.currentList.size } } \ No newline at end of file diff --git a/app/src/main/java/com/frogobox/appsdk/news/result/NewsResultActivity.kt b/app/src/main/java/com/frogobox/appsdk/news/result/NewsResultActivity.kt index c5b7e29..f92cf31 100644 --- a/app/src/main/java/com/frogobox/appsdk/news/result/NewsResultActivity.kt +++ b/app/src/main/java/com/frogobox/appsdk/news/result/NewsResultActivity.kt @@ -52,7 +52,7 @@ class NewsResultActivity : BaseActivity() { private fun setupRecyclerView(data: List
) { binding.recyclerView.apply { adapter = NewsViewAdapter().apply { - setupData(data) + setItems(data) } layoutManager = LinearLayoutManager(context).apply { orientation = LinearLayoutManager.VERTICAL diff --git a/build.gradle.kts b/build.gradle.kts index af05f2f..c619d43 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.2.0" apply false - id("com.android.library") version "8.2.0" apply false - id("com.google.devtools.ksp") version "1.9.10-1.0.13" apply false + id("com.android.application") version "8.3.1" apply false + id("com.android.library") version "8.3.1" apply false + id("com.google.devtools.ksp") version "1.9.23-1.0.19" apply false id("org.jetbrains.kotlin.android") version DependencyGradle.KOTLIN_VERSION apply false id("org.jetbrains.kotlin.jvm") version DependencyGradle.KOTLIN_VERSION apply false } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 1aa73cc..5fae5f3 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -9,5 +9,5 @@ repositories { dependencies { // library frogo-build-src - implementation("com.github.frogobox:open-build-src:3.0.2") + implementation("com.github.frogobox:open-build-src:3.0.3") } \ No newline at end of file diff --git a/core-sdk-android-util/build.gradle.kts b/core-sdk-android-util/build.gradle.kts index 007f919..09248ae 100644 --- a/core-sdk-android-util/build.gradle.kts +++ b/core-sdk-android-util/build.gradle.kts @@ -12,7 +12,6 @@ android { defaultConfig { minSdk = ProjectSetting.PROJECT_MIN_SDK - targetSdk = ProjectSetting.PROJECT_TARGET_SDK multiDexEnabled = true vectorDrawables.useSupportLibrary = true diff --git a/core-sdk-android/build.gradle.kts b/core-sdk-android/build.gradle.kts index ef53e7d..cb3010a 100644 --- a/core-sdk-android/build.gradle.kts +++ b/core-sdk-android/build.gradle.kts @@ -12,7 +12,6 @@ android { defaultConfig { minSdk = ProjectSetting.PROJECT_MIN_SDK - targetSdk = ProjectSetting.PROJECT_TARGET_SDK multiDexEnabled = true vectorDrawables.useSupportLibrary = true @@ -61,10 +60,6 @@ dependencies { api(Reactivex.rxAndroid3) - api(Koin.android) - api(Koin.androidCompat) - api(Koin.androidxWorkManager) - api(GitHub.chucker) api(GitHub.glide) @@ -73,10 +68,10 @@ dependencies { ksp(Androidx.Lifecycle.compiler) ksp(Androidx.Room.compiler) ksp(GitHub.glideCompiler) - api("ch.acra:acra-mail:5.11.3") + api(Util.Acra.mail) - ksp("com.google.auto.service:auto-service:1.1.1") - compileOnly("com.google.auto.service:auto-service-annotations:1.1.1") + ksp(Google.autoService) + compileOnly(Google.autoServiceAnnotation) } diff --git a/core-sdk-android/src/main/java/com/frogobox/sdk/FrogoApplication.kt b/core-sdk-android/src/main/java/com/frogobox/sdk/FrogoApplication.kt index 0f69f4a..86d2c4d 100644 --- a/core-sdk-android/src/main/java/com/frogobox/sdk/FrogoApplication.kt +++ b/core-sdk-android/src/main/java/com/frogobox/sdk/FrogoApplication.kt @@ -31,17 +31,15 @@ abstract class FrogoApplication : Application() { } open fun setupCAOC() { - if (isDebugMode()) { - CaocConfig.Builder.create() - .enabled(true) // default: true - .showErrorDetails(true) // default: true - .showRestartButton(true) // default: true - .logErrorOnRestart(true) // default: true - .trackActivities(true) // default: false - .minTimeBetweenCrashesMs(3000) //default: 3000 - .errorActivity(customErrorActivity()) //default: null (default error activity) - .apply() - } + CaocConfig.Builder.create() + .enabled(true) // default: true + .showErrorDetails(true) // default: true + .showRestartButton(true) // default: true + .logErrorOnRestart(true) // default: true + .trackActivities(true) // default: false + .minTimeBetweenCrashesMs(3000) //default: 3000 + .errorActivity(customErrorActivity()) //default: null (default error activity) + .apply() } open fun customErrorActivity(): Class { @@ -67,8 +65,11 @@ abstract class FrogoApplication : Application() { override fun onCreate() { super.onCreate() onCreateExt() - setupCAOC() - setupACRA() + if (isDebugMode()) { + setupCAOC() + } else { + setupACRA() + } } } \ No newline at end of file diff --git a/core-sdk/build.gradle.kts b/core-sdk/build.gradle.kts index 664f89f..77e53d7 100644 --- a/core-sdk/build.gradle.kts +++ b/core-sdk/build.gradle.kts @@ -31,8 +31,6 @@ dependencies { api(Square.Retrofit2.converterGson) api(Square.Retrofit2.adapterRxJava3) - api(Koin.core) - api(Reactivex.rxJava3) } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index af0b591..d2a6394 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip diff --git a/settings.gradle.kts b/settings.gradle.kts index 77afaf3..c741e75 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,7 +1,13 @@ pluginManagement { repositories { gradlePluginPortal() - google() + google{ + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } mavenCentral() maven("https://jitpack.io") }