From f3f269c7fade8a8d37044d0c3992ff0d4803f56e Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 30 Dec 2024 10:01:08 +0200 Subject: [PATCH] Fix NPE in SyncSettings --- .../kotatsu/settings/SyncSettingsFragment.kt | 2 +- .../kotatsu/sync/data/SyncAuthenticator.kt | 2 +- .../org/koitharu/kotatsu/sync/data/SyncSettings.kt | 14 ++++++++------ .../org/koitharu/kotatsu/sync/domain/SyncHelper.kt | 2 +- .../kotatsu/sync/ui/SyncHostDialogFragment.kt | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SyncSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SyncSettingsFragment.kt index 4902b8130..928546b6b 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SyncSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SyncSettingsFragment.kt @@ -44,6 +44,6 @@ class SyncSettingsFragment : BasePreferenceFragment(R.string.sync_settings), Fra private fun bindHostSummary() { val preference = findPreference(SyncSettings.KEY_SYNC_URL) ?: return - preference.summary = syncSettings.syncURL + preference.summary = syncSettings.syncUrl } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/sync/data/SyncAuthenticator.kt b/app/src/main/kotlin/org/koitharu/kotatsu/sync/data/SyncAuthenticator.kt index b5840dfbd..213e60127 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/sync/data/SyncAuthenticator.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/sync/data/SyncAuthenticator.kt @@ -32,7 +32,7 @@ class SyncAuthenticator( private fun tryRefreshToken() = runCatching { runBlocking { authApi.authenticate( - syncSettings.syncURL, + syncSettings.syncUrl, account.name, accountManager.getPassword(account), ) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/sync/data/SyncSettings.kt b/app/src/main/kotlin/org/koitharu/kotatsu/sync/data/SyncSettings.kt index 9a0651b44..b08aca06e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/sync/data/SyncSettings.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/sync/data/SyncSettings.kt @@ -27,13 +27,9 @@ class SyncSettings( @get:WorkerThread @set:WorkerThread - var syncURL: String + var syncUrl: String get() = account?.let { - val result = accountManager.getUserData(it, KEY_SYNC_URL) - if (!result.startsWith("http://") && !result.startsWith("https://")) { - return "http://$result" - } - return result + accountManager.getUserData(it, KEY_SYNC_URL)?.withHttpSchema() }.ifNullOrEmpty { defaultSyncUrl } set(value) { account?.let { @@ -43,6 +39,12 @@ class SyncSettings( companion object { + private fun String.withHttpSchema(): String = if (!startsWith("http://") && !startsWith("https://")) { + "http://$this" + } else { + this + } + const val KEY_SYNC_URL = "host" } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/sync/domain/SyncHelper.kt b/app/src/main/kotlin/org/koitharu/kotatsu/sync/domain/SyncHelper.kt index 3aa5959c4..6b7ebdd50 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/sync/domain/SyncHelper.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/sync/domain/SyncHelper.kt @@ -59,7 +59,7 @@ class SyncHelper @AssistedInject constructor( .addInterceptor(SyncInterceptor(context, account)) .build() private val baseUrl: String by lazy { - settings.syncURL + settings.syncUrl } private val defaultGcPeriod: Long // gc period if sync enabled get() = TimeUnit.DAYS.toMillis(4) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/sync/ui/SyncHostDialogFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/sync/ui/SyncHostDialogFragment.kt index 3fa3b4506..f2821b5e1 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/sync/ui/SyncHostDialogFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/sync/ui/SyncHostDialogFragment.kt @@ -52,7 +52,7 @@ class SyncHostDialogFragment : AlertDialogFragment