diff --git a/CHANGELOG.md b/CHANGELOG.md index c011636d6..5cce00603 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Fixes crash when searching in call history ([#378]) + ## [1.5.0] - 2025-06-06 ### Added @@ -179,3 +183,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#347]: https://github.com/FossifyOrg/Phone/issues/347 [#357]: https://github.com/FossifyOrg/Phone/issues/357 [#359]: https://github.com/FossifyOrg/Phone/issues/359 +[#378]: https://github.com/FossifyOrg/Phone/issues/378 diff --git a/app/src/main/kotlin/org/fossify/phone/activities/CallActivity.kt b/app/src/main/kotlin/org/fossify/phone/activities/CallActivity.kt index 3d09d100d..3f7a5583e 100644 --- a/app/src/main/kotlin/org/fossify/phone/activities/CallActivity.kt +++ b/app/src/main/kotlin/org/fossify/phone/activities/CallActivity.kt @@ -760,7 +760,7 @@ class CallActivity : SimpleActivity() { audioRouteChooserDialog?.dismissAllowingStateLoss() if (isCallEnded) { - finishAndRemoveTask() + safeFinishAndRemoveTask() return } @@ -776,7 +776,7 @@ class CallActivity : SimpleActivity() { @SuppressLint("SetTextI18n") binding.callStatusLabel.text = "${callDuration.getFormattedDuration()} (${getString(R.string.call_ended)})" Handler(mainLooper).postDelayed(3000) { - finishAndRemoveTask() + safeFinishAndRemoveTask() } } else { disableAllActionButtons() @@ -786,6 +786,18 @@ class CallActivity : SimpleActivity() { } } + private fun safeFinishAndRemoveTask() { + try { + if (intent != null) { + finishAndRemoveTask() + } else { + finish() + } + } catch (_: Exception) { + finish() + } + } + private val callCallback = object : CallManagerListener { override fun onStateChanged() { updateState() diff --git a/app/src/main/kotlin/org/fossify/phone/models/CallLogItem.kt b/app/src/main/kotlin/org/fossify/phone/models/CallLogItem.kt index fa1b5f417..48aa6eda1 100644 --- a/app/src/main/kotlin/org/fossify/phone/models/CallLogItem.kt +++ b/app/src/main/kotlin/org/fossify/phone/models/CallLogItem.kt @@ -1,5 +1,7 @@ package org.fossify.phone.models +import org.fossify.commons.helpers.DAY_SECONDS + sealed class CallLogItem { data class Date( val timestamp: Long, @@ -8,7 +10,7 @@ sealed class CallLogItem { fun getItemId(): Int { return when (this) { - is Date -> dayCode.hashCode() + is Date -> -(timestamp / (DAY_SECONDS * 1000L)).toInt() is RecentCall -> id } }