diff --git a/app/build.gradle b/app/build.gradle index 921b5758..4bbc67fb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'kotlin-parcelize' apply plugin: 'kotlin-kapt' apply plugin: 'androidx.navigation.safeargs.kotlin' apply plugin: 'com.google.gms.google-services' -apply plugin: 'com.google.firebase.crashlytics' +apply plugin: 'appmetrica-plugin' ext { compose_version = "1.0.5" @@ -22,12 +22,8 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - vectorDrawables.useSupportLibrary = true - - buildConfigField "Long", "READ_TIMEOUT_SECOND", READ_TIMEOUT_SECOND - buildConfigField "Long", "CONNECTION_TIMEOUT_SECOND", CONNECTION_TIMEOUT_SECOND - - resValue "string", "google_maps_key", (project.findProperty("GOOGLE_MAPS_API_KEY") ?: "") + resValue "string", "google_maps_key", "\"${GOOGLE_MAPS_API_KEY}\"" + buildConfigField "String", "APP_METRICA_API_KEY", "\"${APP_METRICA_API_KEY}\"" } buildFeatures { @@ -38,11 +34,12 @@ android { buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.debug } debug { - manifestPlaceholders = [isBranchSdkInTestMode: "true"] + applicationIdSuffix = ".debug" } } @@ -51,11 +48,11 @@ android { productFlavors { staging { versionNameSuffix 'Staging' - buildConfigField "String", "URL_WEBAPI", "${STAGING_URL_WEBAPI_BASE_URL}" + buildConfigField "String", "URL_WEBAPI", "\"${STAGING_URL_WEBAPI_BASE_URL}\"" } production { - buildConfigField "String", "URL_WEBAPI", "${PRODUCTION_URL_WEBAPI_BASE_URL}" + buildConfigField "String", "URL_WEBAPI", "\"${PRODUCTION_URL_WEBAPI_BASE_URL}\"" } } @@ -91,9 +88,6 @@ dependencies { def koin_version = "2.0.1" implementation "org.koin:koin-android-viewmodel:$koin_version" - def androidXAnnotations = '1.0.1' - implementation "androidx.annotation:annotation:$androidXAnnotations" - def coroutinesVersion = '1.5.2' implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion" @@ -130,14 +124,14 @@ dependencies { implementation "com.github.skydoves:landscapist-glide:1.4.0" // firebase - implementation 'com.google.firebase:firebase-messaging:20.2.0' - implementation 'com.google.firebase:firebase-analytics:17.4.2' - implementation 'com.google.firebase:firebase-crashlytics:17.0.0' + implementation 'com.google.firebase:firebase-messaging-ktx:23.0.0' + implementation 'com.google.firebase:firebase-analytics-ktx:20.0.2' + + implementation 'com.yandex.android:mobmetricalib:4.1.1' def kotpref_version = "2.13.2" implementation "com.chibatching.kotpref:kotpref:$kotpref_version" implementation "com.chibatching.kotpref:gson-support:$kotpref_version" - implementation "com.chibatching.kotpref:initializer:$kotpref_version" implementation "com.chibatching.kotpref:livedata-support:$kotpref_version" // zoomable image view @@ -151,9 +145,6 @@ dependencies { implementation "com.github.marlonlom:timeago:4.0.3" - //recycler view swipe detector - implementation 'it.xabaras.android:recyclerview-swipedecorator:1.2.2' - implementation 'com.github.samanzamani.persiandate:PersianDate:0.8' //chucker debugger @@ -172,3 +163,6 @@ dependencies { implementation 'com.jakewharton.timber:timber:5.0.1' } +appmetrica { + postApiKey = "${APP_METRICA_POST_API_KEY}" +} \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json index 43016aac..ea6ec0b6 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -17,7 +17,20 @@ "current_key": "AAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" } ] + }, + { + "client_info": { + "mobilesdk_app_id": "1:1111:android:bbbbbbbbb", + "android_client_info": { + "package_name": "com.kindnesswand.debug" + } + }, + "api_key": [ + { + "current_key": "BBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + } + ] } ], "configuration_version": "1" -} \ No newline at end of file +} diff --git a/app/gradle.properties b/app/gradle.properties index 05ae66d0..2fa65a68 100644 --- a/app/gradle.properties +++ b/app/gradle.properties @@ -1,15 +1,8 @@ -################### APP_VERSION ####################### VERSION_CODE=8 VERSION_NAME=2.2.0 -####################################################### -################## Web Api Url ######################## -PRODUCTION_URL_WEBAPI_BASE_URL="http://kindnesswand.com/api/v1/" -STAGING_URL_WEBAPI_BASE_URL="http://dev.kindnesswand.com/api/v1/" -####################################################### -################## Timeout Configs #################### -READ_TIMEOUT_SECOND=20l -CONNECTION_TIMEOUT_SECOND=20l -####################################################### -##################### GOOGLE ######################### +# These properties must be override in build script +PRODUCTION_URL_WEBAPI_BASE_URL=http://kindnesswand.com/api/v1/ +STAGING_URL_WEBAPI_BASE_URL=http://dev.kindnesswand.com/api/v1/ GOOGLE_MAPS_API_KEY=googleApiKey -###################################################### +APP_METRICA_API_KEY=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa +APP_METRICA_POST_API_KEY=bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb \ No newline at end of file diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml new file mode 100644 index 00000000..9316b98c --- /dev/null +++ b/app/src/debug/res/values/strings.xml @@ -0,0 +1,4 @@ + + + نسخه دیباگ + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f191bed7..e069ad15 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,6 +6,11 @@ + + + + FirebaseMessaging.getInstance().token.addOnCompleteListener { result -> if (result.isSuccessful) { - val token = result.result?.token.toString() + val token = result.result.toString() if (token.isNotEmpty()) { UserInfoPref.fireBaseToken = token userRepo.registerFirebaseToken() diff --git a/app/src/main/java/ir/kindnesswall/KindnessApplication.kt b/app/src/main/java/ir/kindnesswall/KindnessApplication.kt index 8b5b14d7..4115378b 100644 --- a/app/src/main/java/ir/kindnesswall/KindnessApplication.kt +++ b/app/src/main/java/ir/kindnesswall/KindnessApplication.kt @@ -9,7 +9,11 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.ProcessLifecycleOwner +import com.chibatching.kotpref.Kotpref +import com.yandex.metrica.YandexMetrica +import com.yandex.metrica.YandexMetricaConfig import ir.kindnesswall.data.local.AppPref +import ir.kindnesswall.data.local.UserInfoPref import ir.kindnesswall.data.local.dao.catalog.GiftModel import ir.kindnesswall.data.model.ChatContactModel import ir.kindnesswall.di.dataBaseModule @@ -20,7 +24,7 @@ import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidLogger import org.koin.core.context.startKoin import timber.log.Timber -import java.util.* +import java.util.Locale /** * Created by farshid.abazari since 2019-11-01 @@ -49,9 +53,26 @@ class KindnessApplication : Application(), LifecycleObserver { override fun onCreate() { super.onCreate() + Kotpref.init(this) + if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree()) + if (BuildConfig.DEBUG.not()) { + YandexMetrica.activate( + this, + YandexMetricaConfig + .newConfigBuilder(BuildConfig.APP_METRICA_API_KEY) + .withLocationTracking(false) + .apply { + UserInfoPref.userId.takeIf { it != 0L } + ?.let { withUserProfileID(it.toString()) } + } + .build() + ) + YandexMetrica.enableActivityAutoTracking(this) + } + startKoin { androidLogger() androidContext(this@KindnessApplication) diff --git a/app/src/main/java/ir/kindnesswall/di/NetworkModule.kt b/app/src/main/java/ir/kindnesswall/di/NetworkModule.kt index 58849ca6..00c0ab20 100644 --- a/app/src/main/java/ir/kindnesswall/di/NetworkModule.kt +++ b/app/src/main/java/ir/kindnesswall/di/NetworkModule.kt @@ -81,9 +81,9 @@ fun headersInterceptor(addAuthHeader: Boolean) = Interceptor { chain -> private fun setTimeOutToOkHttpClient(okHttpClientBuilder: OkHttpClient.Builder) = okHttpClientBuilder.apply { - readTimeout(BuildConfig.READ_TIMEOUT_SECOND, TimeUnit.SECONDS) - connectTimeout(BuildConfig.CONNECTION_TIMEOUT_SECOND, TimeUnit.SECONDS) - writeTimeout(BuildConfig.READ_TIMEOUT_SECOND, TimeUnit.SECONDS) + readTimeout(15L, TimeUnit.SECONDS) + connectTimeout(15L, TimeUnit.SECONDS) + writeTimeout(15L, TimeUnit.SECONDS) } class NullOnEmptyConverterFactory : Converter.Factory() { diff --git a/app/src/main/java/ir/kindnesswall/view/authentication/InsertVerificationNumberFragment.kt b/app/src/main/java/ir/kindnesswall/view/authentication/InsertVerificationNumberFragment.kt index 8522e719..cd73a267 100644 --- a/app/src/main/java/ir/kindnesswall/view/authentication/InsertVerificationNumberFragment.kt +++ b/app/src/main/java/ir/kindnesswall/view/authentication/InsertVerificationNumberFragment.kt @@ -9,7 +9,7 @@ import android.view.View import android.view.ViewGroup import androidx.core.widget.doOnTextChanged import androidx.databinding.DataBindingUtil -import com.google.firebase.iid.FirebaseInstanceId +import com.google.firebase.messaging.FirebaseMessaging import ir.kindnesswall.BaseFragment import ir.kindnesswall.R import ir.kindnesswall.data.local.AppPref @@ -157,9 +157,9 @@ class InsertVerificationNumberFragment : BaseFragment() { when (it.status) { CustomResult.Status.SUCCESS -> { dismissProgressDialog() - FirebaseInstanceId.getInstance().instanceId.addOnCompleteListener { result -> + FirebaseMessaging.getInstance().token.addOnCompleteListener { result -> if (result.isSuccessful) { - val token = result.result?.token.toString() + val token = result.result.toString() if (token.isNotEmpty()) { UserInfoPref.fireBaseToken = token AppPref.shouldUpdatedFireBaseToken = true diff --git a/app/src/main/java/ir/kindnesswall/view/main/more/MoreFragment.kt b/app/src/main/java/ir/kindnesswall/view/main/more/MoreFragment.kt index 8544bfd0..fb963ada 100644 --- a/app/src/main/java/ir/kindnesswall/view/main/more/MoreFragment.kt +++ b/app/src/main/java/ir/kindnesswall/view/main/more/MoreFragment.kt @@ -5,9 +5,20 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.ViewGroup.LayoutParams +import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.combinedClickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.verticalScroll @@ -17,6 +28,7 @@ import androidx.compose.material.Text import androidx.compose.material.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.livedata.observeAsState +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -70,6 +82,7 @@ class MoreFragment : BaseFragment() { override fun configureViews() {} + @OptIn(ExperimentalFoundationApi::class) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { view as ComposeView view.setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) @@ -173,7 +186,16 @@ class MoreFragment : BaseFragment() { Text( text = stringResource(R.string.version, BuildConfig.VERSION_NAME), style = MaterialTheme.typography.overline, - modifier = Modifier.align(Alignment.CenterHorizontally) + modifier = Modifier + .align(Alignment.CenterHorizontally) + .combinedClickable( + enabled = BuildConfig.FLAVOR == "staging", + interactionSource = remember { MutableInteractionSource() }, + indication = null, + onClick = {}, + onLongClick = { throwByLongClick() }, + onDoubleClick = { throwByDoubleClick() } + ) ) } } @@ -223,6 +245,20 @@ class MoreFragment : BaseFragment() { } .show() } + + private fun throwByLongClick() { + throw RuntimeException("Hello from more fragment: long click") + } + + private fun throwByDoubleClick() { + TestCrash().crash("Hello from more fragment: double click") + } + + class TestCrash { + fun crash(message: String) { + throw RuntimeException(message) + } + } } @Composable diff --git a/build.gradle b/build.gradle index 6f98f81f..607a89df 100644 --- a/build.gradle +++ b/build.gradle @@ -17,8 +17,8 @@ buildscript { classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5" classpath 'com.google.gms:google-services:4.3.3' - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2' classpath "com.github.ben-manes:gradle-versions-plugin:0.39.0" + classpath "com.yandex.android:appmetrica-build-plugin:0.3.0" } } diff --git a/scripts/extract_dependencies/kapt.txt b/scripts/extract_dependencies/kapt.txt index b0200af4..3ebfa4a7 100644 --- a/scripts/extract_dependencies/kapt.txt +++ b/scripts/extract_dependencies/kapt.txt @@ -109,5 +109,5 @@ You can use '--warning-mode all' to show the individual deprecation warnings and See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings -BUILD SUCCESSFUL in 1s +BUILD SUCCESSFUL in 2s 1 actionable task: 1 executed diff --git a/scripts/extract_dependencies/stagingDebugRuntimeClasspath.txt b/scripts/extract_dependencies/stagingDebugRuntimeClasspath.txt index c31b89c3..ab864d34 100644 --- a/scripts/extract_dependencies/stagingDebugRuntimeClasspath.txt +++ b/scripts/extract_dependencies/stagingDebugRuntimeClasspath.txt @@ -12,13 +12,14 @@ Project ':app' ------------------------------------------------------------ stagingDebugRuntimeClasspath - Runtime classpath of compilation 'stagingDebug' (target (androidJvm)). ++--- androidx.databinding:viewbinding:7.0.4 +| \--- androidx.annotation:annotation:1.0.0 -> 1.2.0 +--- androidx.databinding:databinding-common:7.0.4 +--- androidx.databinding:databinding-runtime:7.0.4 | +--- androidx.collection:collection:1.0.0 -> 1.1.0 | | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0 | +--- androidx.databinding:databinding-common:7.0.4 -| +--- androidx.databinding:viewbinding:7.0.4 -| | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0 +| +--- androidx.databinding:viewbinding:7.0.4 (*) | \--- androidx.lifecycle:lifecycle-runtime:2.2.0 -> 2.3.1 | +--- androidx.arch.core:core-runtime:2.1.0 | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 @@ -223,7 +224,6 @@ stagingDebugRuntimeClasspath - Runtime classpath of compilation 'stagingDebug' ( | | +--- android.arch.lifecycle:common:1.1.1 -> androidx.lifecycle:lifecycle-common:2.3.1 (*) | | \--- androidx.appcompat:appcompat:1.0.0 -> 1.3.1 (*) | \--- android.arch.lifecycle:extensions:1.1.1 -> androidx.lifecycle:lifecycle-extensions:2.2.0 (*) -+--- androidx.annotation:annotation:1.0.1 -> 1.2.0 +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2 (*) +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2 (*) +--- androidx.fragment:fragment-ktx:1.3.6 @@ -420,124 +420,130 @@ stagingDebugRuntimeClasspath - Runtime classpath of compilation 'stagingDebug' ( | +--- androidx.compose.ui:ui:1.0.4 -> 1.0.5 (*) | +--- androidx.compose.runtime:runtime:1.0.4 -> 1.0.5 (*) | \--- androidx.compose.foundation:foundation:1.0.4 -> 1.0.5 (*) -+--- com.google.firebase:firebase-messaging:20.2.0 -| +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) -| +--- androidx.core:core:1.0.0 -> 1.5.0 (*) -| +--- com.google.android.datatransport:transport-api:2.2.0 -| +--- com.google.android.datatransport:transport-backend-cct:2.2.0 -> 2.2.1 -| | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 -| | +--- com.google.android.datatransport:transport-api:2.2.0 -| | +--- com.google.android.datatransport:transport-runtime:2.2.1 -| | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 -| | | +--- com.google.android.datatransport:transport-api:2.2.0 -| | | \--- com.google.dagger:dagger:2.27 -| | | \--- javax.inject:javax.inject:1 -| | \--- com.google.firebase:firebase-encoders-json:16.1.0 -| | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0 -| +--- com.google.android.datatransport:transport-runtime:2.2.0 -> 2.2.1 (*) -| +--- com.google.android.gms:play-services-basement:17.0.0 ++--- com.google.firebase:firebase-messaging-ktx:23.0.0 +| +--- com.google.android.gms:play-services-basement:17.2.1 -> 18.0.0 | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) -| | +--- androidx.core:core:1.0.0 -> 1.5.0 (*) +| | +--- androidx.core:core:1.2.0 -> 1.5.0 (*) | | \--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*) -| +--- com.google.android.gms:play-services-stats:17.0.0 -| | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*) -| | \--- com.google.android.gms:play-services-basement:17.0.0 (*) -| +--- com.google.android.gms:play-services-tasks:17.0.0 -| | \--- com.google.android.gms:play-services-basement:17.0.0 (*) -| +--- com.google.firebase:firebase-common:19.3.0 -| | +--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | +--- com.google.android.gms:play-services-tasks:17.0.0 (*) -| | +--- com.google.auto.value:auto-value-annotations:1.6.5 -| | \--- com.google.firebase:firebase-components:16.0.0 -| | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0 -| +--- com.google.firebase:firebase-components:16.0.0 (*) -| +--- com.google.firebase:firebase-datatransport:17.0.3 +| +--- com.google.firebase:firebase-common:20.0.0 +| | +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*) +| | +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 +| | | \--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | \--- com.google.firebase:firebase-components:17.0.0 +| | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 +| | \--- com.google.firebase:firebase-annotations:16.0.0 +| +--- com.google.firebase:firebase-common-ktx:20.0.0 | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 -| | +--- com.google.android.datatransport:transport-api:2.1.0 -> 2.2.0 -| | +--- com.google.android.datatransport:transport-backend-cct:2.1.0 -> 2.2.1 (*) -| | +--- com.google.android.datatransport:transport-runtime:2.1.0 -> 2.2.1 (*) -| | \--- com.google.firebase:firebase-common:19.3.0 (*) -| +--- com.google.firebase:firebase-encoders-json:16.0.0 -> 16.1.0 (*) -| +--- com.google.firebase:firebase-iid:20.2.0 +| | +--- com.google.firebase:firebase-common:20.0.0 (*) +| | +--- com.google.firebase:firebase-components:17.0.0 (*) +| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72 -> 1.5.31 (*) +| +--- com.google.firebase:firebase-components:17.0.0 (*) +| +--- com.google.firebase:firebase-messaging:23.0.0 | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) | | +--- androidx.core:core:1.0.0 -> 1.5.0 (*) -| | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*) -| | +--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | +--- com.google.android.gms:play-services-stats:17.0.0 (*) -| | +--- com.google.android.gms:play-services-tasks:17.0.0 (*) -| | +--- com.google.firebase:firebase-common:19.3.0 (*) -| | +--- com.google.firebase:firebase-components:16.0.0 (*) -| | +--- com.google.firebase:firebase-iid-interop:17.0.0 -| | | +--- com.google.android.gms:play-services-base:17.0.0 +| | +--- com.google.android.datatransport:transport-api:3.0.0 +| | | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0 +| | +--- com.google.android.datatransport:transport-backend-cct:3.0.0 +| | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 +| | | +--- com.google.android.datatransport:transport-api:3.0.0 (*) +| | | +--- com.google.android.datatransport:transport-runtime:3.0.0 +| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 +| | | | +--- com.google.android.datatransport:transport-api:3.0.0 (*) +| | | | \--- javax.inject:javax.inject:1 +| | | +--- com.google.firebase:firebase-encoders:17.0.0 +| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0 +| | | \--- com.google.firebase:firebase-encoders-json:18.0.0 +| | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 +| | | \--- com.google.firebase:firebase-encoders:17.0.0 (*) +| | +--- com.google.android.datatransport:transport-runtime:3.0.0 (*) +| | +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*) +| | +--- com.google.android.gms:play-services-cloud-messaging:17.0.0 +| | | +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*) +| | | \--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 (*) +| | +--- com.google.android.gms:play-services-stats:17.0.0 -> 17.0.2 +| | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*) +| | | \--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 (*) +| | +--- com.google.firebase:firebase-common:20.0.0 (*) +| | +--- com.google.firebase:firebase-components:17.0.0 (*) +| | +--- com.google.firebase:firebase-datatransport:18.0.0 +| | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0 +| | | +--- com.google.android.datatransport:transport-api:3.0.0 (*) +| | | +--- com.google.android.datatransport:transport-backend-cct:3.0.0 (*) +| | | +--- com.google.android.datatransport:transport-runtime:3.0.0 (*) +| | | +--- com.google.firebase:firebase-common:20.0.0 (*) +| | | \--- com.google.firebase:firebase-components:17.0.0 (*) +| | +--- com.google.firebase:firebase-iid-interop:17.1.0 +| | | +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*) +| | | \--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 (*) +| | +--- com.google.firebase:firebase-installations:17.0.0 +| | | +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 (*) +| | | +--- com.google.firebase:firebase-common:20.0.0 (*) +| | | +--- com.google.firebase:firebase-components:17.0.0 (*) +| | | \--- com.google.firebase:firebase-installations-interop:17.0.0 +| | | +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 (*) +| | | \--- com.google.firebase:firebase-annotations:16.0.0 +| | +--- com.google.firebase:firebase-installations-interop:17.0.0 (*) +| | \--- com.google.firebase:firebase-measurement-connector:19.0.0 +| | +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.0.0 (*) +| | \--- com.google.firebase:firebase-annotations:16.0.0 +| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72 -> 1.5.31 (*) ++--- com.google.firebase:firebase-analytics-ktx:20.0.2 +| +--- com.google.firebase:firebase-analytics:20.0.2 +| | +--- com.google.android.gms:play-services-measurement:20.0.2 +| | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) +| | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*) +| | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 +| | | | \--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | | +--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | | +--- com.google.android.gms:play-services-measurement-base:20.0.2 +| | | | \--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | | +--- com.google.android.gms:play-services-measurement-impl:20.0.2 | | | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) | | | | +--- androidx.core:core:1.0.0 -> 1.5.0 (*) -| | | | +--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*) -| | | | +--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | | | \--- com.google.android.gms:play-services-tasks:17.0.0 (*) -| | | \--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | +--- com.google.firebase:firebase-installations:16.3.1 -| | | +--- com.google.android.gms:play-services-tasks:17.0.0 (*) -| | | +--- com.google.firebase:firebase-common:19.3.0 (*) -| | | +--- com.google.firebase:firebase-components:16.0.0 (*) -| | | \--- com.google.firebase:firebase-installations-interop:16.0.0 -| | | \--- com.google.android.gms:play-services-tasks:17.0.0 (*) -| | \--- com.google.firebase:firebase-installations-interop:16.0.0 (*) -| +--- com.google.firebase:firebase-installations:16.3.1 (*) -| +--- com.google.firebase:firebase-installations-interop:16.0.0 (*) -| \--- com.google.firebase:firebase-measurement-connector:18.0.0 -| \--- com.google.android.gms:play-services-basement:17.0.0 (*) -+--- com.google.firebase:firebase-analytics:17.4.2 -| +--- com.google.android.gms:play-services-measurement:17.4.2 -| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) -| | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*) -| | +--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | +--- com.google.android.gms:play-services-measurement-base:17.4.2 -| | | \--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | +--- com.google.android.gms:play-services-measurement-impl:17.4.2 +| | | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*) +| | | | +--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | | | +--- com.google.android.gms:play-services-measurement-base:20.0.2 (*) +| | | | \--- com.google.android.gms:play-services-stats:17.0.2 (*) +| | | \--- com.google.android.gms:play-services-stats:17.0.2 (*) +| | +--- com.google.android.gms:play-services-measurement-api:20.0.2 +| | | +--- com.google.android.gms:play-services-ads-identifier:18.0.0 (*) +| | | +--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | | +--- com.google.android.gms:play-services-measurement-base:20.0.2 (*) +| | | +--- com.google.android.gms:play-services-measurement-sdk-api:20.0.2 +| | | | +--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | | | \--- com.google.android.gms:play-services-measurement-base:20.0.2 (*) +| | | +--- com.google.android.gms:play-services-tasks:18.0.1 (*) +| | | +--- com.google.firebase:firebase-common:20.0.0 (*) +| | | +--- com.google.firebase:firebase-components:17.0.0 (*) +| | | +--- com.google.firebase:firebase-installations:17.0.0 (*) +| | | +--- com.google.firebase:firebase-installations-interop:17.0.0 (*) +| | | \--- com.google.firebase:firebase-measurement-connector:19.0.0 (*) +| | \--- com.google.android.gms:play-services-measurement-sdk:20.0.2 +| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) +| | +--- com.google.android.gms:play-services-basement:18.0.0 (*) +| | +--- com.google.android.gms:play-services-measurement-base:20.0.2 (*) +| | \--- com.google.android.gms:play-services-measurement-impl:20.0.2 (*) +| +--- com.google.firebase:firebase-common:20.0.0 (*) +| +--- com.google.firebase:firebase-common-ktx:20.0.0 (*) +| +--- com.google.firebase:firebase-components:17.0.0 (*) +| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50 -> 1.5.31 (*) ++--- com.yandex.android:mobmetricalib:4.1.1 +| +--- com.google.android.gms:play-services-appset:16.0.0 +| | +--- com.google.android.gms:play-services-base:17.6.0 | | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) -| | | +--- androidx.core:core:1.0.0 -> 1.5.0 (*) -| | | +--- com.google.android.gms:play-services-ads-identifier:17.0.0 -| | | | \--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | | +--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | | +--- com.google.android.gms:play-services-measurement-base:17.4.2 (*) -| | | \--- com.google.android.gms:play-services-stats:17.0.0 (*) -| | \--- com.google.android.gms:play-services-stats:17.0.0 (*) -| +--- com.google.android.gms:play-services-measurement-api:17.4.2 -| | +--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | +--- com.google.android.gms:play-services-measurement-base:17.4.2 (*) -| | +--- com.google.android.gms:play-services-measurement-impl:17.4.2 (*) -| | +--- com.google.android.gms:play-services-measurement-sdk-api:17.4.2 -| | | +--- com.google.android.gms:play-services-basement:17.0.0 (*) -| | | \--- com.google.android.gms:play-services-measurement-base:17.4.2 (*) -| | +--- com.google.android.gms:play-services-tasks:17.0.0 (*) -| | +--- com.google.firebase:firebase-common:19.3.0 (*) -| | +--- com.google.firebase:firebase-components:16.0.0 (*) -| | +--- com.google.firebase:firebase-iid:20.1.5 -> 20.2.0 (*) -| | \--- com.google.firebase:firebase-measurement-connector:18.0.0 (*) -| \--- com.google.android.gms:play-services-measurement-sdk:17.4.2 -| +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*) -| +--- com.google.android.gms:play-services-basement:17.0.0 (*) -| +--- com.google.android.gms:play-services-measurement-base:17.4.2 (*) -| \--- com.google.android.gms:play-services-measurement-impl:17.4.2 (*) -+--- com.google.firebase:firebase-crashlytics:17.0.0 -| +--- com.google.android.datatransport:transport-api:2.2.0 -| +--- com.google.android.datatransport:transport-backend-cct:2.2.1 (*) -| +--- com.google.android.datatransport:transport-runtime:2.2.1 (*) -| +--- com.google.android.gms:play-services-tasks:17.0.0 (*) -| +--- com.google.firebase:firebase-common:19.3.0 (*) -| +--- com.google.firebase:firebase-components:16.0.0 (*) -| +--- com.google.firebase:firebase-encoders-json:16.1.0 (*) -| +--- com.google.firebase:firebase-iid:20.1.5 -> 20.2.0 (*) -| +--- com.google.firebase:firebase-iid-interop:17.0.0 (*) -| +--- com.google.firebase:firebase-measurement-connector:18.0.0 (*) -| \--- com.squareup.okhttp3:okhttp:3.12.1 -> 3.12.10 (*) +| | | +--- androidx.core:core:1.2.0 -> 1.5.0 (*) +| | | +--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*) +| | | +--- com.google.android.gms:play-services-basement:17.6.0 -> 18.0.0 (*) +| | | \--- com.google.android.gms:play-services-tasks:17.2.1 -> 18.0.1 (*) +| | +--- com.google.android.gms:play-services-basement:17.6.0 -> 18.0.0 (*) +| | \--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 (*) +| +--- com.android.installreferrer:installreferrer:2.2 +| \--- org.jetbrains.kotlin:kotlin-stdlib:1.4.32 -> 1.5.31 (*) +--- com.chibatching.kotpref:kotpref:2.13.2 | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0 +--- com.chibatching.kotpref:gson-support:2.13.2 | \--- com.chibatching.kotpref:kotpref:2.13.2 (*) -+--- com.chibatching.kotpref:initializer:2.13.2 -| +--- com.chibatching.kotpref:kotpref:2.13.2 (*) -| \--- androidx.startup:startup-runtime:1.0.0 (*) +--- com.chibatching.kotpref:livedata-support:2.13.2 | \--- com.chibatching.kotpref:kotpref:2.13.2 (*) +--- com.github.chrisbanes:PhotoView:2.3.0 @@ -556,7 +562,6 @@ stagingDebugRuntimeClasspath - Runtime classpath of compilation 'stagingDebug' ( | | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0 | \--- androidx.interpolator:interpolator:1.0.0 (*) +--- com.github.marlonlom:timeago:4.0.3 -+--- it.xabaras.android:recyclerview-swipedecorator:1.2.2 +--- com.github.samanzamani.persiandate:PersianDate:0.8 +--- androidx.compose.ui:ui:1.0.5 (*) +--- androidx.compose.ui:ui-tooling:1.0.5