From 9d8911751ca141f0560cc72bf378a94ae091ed20 Mon Sep 17 00:00:00 2001 From: neubauerm <michal.neubauer@quanti.cz> Date: Thu, 14 Sep 2023 11:10:52 +0200 Subject: [PATCH 1/9] fix: PIN-5374 redirect demo account to DEMO env --- .../main/java/cz/applifting/humansis/ui/login/LoginFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/cz/applifting/humansis/ui/login/LoginFragment.kt b/app/src/main/java/cz/applifting/humansis/ui/login/LoginFragment.kt index bd3e4ace..afffe015 100644 --- a/app/src/main/java/cz/applifting/humansis/ui/login/LoginFragment.kt +++ b/app/src/main/java/cz/applifting/humansis/ui/login/LoginFragment.kt @@ -67,7 +67,7 @@ class LoginFragment : Fragment(), CoroutineScope, LoginFinishCallback { val username = et_username.text.toString() btn_login.isEnabled = false if (username.equals(BuildConfig.DEMO_ACCOUNT, true)) { - changeEnvironment(ApiEnvironment.Stage) + changeEnvironment(ApiEnvironment.Demo) } viewModel.login(username, et_password.text.toString(), this) } -- GitLab From aa4d22b8804816895885c180f49ac5182bbd0172 Mon Sep 17 00:00:00 2001 From: neubauerm <michal.neubauer@quanti.cz> Date: Thu, 14 Sep 2023 11:11:02 +0200 Subject: [PATCH 2/9] ref: add TODO --- .../cz/applifting/humansis/api/interceptor/HeadersInterceptor.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/cz/applifting/humansis/api/interceptor/HeadersInterceptor.kt b/app/src/main/java/cz/applifting/humansis/api/interceptor/HeadersInterceptor.kt index cd412827..2b4cbe95 100644 --- a/app/src/main/java/cz/applifting/humansis/api/interceptor/HeadersInterceptor.kt +++ b/app/src/main/java/cz/applifting/humansis/api/interceptor/HeadersInterceptor.kt @@ -63,6 +63,7 @@ class HeadersInterceptor( ) } } ?: run { + // TODO neresit authorization header pri login requestu Log.e( TAG, "Refresh token not available. Not using Authorization token expecting a 401 response error code." -- GitLab From 31075d18a46f3aa58d5197ade63f66e1d0e9808d Mon Sep 17 00:00:00 2001 From: neubauerm <michal.neubauer@quanti.cz> Date: Thu, 14 Sep 2023 11:11:55 +0200 Subject: [PATCH 3/9] ref: VERSION 3.12.1 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a5819a7e..e69e196c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,7 @@ def VERSION_MAJOR = 3 // Minor updates are backward compatible, meaning consumers can upgrade freely. Main for non-breaking new functionality. def VERSION_MINOR = 12 // Patch updates are interchangeable, meaning consumers can upgrade or downgrade freely. Mainly for bugfixing. -def VERSION_PATCH = 0 +def VERSION_PATCH = 1 String APK_NAME = "field-app" String VERSION_NAME = "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" -- GitLab From 08333ba1a758df22d6f6009df597eadeec4923a0 Mon Sep 17 00:00:00 2001 From: Michal Neubauer <michal.neubauer@quanti.cz> Date: Fri, 13 Oct 2023 11:24:33 +0000 Subject: [PATCH 4/9] ref: VERSION 3.13.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e69e196c..0d96dcca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,9 +31,9 @@ def gitVersionCode = { boolean isFileName -> // Major updates are non-compatible, meaning consumers can not upgrade without changing their software where applicable. def VERSION_MAJOR = 3 // Minor updates are backward compatible, meaning consumers can upgrade freely. Main for non-breaking new functionality. -def VERSION_MINOR = 12 +def VERSION_MINOR = 13 // Patch updates are interchangeable, meaning consumers can upgrade or downgrade freely. Mainly for bugfixing. -def VERSION_PATCH = 1 +def VERSION_PATCH = 3 String APK_NAME = "field-app" String VERSION_NAME = "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" -- GitLab From 355d8a0fb4abedbe65e44754cd540b9911dd863b Mon Sep 17 00:00:00 2001 From: Michal Neubauer <michal.neubauer@quanti.cz> Date: Tue, 17 Oct 2023 08:33:19 +0000 Subject: [PATCH 5/9] REF: VERSION 3.13.0 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 0d96dcca..e679e08e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,7 @@ def VERSION_MAJOR = 3 // Minor updates are backward compatible, meaning consumers can upgrade freely. Main for non-breaking new functionality. def VERSION_MINOR = 13 // Patch updates are interchangeable, meaning consumers can upgrade or downgrade freely. Mainly for bugfixing. -def VERSION_PATCH = 3 +def VERSION_PATCH = 0 String APK_NAME = "field-app" String VERSION_NAME = "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" -- GitLab From d5f25843711b58c020f88518e5f9650709d4f1cb Mon Sep 17 00:00:00 2001 From: neubauerm <michal.neubauer@quanti.cz> Date: Mon, 23 Oct 2023 16:00:21 +0200 Subject: [PATCH 6/9] feat: PIN-5328 raise target SDK to 34 --- app/build.gradle | 4 ++-- .../applifting/humansis/ui/main/MainFragment.kt | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e679e08e..615efa64 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,14 +47,14 @@ repositories { android { - compileSdkVersion 31 + compileSdk 34 ndkVersion "23.0.7599858" defaultConfig { applicationId "org.humansis.app.user" minSdkVersion 21 - targetSdkVersion 31 + targetSdkVersion 34 versionCode gitVersionCode(false) versionName VERSION_NAME setProperty("archivesBaseName", VERSION_FULL_NAME_FILE) diff --git a/app/src/main/java/cz/applifting/humansis/ui/main/MainFragment.kt b/app/src/main/java/cz/applifting/humansis/ui/main/MainFragment.kt index 9937f71e..9bf664e4 100644 --- a/app/src/main/java/cz/applifting/humansis/ui/main/MainFragment.kt +++ b/app/src/main/java/cz/applifting/humansis/ui/main/MainFragment.kt @@ -188,33 +188,33 @@ class MainFragment : BaseFragment() { // A fix for action with custom layout // https://stackoverflow.com/a/35265797 val item = menu.findItem(action_open_status_dialog) - item.actionView.setOnClickListener { + item.actionView?.setOnClickListener { onOptionsItemSelected(item) } - val pbSyncProgress = item.actionView.findViewById<ProgressBar>(R.id.pb_sync_progress) - pbSyncProgress.setBackgroundColor(getBackgroundColor()) - val ivStatus = item.actionView.findViewById<ImageView>(R.id.iv_status) + val pbSyncProgress = item.actionView?.findViewById<ProgressBar>(R.id.pb_sync_progress) + pbSyncProgress?.setBackgroundColor(getBackgroundColor()) + val ivStatus = item.actionView?.findViewById<ImageView>(R.id.iv_status) sharedViewModel.getNetworkStatus().observe(viewLifecycleOwner) { available -> val drawable = if (available) R.drawable.ic_online else R.drawable.ic_offline - ivStatus.simpleDrawable(drawable) + ivStatus?.simpleDrawable(drawable) if (available && requireContext().isWifiConnected()) { viewModel.enqueueSynchronization.call() } } sharedViewModel.syncNeededLD.observe(viewLifecycleOwner) { - item.actionView.iv_pending_changes.visibility = if (it) View.VISIBLE else View.INVISIBLE + item.actionView?.iv_pending_changes?.visibility = if (it) View.VISIBLE else View.INVISIBLE } // show sync in toolbar only on settings screen, because there is no other progress indicator when country is updated sharedViewModel.syncState.observe(viewLifecycleOwner) { - pbSyncProgress.visible(it.isLoading && mainNavController.currentDestination?.id == R.id.settingsFragment) + pbSyncProgress?.visible(it.isLoading && mainNavController.currentDestination?.id == R.id.settingsFragment) } onDestinationChangedListener = NavController.OnDestinationChangedListener { _, destination, _ -> - pbSyncProgress.visible(destination.id == R.id.settingsFragment && sharedViewModel.syncState.value?.isLoading == true) + pbSyncProgress?.visible(destination.id == R.id.settingsFragment && sharedViewModel.syncState.value?.isLoading == true) } mainNavController.addOnDestinationChangedListener(onDestinationChangedListener) -- GitLab From cd0384067cefcb74d2f88e4c568b202009c610d3 Mon Sep 17 00:00:00 2001 From: Michal Neubauer <michal.neubauer@quanti.cz> Date: Tue, 24 Oct 2023 09:28:43 +0000 Subject: [PATCH 7/9] ref: VERSION 3.13.1 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 615efa64..a0768ab6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,7 @@ def VERSION_MAJOR = 3 // Minor updates are backward compatible, meaning consumers can upgrade freely. Main for non-breaking new functionality. def VERSION_MINOR = 13 // Patch updates are interchangeable, meaning consumers can upgrade or downgrade freely. Mainly for bugfixing. -def VERSION_PATCH = 0 +def VERSION_PATCH = 1 String APK_NAME = "field-app" String VERSION_NAME = "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" -- GitLab From 2e84921c3a423dff51705b0bccd013e7f5de714f Mon Sep 17 00:00:00 2001 From: neubauerm <michal.neubauer@quanti.cz> Date: Tue, 24 Oct 2023 13:03:12 +0200 Subject: [PATCH 8/9] fix: PIN-5328 update kotlin logger --- app/build.gradle | 8 +- .../humansis/misc/SendLogDialogFragment.kt | 215 ------------------ .../humansis/ui/login/LoginFragment.kt | 2 +- .../humansis/ui/main/MainFragment.kt | 2 +- .../ui/main/settings/SettingsFragment.kt | 2 +- build.gradle | 3 +- 6 files changed, 8 insertions(+), 224 deletions(-) delete mode 100644 app/src/main/java/cz/applifting/humansis/misc/SendLogDialogFragment.kt diff --git a/app/build.gradle b/app/build.gradle index a0768ab6..be0a84d8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -145,7 +145,7 @@ android { } configurations { - all { + configureEach { // exclude old hamcrests (from junit4 etc.) so we can use the newer one without conflicts exclude group: "org.hamcrest", module: "hamcrest-core" exclude group: "org.hamcrest", module: "hamcrest-library" @@ -222,7 +222,7 @@ dependencies { implementation "android.arch.lifecycle:reactivestreams:1.0.0-beta2" // Kotlin logger - def kotlin_logger_version = '2.2.6' + def kotlin_logger_version = '2.2.12' implementation "com.github.Qase:KotlinLogger:$kotlin_logger_version" // ktlint @@ -242,7 +242,7 @@ dependencies { } -task ktlint(type: JavaExec, group: "verification") { +tasks.register('ktlint', JavaExec) { description = "Check Kotlin code style." main = "com.pinterest.ktlint.Main" classpath = configurations.ktlint @@ -253,7 +253,7 @@ task ktlint(type: JavaExec, group: "verification") { } check.dependsOn ktlint -task ktlintFormat(type: JavaExec, group: "formatting") { +tasks.register('ktlintFormat', JavaExec) { description = "Fix Kotlin code style deviations." main = "com.pinterest.ktlint.Main" classpath = configurations.ktlint diff --git a/app/src/main/java/cz/applifting/humansis/misc/SendLogDialogFragment.kt b/app/src/main/java/cz/applifting/humansis/misc/SendLogDialogFragment.kt deleted file mode 100644 index 3c579101..00000000 --- a/app/src/main/java/cz/applifting/humansis/misc/SendLogDialogFragment.kt +++ /dev/null @@ -1,215 +0,0 @@ -package cz.applifting.humansis.misc - -import android.app.AlertDialog -import android.app.Dialog -import android.content.Intent -import android.content.pm.PackageManager -import android.content.pm.ResolveInfo -import android.os.Bundle -import android.widget.Toast -import androidx.core.view.isVisible -import androidx.fragment.app.DialogFragment -import cz.applifting.humansis.R -import cz.applifting.humansis.databinding.DialogLogsBinding -import kotlinx.android.synthetic.main.dialog_card_message.view.message -import kotlinx.android.synthetic.main.dialog_logs.view.* -import kotlinx.coroutines.* -import quanti.com.kotlinlog.Log -import quanti.com.kotlinlog.utils.* -import java.io.File - -/** - * Created by Trnka Vladislav on 20.06.2017. - * - * Dialog that shows user options to save or send logs - */ - -class SendLogDialogFragment : DialogFragment() { - - // TODO temporary hotfix, delete after implementing fixed version of kotlinlogger - - companion object { - const val MESSAGE = "send_message" - const val TITLE = "send_title" - const val EMAIL_BUTTON_TEXT = "email_button" - const val FILE_BUTTON_TEXT = "file_button" - const val SEND_EMAIL_ADDRESSES = "send_address" - const val EXTRA_FILES = "extra_files" - const val DIALOG_THEME = "dialog_theme" - private val TAG = SendLogDialogFragment::class.java.simpleName - - @JvmOverloads - @JvmStatic - fun newInstance( - sendEmailAddress: String, - message: String = "Would you like to send logs by email or save them to SD card?", - title: String = "Send logs", - emailButtonText: String = "Email", - fileButtonText: String = "Save", - extraFiles: List<File> = arrayListOf(), - dialogTheme: Int? = null - ) = newInstance( - arrayOf(sendEmailAddress), - message, - title, - emailButtonText, - fileButtonText, - extraFiles, - dialogTheme - ) - - @JvmOverloads - @JvmStatic - fun newInstance( - sendEmailAddress: Array<String>, - message: String = "Would you like to send logs by email or save them to SD card?", - title: String = "Send logs", - emailButtonText: String = "Email", - fileButtonText: String = "Save", - extraFiles: List<File> = arrayListOf(), - dialogTheme: Int? = null - ): SendLogDialogFragment { - val myFragment = SendLogDialogFragment() - - val args = Bundle() - args.putString(MESSAGE, message) - args.putString(TITLE, title) - args.putString(EMAIL_BUTTON_TEXT, emailButtonText) - args.putString(FILE_BUTTON_TEXT, fileButtonText) - args.putStringArray(SEND_EMAIL_ADDRESSES, sendEmailAddress) - args.putSerializable(EXTRA_FILES, ArrayList(extraFiles)) - if (dialogTheme != null) { - args.putInt(DIALOG_THEME, dialogTheme) - } - - myFragment.arguments = args - - return myFragment - } - } - - private var zipFile: Deferred<File>? = null - - private lateinit var dialogLogsBinding: DialogLogsBinding - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - zipFile = CoroutineScope(Dispatchers.IO).async { - val extraFiles = requireArguments().getSerializable(EXTRA_FILES) as ArrayList<File> - getZipOfLogs(requireActivity().applicationContext, 48, extraFiles) - } - } - - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - dialogLogsBinding = DialogLogsBinding.inflate(layoutInflater) - - val hasFilePermission = requireActivity().applicationContext.hasFileWritePermission() - - val dialog = AlertDialog.Builder(requireContext(), requireArguments().getInt(DIALOG_THEME)) - .apply { - setView(dialogLogsBinding.root.apply { - this.title.text = requireArguments().getString(TITLE) - this.message.text = requireArguments().getString(MESSAGE) - }) - setPositiveButton(requireArguments().getString(EMAIL_BUTTON_TEXT)) { _, _ -> } - if (hasFilePermission) { - setNeutralButton(requireArguments().getString(FILE_BUTTON_TEXT)) { _, _ -> } - } - }.create() - - dialog.show() - - dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { - Log.d(TAG, "Positive Button Clicked") - showProgress(dialog) - shareLogs(dialog) - } - - dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener { - Log.d(TAG, "Neutral button clicked") - showProgress(dialog) - saveLogs(dialog) - } - - return dialog - } - - /** - * On button click - * Update dialog UI to show progress - */ - private fun showProgress(dialog: AlertDialog) { - dialog.setCancelable(false) - dialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = false - dialog.getButton(AlertDialog.BUTTON_NEUTRAL).isEnabled = false - dialogLogsBinding.message.text = requireContext().getString(R.string.preparing_logs) - dialogLogsBinding.progressBar.isVisible = true - } - - /** - * On positive button click - * Create zip of all logs and open email client to send - */ - private fun shareLogs(dialog: AlertDialog) = CoroutineScope(Dispatchers.Main).launch { - - val appContext = this@SendLogDialogFragment.requireContext().applicationContext - - val addresses = requireArguments().getStringArray(SEND_EMAIL_ADDRESSES) - val subject = getString(R.string.logs_email_subject) + " " + getFormattedFileNameDayNow() - val bodyText = getString(R.string.logs_email_text) - - // await non block's current thread - val zipFileUri = zipFile?.await()?.getUriForFile(appContext) - - val intent = Intent(Intent.ACTION_SEND).apply { - type = "message/rfc822" // email - flags = Intent.FLAG_GRANT_READ_URI_PERMISSION - putExtra(Intent.EXTRA_EMAIL, addresses) - putExtra(Intent.EXTRA_SUBJECT, subject) - putExtra(Intent.EXTRA_TEXT, bodyText) - putExtra(Intent.EXTRA_STREAM, zipFileUri) - } - - val resInfoList: List<ResolveInfo> = requireContext().packageManager - .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY) - for (resolveInfo in resInfoList) { - val packageName = resolveInfo.activityInfo.packageName - requireContext().grantUriPermission( - packageName, - zipFileUri, - Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION - ) - } - - dialog.dismiss() - - try { - startActivity(Intent.createChooser(intent, "Send mail...")) - } catch (ex: android.content.ActivityNotFoundException) { - Toast.makeText( - appContext, - getString(R.string.logs_email_no_client_installed), - Toast.LENGTH_LONG - ).show() - } - } - - /** - * On neutral button click - * Copy ZIP of all logs to sd card - */ - private fun saveLogs(dialog: AlertDialog) = CoroutineScope(Dispatchers.Main).launch { - - val appContext = this@SendLogDialogFragment.requireContext().applicationContext - - val file = zipFile?.await()?.copyLogsTOSDCard(requireContext()) - - dialog.dismiss() - - Toast.makeText( - appContext, - "File successfully copied" + "\n" + file?.absolutePath, - Toast.LENGTH_LONG - ).show() - } -} diff --git a/app/src/main/java/cz/applifting/humansis/ui/login/LoginFragment.kt b/app/src/main/java/cz/applifting/humansis/ui/login/LoginFragment.kt index afffe015..fc8c2a1d 100644 --- a/app/src/main/java/cz/applifting/humansis/ui/login/LoginFragment.kt +++ b/app/src/main/java/cz/applifting/humansis/ui/login/LoginFragment.kt @@ -13,7 +13,6 @@ import androidx.navigation.fragment.findNavController import cz.applifting.humansis.BuildConfig import cz.applifting.humansis.R import cz.applifting.humansis.misc.ApiEnvironment -import cz.applifting.humansis.misc.SendLogDialogFragment import cz.applifting.humansis.ui.App import kotlinx.android.synthetic.main.fragment_login.btn_login import kotlinx.android.synthetic.main.fragment_login.envTextView @@ -28,6 +27,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import quanti.com.kotlinlog.Log +import quanti.com.kotlinlog.file.SendLogDialogFragment import javax.inject.Inject import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/cz/applifting/humansis/ui/main/MainFragment.kt b/app/src/main/java/cz/applifting/humansis/ui/main/MainFragment.kt index 9bf664e4..767ba107 100644 --- a/app/src/main/java/cz/applifting/humansis/ui/main/MainFragment.kt +++ b/app/src/main/java/cz/applifting/humansis/ui/main/MainFragment.kt @@ -31,7 +31,6 @@ import cz.applifting.humansis.extensions.simpleDrawable import cz.applifting.humansis.extensions.visible import cz.applifting.humansis.misc.ApiEnvironment import cz.applifting.humansis.misc.HumansisError -import cz.applifting.humansis.misc.SendLogDialogFragment import cz.applifting.humansis.ui.BaseFragment import cz.applifting.humansis.ui.HumansisActivity import kotlinx.android.synthetic.main.app_bar_main.nav_host_fragment @@ -41,6 +40,7 @@ import kotlinx.android.synthetic.main.fragment_main.drawer_layout import kotlinx.android.synthetic.main.fragment_main.nav_view import kotlinx.android.synthetic.main.menu_status_button.view.iv_pending_changes import quanti.com.kotlinlog.Log +import quanti.com.kotlinlog.file.SendLogDialogFragment /** * Created by Petr Kubes <petr.kubes@applifting.cz> on 14, August, 2019 diff --git a/app/src/main/java/cz/applifting/humansis/ui/main/settings/SettingsFragment.kt b/app/src/main/java/cz/applifting/humansis/ui/main/settings/SettingsFragment.kt index 25647d8b..84657934 100644 --- a/app/src/main/java/cz/applifting/humansis/ui/main/settings/SettingsFragment.kt +++ b/app/src/main/java/cz/applifting/humansis/ui/main/settings/SettingsFragment.kt @@ -9,7 +9,6 @@ import androidx.fragment.app.viewModels import com.google.android.material.snackbar.Snackbar import cz.applifting.humansis.R import cz.applifting.humansis.extensions.isNetworkConnected -import cz.applifting.humansis.misc.SendLogDialogFragment import cz.applifting.humansis.model.Country import cz.applifting.humansis.ui.App import cz.applifting.humansis.ui.BaseFragment @@ -17,6 +16,7 @@ import cz.applifting.humansis.ui.HumansisActivity import kotlinx.android.synthetic.main.fragment_settings.* import kotlinx.coroutines.launch import quanti.com.kotlinlog.Log +import quanti.com.kotlinlog.file.SendLogDialogFragment /** * Created by Vaclav Legat <vaclav.legat@applifting.cz> diff --git a/build.gradle b/build.gradle index 4a9492d2..2f516481 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,6 @@ buildscript { ext.kotlin_version = '1.4.31' - ext.kotlin_logger_version = '2.2.6' ext.nav_version = '2.3.5' // version 2.4.1 depends on kotlin 1.6.0 which is buggy (caused crash when opening BeneficiariesFragment) repositories { google() @@ -42,6 +41,6 @@ allprojects { } } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } -- GitLab From c10dc75e822407b62201a4fae9642cb4325fa83f Mon Sep 17 00:00:00 2001 From: neubauerm <michal.neubauer@quanti.cz> Date: Tue, 24 Oct 2023 14:20:19 +0200 Subject: [PATCH 9/9] fix: PIN-5328 update retrofit --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index be0a84d8..69977274 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -193,8 +193,8 @@ dependencies { implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Retrofit - implementation "com.squareup.retrofit2:retrofit:2.6.1" - implementation "com.squareup.retrofit2:converter-gson:2.6.1" + implementation "com.squareup.retrofit2:retrofit:2.9.0" + implementation "com.squareup.retrofit2:converter-gson:2.9.0" // Coroutines implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0' -- GitLab