mirror of
https://github.com/nextcloud/talk-android.git
synced 2024-11-26 23:25:20 +03:00
avoid NPE when serverVersion is not known
NPE without this fix: Exception java.lang.RuntimeException: at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4975) at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:5008) at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:54) at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2386) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:210) at android.os.Looper.loop (Looper.java:299) at android.app.ActivityThread.main (ActivityThread.java:8252) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:559) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:954) Caused by java.lang.NullPointerException: at com.nextcloud.talk.conversationlist.ConversationsListActivity.onResume (ConversationsListActivity.kt:287) at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1565) at android.app.Activity.performResume (Activity.java:8668) at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4965) The root cause may be that the CapabilitiesWorker is not finished so the serverVersion was not added to the user. Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
7856aa0472
commit
d1f1d7ae83
4 changed files with 16 additions and 6 deletions
|
@ -336,7 +336,7 @@ class ServerSelectionActivity : BaseActivity() {
|
||||||
|
|
||||||
if (hasTalk) {
|
if (hasTalk) {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
if (CapabilitiesUtil.isServerEOL(capabilitiesOverall.ocs?.data?.serverVersion?.major!!)) {
|
if (CapabilitiesUtil.isServerEOL(capabilitiesOverall.ocs?.data?.serverVersion?.major)) {
|
||||||
if (resources != null) {
|
if (resources != null) {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
setErrorText(resources!!.getString(R.string.nc_settings_server_eol))
|
setErrorText(resources!!.getString(R.string.nc_settings_server_eol))
|
||||||
|
|
|
@ -284,7 +284,7 @@ class ConversationsListActivity :
|
||||||
}
|
}
|
||||||
currentUser = userManager.currentUser.blockingGet()
|
currentUser = userManager.currentUser.blockingGet()
|
||||||
if (currentUser != null) {
|
if (currentUser != null) {
|
||||||
if (isServerEOL(currentUser!!.serverVersion!!.major)) {
|
if (isServerEOL(currentUser!!.serverVersion?.major)) {
|
||||||
showServerEOLDialog()
|
showServerEOLDialog()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -852,7 +852,7 @@ class SettingsActivity : BaseActivity(), SetPhoneNumberDialogFragment.SetPhoneNu
|
||||||
|
|
||||||
private fun setupServerAgeWarning() {
|
private fun setupServerAgeWarning() {
|
||||||
when {
|
when {
|
||||||
CapabilitiesUtil.isServerEOL(currentUser!!.serverVersion!!.major) -> {
|
CapabilitiesUtil.isServerEOL(currentUser!!.serverVersion?.major) -> {
|
||||||
binding.serverAgeWarningText.setTextColor(ContextCompat.getColor((context), R.color.nc_darkRed))
|
binding.serverAgeWarningText.setTextColor(ContextCompat.getColor((context), R.color.nc_darkRed))
|
||||||
binding.serverAgeWarningText.setText(R.string.nc_settings_server_eol)
|
binding.serverAgeWarningText.setText(R.string.nc_settings_server_eol)
|
||||||
binding.serverAgeWarningIcon.setColorFilter(
|
binding.serverAgeWarningIcon.setColorFilter(
|
||||||
|
@ -861,7 +861,7 @@ class SettingsActivity : BaseActivity(), SetPhoneNumberDialogFragment.SetPhoneNu
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
CapabilitiesUtil.isServerAlmostEOL(currentUser!!.serverVersion!!.major) -> {
|
CapabilitiesUtil.isServerAlmostEOL(currentUser!!.serverVersion?.major) -> {
|
||||||
binding.serverAgeWarningText.setTextColor(
|
binding.serverAgeWarningText.setTextColor(
|
||||||
ContextCompat.getColor((context), R.color.nc_darkYellow)
|
ContextCompat.getColor((context), R.color.nc_darkYellow)
|
||||||
)
|
)
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.utils
|
package com.nextcloud.talk.utils
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
import com.nextcloud.talk.data.user.model.User
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.models.json.capabilities.SpreedCapability
|
import com.nextcloud.talk.models.json.capabilities.SpreedCapability
|
||||||
|
|
||||||
|
@ -74,11 +75,19 @@ enum class SpreedFeatures(val value: String) {
|
||||||
object CapabilitiesUtil {
|
object CapabilitiesUtil {
|
||||||
|
|
||||||
//region Version checks
|
//region Version checks
|
||||||
fun isServerEOL(serverVersion: Int): Boolean {
|
fun isServerEOL(serverVersion: Int?): Boolean {
|
||||||
|
if (serverVersion == null) {
|
||||||
|
Log.w(TAG, "serverVersion is unknown. It is assumed that it is up to date")
|
||||||
|
return false
|
||||||
|
}
|
||||||
return (serverVersion < SERVER_VERSION_MIN_SUPPORTED)
|
return (serverVersion < SERVER_VERSION_MIN_SUPPORTED)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isServerAlmostEOL(serverVersion: Int): Boolean {
|
fun isServerAlmostEOL(serverVersion: Int?): Boolean {
|
||||||
|
if (serverVersion == null) {
|
||||||
|
Log.w(TAG, "serverVersion is unknown. It is assumed that it is up to date")
|
||||||
|
return false
|
||||||
|
}
|
||||||
return (serverVersion < SERVER_VERSION_SUPPORT_WARNING)
|
return (serverVersion < SERVER_VERSION_SUPPORT_WARNING)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,6 +295,7 @@ object CapabilitiesUtil {
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
|
private val TAG = CapabilitiesUtil::class.java.simpleName
|
||||||
const val DEFAULT_CHAT_SIZE = 1000
|
const val DEFAULT_CHAT_SIZE = 1000
|
||||||
const val RECORDING_CONSENT_NOT_REQUIRED = 0
|
const val RECORDING_CONSENT_NOT_REQUIRED = 0
|
||||||
const val RECORDING_CONSENT_REQUIRED = 1
|
const val RECORDING_CONSENT_REQUIRED = 1
|
||||||
|
|
Loading…
Reference in a new issue