From d08b4f51b80ff66af645a3856d4b6e50ac107b1e Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 4 Nov 2024 23:20:50 +0100 Subject: [PATCH] add backup message in the predefined status list Signed-off-by: sowjanyakch --- .../adapters/PredefinedStatusViewHolder.kt | 2 +- .../json/capabilities/UserStatusCapability.kt | 2 +- .../status/predefined/PredefinedStatus.kt | 2 +- .../talk/ui/dialog/SetStatusDialogFragment.kt | 99 +++++++++---------- .../java/com/nextcloud/talk/utils/ApiUtils.kt | 4 +- 5 files changed, 52 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/PredefinedStatusViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/PredefinedStatusViewHolder.kt index 1ccdd5abf..4c6bb4e65 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/PredefinedStatusViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/PredefinedStatusViewHolder.kt @@ -24,7 +24,7 @@ class PredefinedStatusViewHolder(private val binding: PredefinedStatusBinding) : binding.icon.text = status.icon binding.name.text = status.message - binding.resetStatusButton.visibility = if(position == 0) View.VISIBLE else View.GONE + binding.resetStatusButton.visibility = if (position == 0) View.VISIBLE else View.GONE if (status.clearAt == null) { binding.clearAt.text = context.getString(R.string.dontClear) diff --git a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/UserStatusCapability.kt b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/UserStatusCapability.kt index 1eda9036b..1ccc07fc8 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/capabilities/UserStatusCapability.kt +++ b/app/src/main/java/com/nextcloud/talk/models/json/capabilities/UserStatusCapability.kt @@ -25,5 +25,5 @@ data class UserStatusCapability( var supportsEmoji: Boolean ) : Parcelable { // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject' - constructor() : this(false, false,false) + constructor() : this(false, false, false) } diff --git a/app/src/main/java/com/nextcloud/talk/models/json/status/predefined/PredefinedStatus.kt b/app/src/main/java/com/nextcloud/talk/models/json/status/predefined/PredefinedStatus.kt index 87b061c04..19dd1b0ac 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/status/predefined/PredefinedStatus.kt +++ b/app/src/main/java/com/nextcloud/talk/models/json/status/predefined/PredefinedStatus.kt @@ -18,7 +18,7 @@ data class PredefinedStatus( @JsonField(name = ["id"]) var id: String, @JsonField(name = ["icon"]) - var icon: String, + var icon: String?, @JsonField(name = ["message"]) var message: String, @JsonField(name = ["clearAt"]) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt index 7d3502393..be5c2e1f2 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt @@ -115,73 +115,72 @@ class SetStatusDialogFragment : currentStatus = it.getParcelable(ARG_CURRENT_STATUS_PARAM) credentials = ApiUtils.getCredentials(currentUser?.username, currentUser?.token)!! - ncApi.getPredefinedStatuses(credentials, ApiUtils.getUrlForPredefinedStatuses(currentUser?.baseUrl!!)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Observer { - - override fun onSubscribe(d: Disposable) { - // unused atm - } - - override fun onNext(responseBody: ResponseBody) { - val predefinedStatusOverall: PredefinedStatusOverall = LoganSquare.parse( - responseBody - .string(), - PredefinedStatusOverall::class.java - ) - predefinedStatusOverall.ocs?.data?.let { it1 -> predefinedStatusesList.addAll(it1) } - - if (currentStatus?.messageIsPredefined == true && - currentStatus?.messageId?.isNotEmpty() == true - ) { - val messageId = currentStatus!!.messageId - selectedPredefinedStatus = predefinedStatusesList.firstOrNull { ps -> messageId == ps.id } - } - - adapter.notifyDataSetChanged() - } - - override fun onError(e: Throwable) { - Log.e(TAG, "Error while fetching predefined statuses", e) - } - - override fun onComplete() { - // unused atm - } - }) + checkBackupStatus() + fetchPredefinedStatuses() } - - - - } - fun backupStatus(){ - ncApi.backupStatus(credentials, ApiUtils.getUrlForBackupStatus(currentUser?.baseUrl!!,currentUser?.userId!!)) + private fun fetchPredefinedStatuses() { + ncApi.getPredefinedStatuses(credentials, ApiUtils.getUrlForPredefinedStatuses(currentUser?.baseUrl!!)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Observer { + override fun onSubscribe(d: Disposable) {} + + override fun onNext(responseBody: ResponseBody) { + val predefinedStatusOverall: PredefinedStatusOverall = LoganSquare.parse( + responseBody.string(), + PredefinedStatusOverall::class.java + ) + predefinedStatusOverall.ocs?.data?.let { predefinedStatusesList.addAll(it) } + + if (currentStatus?.messageIsPredefined == true && currentStatus?.messageId?.isNotEmpty() == true) { + val messageId = currentStatus!!.messageId + selectedPredefinedStatus = predefinedStatusesList.firstOrNull { ps -> messageId == ps.id } + } + + adapter.notifyDataSetChanged() + } + + override fun onError(e: Throwable) { + Log.e(TAG, "Error while fetching predefined statuses", e) + } + + override fun onComplete() {} + }) + } + + private fun checkBackupStatus() { + ncApi.backupStatus(credentials, ApiUtils.getUrlForBackupStatus(currentUser?.baseUrl!!, currentUser?.userId!!)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Observer { override fun onSubscribe(d: Disposable) { - } - override fun onNext(statusOverall:StatusOverall) { - val status = statusOverall - Log.d("TAG","$status") + override fun onNext(statusOverall: StatusOverall) { + if (statusOverall.ocs?.meta?.statusCode == 200) { + val status = statusOverall.ocs?.data + if (status?.messageIsPredefined == false) { + val backupPredefinedStatus = PredefinedStatus( + status?.userId!!, + status.icon, + status.message!!, + ClearAt(type = "period", time = status.clearAt.toString()) + ) + predefinedStatusesList.add(0, backupPredefinedStatus) + } + } } - override fun onError(e: Throwable) { Log.e(TAG, "Error while fetching predefined statuses", e) } override fun onComplete() { - // unused atm } }) - } @SuppressLint("InflateParams") @@ -434,10 +433,6 @@ class SetStatusDialogFragment : }) } - private fun getBackupStatus(){ - - } - private fun visualizeStatus(statusType: String) { StatusType.values().firstOrNull { it.name == statusType.uppercase(Locale.ROOT) }?.let { visualizeStatus(it) } } diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt index f9baa086c..f03a8787f 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt @@ -483,8 +483,8 @@ object ApiUtils { } @JvmStatic - fun getUrlForBackupStatus(baseUrl:String, userId:String):String{ - return "$baseUrl$OCS_API_VERSION/apps/user_status/api/v1/user_status/_$userId" + fun getUrlForBackupStatus(baseUrl: String, userId: String): String { + return "$baseUrl$OCS_API_VERSION/apps/user_status/api/v1/statuses/_$userId" } fun getUrlForSetStatusType(baseUrl: String): String {