updated to 22.0.2
This commit is contained in:
parent
7fbf1db963
commit
df332bafd8
19 changed files with 75 additions and 175 deletions
|
|
@ -532,12 +532,12 @@ class CallActivity : CallBaseActivity() {
|
|||
)
|
||||
}
|
||||
|
||||
when (CapabilitiesUtil.getRecordingConsentType(conversationUser!!.capabilities!!.spreedCapability!!)) {
|
||||
when (CapabilitiesUtil.getRecordingConsentType(conversationUser.capabilities!!.spreedCapability!!)) {
|
||||
CapabilitiesUtil.RECORDING_CONSENT_NOT_REQUIRED -> initiateCall()
|
||||
CapabilitiesUtil.RECORDING_CONSENT_REQUIRED -> askForRecordingConsent()
|
||||
CapabilitiesUtil.RECORDING_CONSENT_DEPEND_ON_CONVERSATION -> {
|
||||
val getRoomApiVersion = ApiUtils.getConversationApiVersion(
|
||||
conversationUser!!,
|
||||
conversationUser,
|
||||
intArrayOf(ApiUtils.API_V4, 1)
|
||||
)
|
||||
ncApi!!.getRoom(credentials, ApiUtils.getUrlForRoom(getRoomApiVersion, baseUrl, roomToken))
|
||||
|
|
|
|||
|
|
@ -3255,7 +3255,8 @@ class ChatActivity :
|
|||
}
|
||||
|
||||
val searchItem = menu.findItem(R.id.conversation_search)
|
||||
searchItem.isVisible = CapabilitiesUtil.isUnifiedSearchAvailable(spreedCapabilities) &&
|
||||
searchItem.isVisible =
|
||||
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH) &&
|
||||
currentConversation!!.remoteServer.isNullOrEmpty() &&
|
||||
!isChatThread()
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ class ContextChatViewModel @Inject constructor(private val chatNetworkDataSource
|
|||
token = token,
|
||||
messageId = messageId,
|
||||
limit = LIMIT,
|
||||
threadId = threadId?.toInt()
|
||||
threadId = threadId?.toIntOrNull()
|
||||
)
|
||||
|
||||
if (threadId.isNullOrEmpty()) {
|
||||
|
|
|
|||
|
|
@ -89,6 +89,8 @@ import com.nextcloud.talk.contacts.ContactsActivity
|
|||
import com.nextcloud.talk.contacts.ContactsUiState
|
||||
import com.nextcloud.talk.contacts.ContactsViewModel
|
||||
import com.nextcloud.talk.contacts.RoomUiState
|
||||
import com.nextcloud.talk.contextchat.ContextChatView
|
||||
import com.nextcloud.talk.contextchat.ContextChatViewModel
|
||||
import com.nextcloud.talk.conversationlist.viewmodels.ConversationsListViewModel
|
||||
import com.nextcloud.talk.data.network.NetworkMonitor
|
||||
import com.nextcloud.talk.data.user.model.User
|
||||
|
|
@ -113,8 +115,6 @@ import com.nextcloud.talk.threadsoverview.ThreadsOverviewActivity
|
|||
import com.nextcloud.talk.ui.BackgroundVoiceMessageCard
|
||||
import com.nextcloud.talk.ui.dialog.ChooseAccountDialogFragment
|
||||
import com.nextcloud.talk.ui.dialog.ChooseAccountShareToDialogFragment
|
||||
import com.nextcloud.talk.contextchat.ContextChatView
|
||||
import com.nextcloud.talk.contextchat.ContextChatViewModel
|
||||
import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog
|
||||
import com.nextcloud.talk.ui.dialog.FilterConversationFragment
|
||||
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.ARCHIVE
|
||||
|
|
@ -125,7 +125,6 @@ import com.nextcloud.talk.utils.ApiUtils
|
|||
import com.nextcloud.talk.utils.BrandingUtils
|
||||
import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
|
||||
import com.nextcloud.talk.utils.CapabilitiesUtil.isServerEOL
|
||||
import com.nextcloud.talk.utils.CapabilitiesUtil.isUnifiedSearchAvailable
|
||||
import com.nextcloud.talk.utils.ClosedInterfaceImpl
|
||||
import com.nextcloud.talk.utils.ConversationUtils
|
||||
import com.nextcloud.talk.utils.FileUtils
|
||||
|
|
@ -319,7 +318,7 @@ class ConversationsListActivity :
|
|||
return
|
||||
}
|
||||
currentUser?.capabilities?.spreedCapability?.let { spreedCapabilities ->
|
||||
if (isUnifiedSearchAvailable(spreedCapabilities)) {
|
||||
if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH)) {
|
||||
searchHelper = MessageSearchHelper(unifiedSearchRepository)
|
||||
}
|
||||
}
|
||||
|
|
@ -1072,7 +1071,7 @@ class ConversationsListActivity :
|
|||
}
|
||||
|
||||
private fun fetchPendingInvitations() {
|
||||
if (hasSpreedFeatureCapability(currentUser!!.capabilities!!.spreedCapability!!, SpreedFeatures.FEDERATION_V1)) {
|
||||
if (hasSpreedFeatureCapability(currentUser?.capabilities?.spreedCapability, SpreedFeatures.FEDERATION_V1)) {
|
||||
binding.conversationListHintInclude.conversationListHintLayout.setOnClickListener {
|
||||
val intent = Intent(this, InvitationsActivity::class.java)
|
||||
startActivity(intent)
|
||||
|
|
@ -1203,7 +1202,7 @@ class ConversationsListActivity :
|
|||
searchableConversationItems.clear()
|
||||
searchableConversationItems.addAll(conversationItemsWithHeader)
|
||||
if (hasSpreedFeatureCapability(
|
||||
currentUser!!.capabilities!!.spreedCapability!!,
|
||||
currentUser?.capabilities?.spreedCapability,
|
||||
SpreedFeatures.LISTABLE_ROOMS
|
||||
)
|
||||
) {
|
||||
|
|
@ -1464,7 +1463,11 @@ class ConversationsListActivity :
|
|||
adapter?.filterItems()
|
||||
}
|
||||
|
||||
if (isUnifiedSearchAvailable(currentUser!!.capabilities!!.spreedCapability!!)) {
|
||||
if (hasSpreedFeatureCapability(
|
||||
currentUser?.capabilities?.spreedCapability,
|
||||
SpreedFeatures.UNIFIED_SEARCH
|
||||
)
|
||||
) {
|
||||
startMessageSearch(filter)
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1584,7 +1587,7 @@ class ConversationsListActivity :
|
|||
selectedConversation = conversation
|
||||
if (selectedConversation != null) {
|
||||
val hasChatPermission = ParticipantPermissions(
|
||||
currentUser!!.capabilities!!.spreedCapability!!,
|
||||
currentUser?.capabilities?.spreedCapability,
|
||||
selectedConversation!!
|
||||
)
|
||||
.hasChatPermission()
|
||||
|
|
@ -1612,11 +1615,11 @@ class ConversationsListActivity :
|
|||
|
||||
private fun shouldShowLobby(conversation: ConversationModel): Boolean {
|
||||
val participantPermissions = ParticipantPermissions(
|
||||
currentUser!!.capabilities?.spreedCapability!!,
|
||||
currentUser?.capabilities?.spreedCapability,
|
||||
selectedConversation!!
|
||||
)
|
||||
return conversation.lobbyState == ConversationEnums.LobbyState.LOBBY_STATE_MODERATORS_ONLY &&
|
||||
!ConversationUtils.canModerate(conversation, currentUser!!.capabilities!!.spreedCapability!!) &&
|
||||
!ConversationUtils.canModerate(conversation, currentUser?.capabilities?.spreedCapability) &&
|
||||
!participantPermissions.canIgnoreLobby()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
|
|||
bundle.putInt(BundleKeys.KEY_CALL_FLAG, conversation.callFlag)
|
||||
|
||||
val participantPermission = ParticipantPermissions(
|
||||
userBeingCalled!!.capabilities!!.spreedCapability!!,
|
||||
userBeingCalled?.capabilities?.spreedCapability,
|
||||
conversation
|
||||
)
|
||||
bundle.putBoolean(
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ class ProfileActivity : BaseActivity() {
|
|||
binding.emptyList.root.visibility = View.GONE
|
||||
binding.userinfoList.visibility = View.VISIBLE
|
||||
if (CapabilitiesUtil.hasSpreedFeatureCapability(
|
||||
currentUser!!.capabilities!!.spreedCapability!!,
|
||||
currentUser?.capabilities?.spreedCapability,
|
||||
SpreedFeatures.TEMP_USER_AVATAR_API
|
||||
)
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -945,7 +945,7 @@ class SettingsActivity :
|
|||
binding.settingsShowNotificationWarning.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (CapabilitiesUtil.isReadStatusAvailable(currentUser!!.capabilities!!.spreedCapability!!)) {
|
||||
if (CapabilitiesUtil.isReadStatusAvailable(currentUser?.capabilities?.spreedCapability)) {
|
||||
binding.settingsReadPrivacySwitch.isChecked = !CapabilitiesUtil.isReadStatusPrivate(currentUser!!)
|
||||
} else {
|
||||
binding.settingsReadPrivacy.visibility = View.GONE
|
||||
|
|
|
|||
|
|
@ -100,11 +100,13 @@ object CapabilitiesUtil {
|
|||
//region SpreedCapabilities
|
||||
|
||||
@JvmStatic
|
||||
fun hasSpreedFeatureCapability(spreedCapabilities: SpreedCapability, spreedFeatures: SpreedFeatures): Boolean {
|
||||
if (spreedCapabilities.features != null) {
|
||||
return spreedCapabilities.features!!.contains(spreedFeatures.value)
|
||||
fun hasSpreedFeatureCapability(spreedCapabilities: SpreedCapability?, spreedFeatures: SpreedFeatures): Boolean {
|
||||
if (spreedCapabilities == null) {
|
||||
Log.e(TAG, "spreedCapabilities were null when checking capability ${spreedFeatures.value}")
|
||||
return false
|
||||
}
|
||||
return false
|
||||
|
||||
return spreedCapabilities.features?.contains(spreedFeatures.value) == true
|
||||
}
|
||||
|
||||
fun isSharedItemsAvailable(spreedCapabilities: SpreedCapability): Boolean =
|
||||
|
|
@ -136,12 +138,16 @@ object CapabilitiesUtil {
|
|||
return CONVERSATION_DESCRIPTION_LENGTH_FOR_OLD_SERVER
|
||||
}
|
||||
|
||||
fun isReadStatusAvailable(spreedCapabilities: SpreedCapability): Boolean {
|
||||
if (spreedCapabilities.config?.containsKey("chat") == true) {
|
||||
val map: Map<String, Any>? = spreedCapabilities.config!!["chat"]
|
||||
return map != null && map.containsKey("read-privacy")
|
||||
fun isReadStatusAvailable(spreedCapabilities: SpreedCapability?): Boolean {
|
||||
val chatConfig = spreedCapabilities?.config?.get("chat") as? Map<*, *>
|
||||
return if (chatConfig?.containsKey("read-privacy") == true) {
|
||||
true
|
||||
} else {
|
||||
if (spreedCapabilities == null) {
|
||||
Log.e(TAG, "spreedCapabilities were null when checking capability isReadStatusAvailable")
|
||||
}
|
||||
false
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fun retentionOfEventRooms(spreedCapabilities: SpreedCapability): Int {
|
||||
|
|
@ -201,9 +207,6 @@ object CapabilitiesUtil {
|
|||
fun isConversationDescriptionEndpointAvailable(spreedCapabilities: SpreedCapability): Boolean =
|
||||
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ROOM_DESCRIPTION)
|
||||
|
||||
fun isUnifiedSearchAvailable(spreedCapabilities: SpreedCapability): Boolean =
|
||||
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.UNIFIED_SEARCH)
|
||||
|
||||
fun isAbleToCall(spreedCapabilities: SpreedCapability): Boolean =
|
||||
if (
|
||||
spreedCapabilities.config?.containsKey("call") == true &&
|
||||
|
|
|
|||
|
|
@ -27,11 +27,11 @@ object ConversationUtils {
|
|||
Participant.ParticipantType.GUEST_MODERATOR == conversation.participantType ||
|
||||
Participant.ParticipantType.MODERATOR == conversation.participantType
|
||||
|
||||
fun isLockedOneToOne(conversation: ConversationModel, spreedCapabilities: SpreedCapability): Boolean =
|
||||
fun isLockedOneToOne(conversation: ConversationModel, spreedCapabilities: SpreedCapability?): Boolean =
|
||||
conversation.type == ConversationEnums.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL &&
|
||||
CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.LOCKED_ONE_TO_ONE)
|
||||
|
||||
fun canModerate(conversation: ConversationModel, spreedCapabilities: SpreedCapability): Boolean =
|
||||
fun canModerate(conversation: ConversationModel, spreedCapabilities: SpreedCapability?): Boolean =
|
||||
isParticipantOwnerOrModerator(conversation) &&
|
||||
!isLockedOneToOne(conversation, spreedCapabilities) &&
|
||||
conversation.type != ConversationEnums.ConversationType.FORMER_ONE_TO_ONE &&
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import com.nextcloud.talk.models.json.capabilities.SpreedCapability
|
|||
* see https://nextcloud-talk.readthedocs.io/en/latest/constants/#attendee-permissions
|
||||
*/
|
||||
class ParticipantPermissions(
|
||||
private val spreedCapabilities: SpreedCapability,
|
||||
private val spreedCapabilities: SpreedCapability?,
|
||||
private val conversation: ConversationModel
|
||||
) {
|
||||
val isDefault = (conversation.permissions and DEFAULT) == DEFAULT
|
||||
|
|
|
|||
|
|
@ -565,6 +565,7 @@
|
|||
<string name="shared_items_voice">音声番号</string>
|
||||
<string name="starred">お気に入り</string>
|
||||
<string name="startCallForbidden">通話を開始することが許可されていません</string>
|
||||
<string name="start_thread">スレッドを作成する</string>
|
||||
<string name="started_a_call">会話を開始</string>
|
||||
<string name="status_message">ステータスメッセージ</string>
|
||||
<string name="switch_to_breakout_room">ブレイクアウトルームに切り替える</string>
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@
|
|||
<string name="location_permission_denied_msg">Por favor, ative-a nas configurações do aplicativo</string>
|
||||
<string name="location_services_disabled">Serviços de localização desativados</string>
|
||||
<string name="location_services_disabled_msg">Ative os serviços de localização (GPS) para usar este recurso</string>
|
||||
<string name="lock_conversation">Bloquear conversa</string>
|
||||
<string name="lock_conversation">Trancar conversa</string>
|
||||
<string name="lock_symbol">Símbolo de cadeado</string>
|
||||
<string name="lower_hand">Baixar mão</string>
|
||||
<string name="marked_as_read">Conversa %1$s marcada como lida</string>
|
||||
|
|
@ -118,7 +118,7 @@
|
|||
<string name="nc_add_to_favorites">Adicionar aos favoritos</string>
|
||||
<string name="nc_all_ok_operation">OK, tudo pronto!</string>
|
||||
<string name="nc_attendee_pin">PIN: %1$s</string>
|
||||
<string name="nc_biometric_unlock">Desbloquear %1$s</string>
|
||||
<string name="nc_biometric_unlock">Destrancar %1$s</string>
|
||||
<string name="nc_bluetooth_permission_hint">Para ativar os alto-falantes bluetooth, conceda a permissão \"Dispositivos próximos\".</string>
|
||||
<string name="nc_call_button_content_description_answer_video_call">Atender como chamada de vídeo</string>
|
||||
<string name="nc_call_button_content_description_answer_voice_only">Atender apenas como chamada de voz</string>
|
||||
|
|
@ -316,8 +316,8 @@
|
|||
<string name="nc_location_current_position_description">Sua localização atual</string>
|
||||
<string name="nc_location_permission_required">permissão de localização é necessária</string>
|
||||
<string name="nc_location_unknown">Posição desconhecida</string>
|
||||
<string name="nc_locked">Bloqueado</string>
|
||||
<string name="nc_locked_tap_to_unlock">Toque para desbloquear</string>
|
||||
<string name="nc_locked">Trancado</string>
|
||||
<string name="nc_locked_tap_to_unlock">Toque para destrancar</string>
|
||||
<string name="nc_manual">Não definido</string>
|
||||
<string name="nc_mark_as_read">Marcar como lido</string>
|
||||
<string name="nc_mark_as_unread">Marcar como não lido</string>
|
||||
|
|
@ -484,9 +484,9 @@
|
|||
<string name="nc_settings_remove">Excluir</string>
|
||||
<string name="nc_settings_remove_account">Excluir conta</string>
|
||||
<string name="nc_settings_remove_confirmation">Confirme se quer realmente excluir a conta atual.</string>
|
||||
<string name="nc_settings_screen_lock_desc">Bloquear %1$s com o bloqueio de tela do Android ou um método biométrico suportado</string>
|
||||
<string name="nc_settings_screen_lock_desc">Trancar %1$s com o bloqueio de tela do Android ou um método biométrico suportado</string>
|
||||
<string name="nc_settings_screen_lock_timeout_title">Tempo limite para bloqueio de tela</string>
|
||||
<string name="nc_settings_screen_lock_title">Bloquear tela</string>
|
||||
<string name="nc_settings_screen_lock_title">Bloqueio de tela</string>
|
||||
<string name="nc_settings_screen_security_desc">Impede capturas de tela na lista recente e dentro do aplicativo</string>
|
||||
<string name="nc_settings_screen_security_title">Segurança da tela</string>
|
||||
<string name="nc_settings_server_almost_eol">A versão do servidor é muito antiga e não será suportada na próxima versão!</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue