Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/talk-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Scherzinger <info@andy-scherzinger.de>2022-04-20 11:20:49 +0300
committerGitHub <noreply@github.com>2022-04-20 11:20:49 +0300
commit0123cbbdbf94c9005ac10b3c75bb9329561d4df3 (patch)
tree567b399cdde5092ea7d56ee3a8d4036d6e42d018 /app/src/main
parent938d70921738f00081ee780f7269b63459c90b92 (diff)
parent300e7da1722974ea28b9a6e88dd755bdef9689a8 (diff)
Merge pull request #1926 from nextcloud/bugfix/1908/nullHardening
Move to a more hardened null-handling profile data handling
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt42
-rw-r--r--app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt119
2 files changed, 84 insertions, 77 deletions
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt
index 2eb294bf6..98523ab27 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt
@@ -189,25 +189,7 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
showVoiceMessageLoading()
WorkManager.getInstance(context!!).getWorkInfoByIdLiveData(workInfo.id)
.observeForever { info: WorkInfo? ->
- if (info != null) {
-
- when (info.state) {
- WorkInfo.State.RUNNING -> {
- Log.d(TAG, "WorkInfo.State.RUNNING in ViewHolder")
- showVoiceMessageLoading()
- }
- WorkInfo.State.SUCCEEDED -> {
- Log.d(TAG, "WorkInfo.State.SUCCEEDED in ViewHolder")
- showPlayButton()
- }
- WorkInfo.State.FAILED -> {
- Log.d(TAG, "WorkInfo.State.FAILED in ViewHolder")
- showPlayButton()
- }
- else -> {
- }
- }
- }
+ updateDownloadState(info)
}
}
}
@@ -218,6 +200,28 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
}
}
+ private fun updateDownloadState(info: WorkInfo?) {
+ if (info != null) {
+ when (info.state) {
+ WorkInfo.State.RUNNING -> {
+ Log.d(TAG, "WorkInfo.State.RUNNING in ViewHolder")
+ showVoiceMessageLoading()
+ }
+ WorkInfo.State.SUCCEEDED -> {
+ Log.d(TAG, "WorkInfo.State.SUCCEEDED in ViewHolder")
+ showPlayButton()
+ }
+ WorkInfo.State.FAILED -> {
+ Log.d(TAG, "WorkInfo.State.FAILED in ViewHolder")
+ showPlayButton()
+ }
+ else -> {
+ Log.d(TAG, "WorkInfo.State unused in ViewHolder")
+ }
+ }
+ }
+ }
+
private fun showPlayButton() {
binding.playPauseBtn.visibility = View.VISIBLE
binding.progressBar.visibility = View.GONE
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt
index 241bc3efa..a1f8ed98c 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt
@@ -259,7 +259,7 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
})
}
- private fun isAllEmpty(items: Array<String>): Boolean {
+ private fun isAllEmpty(items: Array<String?>): Boolean {
for (item in items) {
if (!TextUtils.isEmpty(item)) {
return false
@@ -277,19 +277,19 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
binding.userinfoBaseurl.text = Uri.parse(currentUser!!.baseUrl).host
}
DisplayUtils.loadAvatarImage(currentUser, binding.avatarImage, false)
- if (!TextUtils.isEmpty(userInfo!!.displayName)) {
- binding.userinfoFullName.text = userInfo!!.displayName
+ if (!TextUtils.isEmpty(userInfo?.displayName)) {
+ binding.userinfoFullName.text = userInfo?.displayName
}
binding.loadingContent.visibility = View.VISIBLE
adapter!!.setData(createUserInfoDetails(userInfo))
if (isAllEmpty(
arrayOf(
- userInfo!!.displayName!!,
- userInfo!!.phone!!,
- userInfo!!.email!!,
- userInfo!!.address!!,
- userInfo!!.twitter!!,
- userInfo!!.website!!
+ userInfo?.displayName,
+ userInfo?.phone,
+ userInfo?.email,
+ userInfo?.address,
+ userInfo?.twitter,
+ userInfo?.website
)
)
) {
@@ -352,60 +352,63 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
private fun createUserInfoDetails(userInfo: UserProfileData?): List<UserInfoDetailsItem> {
val result: MutableList<UserInfoDetailsItem> = LinkedList()
- result.add(
- UserInfoDetailsItem(
- R.drawable.ic_user,
- userInfo!!.displayName!!,
- resources!!.getString(R.string.user_info_displayname),
- Field.DISPLAYNAME,
- userInfo.displayNameScope
+
+ if (userInfo != null) {
+ result.add(
+ UserInfoDetailsItem(
+ R.drawable.ic_user,
+ userInfo.displayName,
+ resources!!.getString(R.string.user_info_displayname),
+ Field.DISPLAYNAME,
+ userInfo.displayNameScope
+ )
)
- )
- result.add(
- UserInfoDetailsItem(
- R.drawable.ic_phone,
- userInfo.phone!!,
- resources!!.getString(R.string.user_info_phone),
- Field.PHONE,
- userInfo.phoneScope
+ result.add(
+ UserInfoDetailsItem(
+ R.drawable.ic_phone,
+ userInfo.phone,
+ resources!!.getString(R.string.user_info_phone),
+ Field.PHONE,
+ userInfo.phoneScope
+ )
)
- )
- result.add(
- UserInfoDetailsItem(
- R.drawable.ic_email,
- userInfo.email!!,
- resources!!.getString(R.string.user_info_email),
- Field.EMAIL,
- userInfo.emailScope
+ result.add(
+ UserInfoDetailsItem(
+ R.drawable.ic_email,
+ userInfo.email,
+ resources!!.getString(R.string.user_info_email),
+ Field.EMAIL,
+ userInfo.emailScope
+ )
)
- )
- result.add(
- UserInfoDetailsItem(
- R.drawable.ic_map_marker,
- userInfo.address!!,
- resources!!.getString(R.string.user_info_address),
- Field.ADDRESS,
- userInfo.addressScope
+ result.add(
+ UserInfoDetailsItem(
+ R.drawable.ic_map_marker,
+ userInfo.address,
+ resources!!.getString(R.string.user_info_address),
+ Field.ADDRESS,
+ userInfo.addressScope
+ )
)
- )
- result.add(
- UserInfoDetailsItem(
- R.drawable.ic_web,
- DisplayUtils.beautifyURL(userInfo.website),
- resources!!.getString(R.string.user_info_website),
- Field.WEBSITE,
- userInfo.websiteScope
+ result.add(
+ UserInfoDetailsItem(
+ R.drawable.ic_web,
+ DisplayUtils.beautifyURL(userInfo.website),
+ resources!!.getString(R.string.user_info_website),
+ Field.WEBSITE,
+ userInfo.websiteScope
+ )
)
- )
- result.add(
- UserInfoDetailsItem(
- R.drawable.ic_twitter,
- DisplayUtils.beautifyTwitterHandle(userInfo.twitter),
- resources!!.getString(R.string.user_info_twitter),
- Field.TWITTER,
- userInfo.twitterScope
+ result.add(
+ UserInfoDetailsItem(
+ R.drawable.ic_twitter,
+ DisplayUtils.beautifyTwitterHandle(userInfo.twitter),
+ resources!!.getString(R.string.user_info_twitter),
+ Field.TWITTER,
+ userInfo.twitterScope
+ )
)
- )
+ }
return result
}
@@ -622,7 +625,7 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
class UserInfoDetailsItem(
@field:DrawableRes @param:DrawableRes var icon: Int,
- var text: String,
+ var text: String?,
var hint: String,
val field: Field,
var scope: Scope?