diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.kt b/app/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.kt
index 8bf3bf0fa7..1662b2c4cd 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.kt
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/MentionAutocompleteItem.kt
@@ -13,6 +13,8 @@ import android.content.Context
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.res.ResourcesCompat
+import coil.Coil
+import coil.request.ImageRequest
import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.items.ParticipantItem.ParticipantItemViewHolder
import com.nextcloud.talk.data.user.model.User
@@ -165,6 +167,22 @@ class MentionAutocompleteItem(
}
}
+ SOURCE_TEAMS -> {
+ holder.binding.avatarView.post {
+ val imageViewWidth = holder.binding.avatarView.width
+ val imageViewHeight = holder.binding.avatarView.height
+
+ val request = ImageRequest.Builder(context)
+ .data(R.drawable.icon_team)
+ .size(imageViewWidth, imageViewHeight)
+ .scale(coil.size.Scale.FILL)
+ .target(holder.binding.avatarView)
+ .build()
+
+ Coil.imageLoader(context).enqueue(request)
+ }
+ }
+
else -> {
holder.binding.avatarView.loadUserAvatar(
currentUser,
@@ -237,6 +255,7 @@ class MentionAutocompleteItem(
const val SOURCE_GUESTS = "guests"
const val SOURCE_GROUPS = "groups"
const val SOURCE_EMAILS = "emails"
+ const val SOURCE_TEAMS = "teams"
const val SOURCE_FEDERATION = "federated_users"
}
}
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ParticipantItem.kt b/app/src/main/java/com/nextcloud/talk/adapters/items/ParticipantItem.kt
index dd6b40b778..4dac6c2b1c 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/ParticipantItem.kt
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ParticipantItem.kt
@@ -25,6 +25,7 @@ import com.nextcloud.talk.extensions.loadDefaultAvatar
import com.nextcloud.talk.extensions.loadDefaultGroupCallAvatar
import com.nextcloud.talk.extensions.loadFederatedUserAvatar
import com.nextcloud.talk.extensions.loadFirstLetterAvatar
+import com.nextcloud.talk.extensions.loadTeamAvatar
import com.nextcloud.talk.extensions.loadUserAvatar
import com.nextcloud.talk.models.domain.ConversationModel
import com.nextcloud.talk.models.json.participants.Participant
@@ -207,10 +208,14 @@ class ParticipantItem(
private fun loadAvatars(holder: ParticipantItemViewHolder) {
when (model.calculatedActorType) {
- Participant.ActorType.GROUPS, Participant.ActorType.CIRCLES -> {
+ Participant.ActorType.GROUPS -> {
holder.binding.avatarView.loadDefaultGroupCallAvatar(viewThemeUtils)
}
+ Participant.ActorType.CIRCLES -> {
+ holder.binding.avatarView.loadTeamAvatar(viewThemeUtils)
+ }
+
Participant.ActorType.USERS -> {
holder.binding.avatarView.loadUserAvatar(user, model.calculatedActorId!!, true, false)
}
diff --git a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt
index 14607a2105..76d7eaf071 100644
--- a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt
+++ b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt
@@ -838,7 +838,8 @@ class MessageInputFragment : Fragment() {
mentionId.contains("@") ||
mentionId.startsWith("guest/") ||
mentionId.startsWith("group/") ||
- mentionId.startsWith("email/")
+ mentionId.startsWith("email/") ||
+ mentionId.startsWith("team/")
if (shouldQuote) {
mentionId = "\"" + mentionId + "\""
}
diff --git a/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt b/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt
index 9411756c08..a989359bda 100644
--- a/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt
+++ b/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt
@@ -343,6 +343,11 @@ fun ImageView.loadDefaultGroupCallAvatar(viewThemeUtils: ViewThemeUtils): io.rea
return loadUserAvatar(data)
}
+fun ImageView.loadTeamAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex.disposables.Disposable {
+ val data: Any = viewThemeUtils.talk.themePlaceholderAvatar(this, R.drawable.icon_team) as Any
+ return loadUserAvatar(data)
+}
+
fun ImageView.loadDefaultAvatar(viewThemeUtils: ViewThemeUtils): io.reactivex.disposables.Disposable {
val data: Any = viewThemeUtils.talk.themePlaceholderAvatar(this, R.drawable.account_circle_96dp) as Any
return loadUserAvatar(data)
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt
index 6a7a70f315..927d330253 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt
@@ -29,7 +29,9 @@ class ChatUtils {
if (individualHashMap != null) {
val type = individualHashMap["type"]
- resultMessage = if (type == "user" || type == "guest" || type == "call" || type == "email") {
+ resultMessage = if (type == "user" || type == "guest" || type == "call" || type == "email" ||
+ type == "circle"
+ ) {
resultMessage?.replace("{$key}", "@" + individualHashMap["name"])
} else if (type == "geo-location") {
individualHashMap["name"]
diff --git a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt
index 6ca1937a66..5d7249915f 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt
+++ b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt
@@ -176,6 +176,9 @@ object DisplayUtils {
} else {
chip.setChipIconResource(R.drawable.ic_circular_group)
}
+ if (type == "circle" || type == "teams") {
+ chip.setChipIconResource(R.drawable.icon_team)
+ }
chip.setBounds(0, 0, chip.intrinsicWidth, chip.intrinsicHeight)
if (!isCallOrGroup) {
var url = getUrlForAvatar(conversationUser.baseUrl, id, false)
diff --git a/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt
index 4c6b3c07e3..ea0c0335c0 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt
+++ b/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt
@@ -107,7 +107,7 @@ class MessageUtils(val context: Context) {
val individualHashMap = message.messageParameters!![key]
if (individualHashMap != null) {
when (individualHashMap["type"]) {
- "user", "guest", "call", "user-group", "email" -> {
+ "user", "guest", "call", "user-group", "email", "circle" -> {
val chip = if (individualHashMap["id"] == message.activeUser!!.userId) {
R.xml.chip_you
} else {
diff --git a/app/src/main/res/drawable-night/icon_team.xml b/app/src/main/res/drawable-night/icon_team.xml
new file mode 100644
index 0000000000..3db1be0bd6
--- /dev/null
+++ b/app/src/main/res/drawable-night/icon_team.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/icon_team.xml b/app/src/main/res/drawable/icon_team.xml
new file mode 100644
index 0000000000..1b266f1455
--- /dev/null
+++ b/app/src/main/res/drawable/icon_team.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/detekt.yml b/detekt.yml
index f0922b2d9a..a516d586a5 100644
--- a/detekt.yml
+++ b/detekt.yml
@@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: GPL-3.0-or-later
build:
- maxIssues: 78
+ maxIssues: 80
weights:
# complexity: 2
# LongParameterList: 1