diff options
author | Andy Scherzinger <info@andy-scherzinger.de> | 2022-04-20 11:20:49 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-20 11:20:49 +0300 |
commit | 0123cbbdbf94c9005ac10b3c75bb9329561d4df3 (patch) | |
tree | 567b399cdde5092ea7d56ee3a8d4036d6e42d018 /app/src/main | |
parent | 938d70921738f00081ee780f7269b63459c90b92 (diff) | |
parent | 300e7da1722974ea28b9a6e88dd755bdef9689a8 (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.kt | 42 | ||||
-rw-r--r-- | app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt | 119 |
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? |