show warning dialog when call ends

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2025-05-19 17:25:27 +02:00 committed by Marcel Hibbe
parent 7a4c98db01
commit 0104989eef
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 54 additions and 3 deletions

View File

@ -229,6 +229,13 @@ import java.util.Locale
import java.util.concurrent.ExecutionException import java.util.concurrent.ExecutionException
import javax.inject.Inject import javax.inject.Inject
import kotlin.math.roundToInt import kotlin.math.roundToInt
import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia
import com.google.android.material.card.MaterialCardView
import com.nextcloud.talk.conversationinfo.viewmodel.ConversationInfoViewModel
import com.nextcloud.talk.models.json.participants.Participant
import com.nextcloud.talk.utils.CapabilitiesUtil.retentionOfEventRooms
import com.nextcloud.talk.utils.CapabilitiesUtil.retentionOfInstantMeetingRoom
import com.nextcloud.talk.utils.CapabilitiesUtil.retentionOfSIPRoom
@Suppress("TooManyFunctions") @Suppress("TooManyFunctions")
@AutoInjector(NextcloudTalkApplication::class) @AutoInjector(NextcloudTalkApplication::class)
@ -664,6 +671,40 @@ class ChatActivity :
} }
} }
if (currentConversation?.objectType == ConversationEnums.ObjectType.EVENT) {
val eventEndTimeStamp = currentConversation?.objectId?.split("#")[1]?.toLong()
val currentTimeStamp = (System.currentTimeMillis() / 1000).toLong()
val retentionPeriod = retentionOfEventRooms(spreedCapabilities)
val isPastEvent = eventEndTimeStamp?.let { it < currentTimeStamp }
if (isPastEvent == true && retentionPeriod != 0) {
showConversationDeletionWarning(retentionPeriod)
}
}
if (currentConversation?.objectType == ConversationEnums.ObjectType.PHONE) {
val retentionPeriod = retentionOfSIPRoom(spreedCapabilities)
val systemMessage = currentConversation?.lastMessage?.systemMessageType
if (retentionPeriod != 0 && (
systemMessage == ChatMessage.SystemMessageType.CALL_ENDED ||
systemMessage == ChatMessage.SystemMessageType.CALL_ENDED_EVERYONE
)
) {
showConversationDeletionWarning(retentionPeriod)
}
}
if (currentConversation?.objectType == ConversationEnums.ObjectType.INSTANT_MEETING) {
val retentionPeriod = retentionOfInstantMeetingRoom(spreedCapabilities)
val systemMessage = currentConversation?.lastMessage?.systemMessageType
if (retentionPeriod != 0 && (
systemMessage == ChatMessage.SystemMessageType.CALL_ENDED ||
systemMessage == ChatMessage.SystemMessageType.CALL_ENDED_EVERYONE
)
) {
showConversationDeletionWarning(retentionPeriod)
}
}
updateRoomTimerHandler(MILLIS_250) updateRoomTimerHandler(MILLIS_250)
val urlForChatting = val urlForChatting =
@ -1150,6 +1191,16 @@ class ChatActivity :
} }
} }
fun showConversationDeletionWarning(retentionPeriod: Int) {
binding.conversationDeleteNotice.visibility = View.VISIBLE
val deleteNoticeCard = findViewById<MaterialCardView>(R.id.conversation_delete_notice)
val messageTextView = deleteNoticeCard.findViewById<TextView>(R.id.deletion_message)
messageTextView.text = String.format(
resources.getString(R.string.nc_conversation_auto_delete_notice),
retentionPeriod
)
}
@Suppress("Detekt.TooGenericExceptionCaught") @Suppress("Detekt.TooGenericExceptionCaught")
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()

View File

@ -150,7 +150,7 @@ object CapabilitiesUtil {
return 0 return 0
} }
fun retentionOfSIP(spreedCapabilities: SpreedCapability): Int { fun retentionOfSIPRoom(spreedCapabilities: SpreedCapability): Int {
if (spreedCapabilities.config?.containsKey("conversations") == true) { if (spreedCapabilities.config?.containsKey("conversations") == true) {
val map = spreedCapabilities.config!!["conversations"] val map = spreedCapabilities.config!!["conversations"]
if (map?.containsKey("retention-phone") == true) { if (map?.containsKey("retention-phone") == true) {
@ -160,7 +160,7 @@ object CapabilitiesUtil {
return 0 return 0
} }
fun retentionOfInstantMeetings(spreedCapabilities: SpreedCapability): Int { fun retentionOfInstantMeetingRoom(spreedCapabilities: SpreedCapability): Int {
if (spreedCapabilities.config?.containsKey("conversations") == true) { if (spreedCapabilities.config?.containsKey("conversations") == true) {
val map = spreedCapabilities.config!!["conversations"] val map = spreedCapabilities.config!!["conversations"]
if (map?.containsKey("retention-instant-meetings") == true) { if (map?.containsKey("retention-instant-meetings") == true) {