diff --git a/app/src/main/java/com/nextcloud/talk/PhoneUtils.kt b/app/src/main/java/com/nextcloud/talk/PhoneUtils.kt new file mode 100644 index 000000000..f981bd27d --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/PhoneUtils.kt @@ -0,0 +1,14 @@ +/* + * Nextcloud Talk - Android Client + * + * SPDX-FileCopyrightText: 2025 Sowjanya Kota + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +package com.nextcloud.talk + +object PhoneUtils { + fun isPhoneNumber(input: String?): Boolean { + return input?.matches(Regex("^\\+?\\d+$")) == true + } +} 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 1662b2c4c..548bbcf79 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 @@ -15,6 +15,7 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.res.ResourcesCompat import coil.Coil import coil.request.ImageRequest +import com.nextcloud.talk.PhoneUtils.isPhoneNumber import com.nextcloud.talk.R import com.nextcloud.talk.adapters.items.ParticipantItem.ParticipantItemViewHolder import com.nextcloud.talk.data.user.model.User @@ -129,14 +130,22 @@ class MentionAutocompleteItem( private fun setAvatar(holder: ParticipantItemViewHolder, objectId: String?) { when (source) { SOURCE_CALLS -> { - run {} run { - holder.binding.avatarView.loadUserAvatar( - viewThemeUtils.talk.themePlaceholderAvatar( - holder.binding.avatarView, - R.drawable.ic_avatar_group + if (isPhoneNumber(displayName)) { + holder.binding.avatarView.loadUserAvatar( + viewThemeUtils.talk.themePlaceholderAvatar( + holder.binding.avatarView, + R.drawable.ic_phone_small + ) ) - ) + } else { + holder.binding.avatarView.loadUserAvatar( + viewThemeUtils.talk.themePlaceholderAvatar( + holder.binding.avatarView, + R.drawable.ic_avatar_group + ) + ) + } } } 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 46b77639a..dcf4e89c9 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt @@ -54,6 +54,7 @@ import coil.request.ImageRequest import coil.target.Target import coil.transform.CircleCropTransformation import com.google.android.material.chip.ChipDrawable +import com.nextcloud.talk.PhoneUtils.isPhoneNumber import com.nextcloud.talk.R import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.data.user.model.User @@ -162,8 +163,9 @@ object DisplayUtils { val config = context.resources.configuration chip.setLayoutDirection(config.layoutDirection) val drawable: Int - val isCallOrGroup = "call" == type || "calls" == type || "groups" == type || "user-group" == type - if (!isCallOrGroup) { + val isCall = "call" == type || "calls" == type + val isGroup = "groups" == type || "user-group" == type + if (!isGroup && !isCall) { drawable = if (chipResource == R.xml.chip_you) { R.drawable.mention_chip } else { @@ -176,8 +178,12 @@ object DisplayUtils { if (type == "circle" || type == "teams") { chip.setChipIconResource(R.drawable.icon_team) } + + if (isCall && isPhoneNumber(label.toString())) { + chip.setChipIconResource(R.drawable.icon_circular_phone) + } chip.setBounds(0, 0, chip.intrinsicWidth, chip.intrinsicHeight) - if (!isCallOrGroup) { + if (!isGroup) { var url = getUrlForAvatar(conversationUser.baseUrl, id, false) if ("guests" == type || "guest" == type || "email" == type) { url = getUrlForGuestAvatar( diff --git a/app/src/main/res/drawable-night/icon_circular_phone.xml b/app/src/main/res/drawable-night/icon_circular_phone.xml new file mode 100644 index 000000000..47026e19f --- /dev/null +++ b/app/src/main/res/drawable-night/icon_circular_phone.xml @@ -0,0 +1,27 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_phone.xml b/app/src/main/res/drawable/ic_phone.xml index a638b1b2c..1636aa11d 100644 --- a/app/src/main/res/drawable/ic_phone.xml +++ b/app/src/main/res/drawable/ic_phone.xml @@ -14,3 +14,4 @@ android:fillColor="@android:color/white" android:pathData="M798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z" /> + diff --git a/app/src/main/res/drawable/ic_phone_small.xml b/app/src/main/res/drawable/ic_phone_small.xml new file mode 100644 index 000000000..b5f2bfbe6 --- /dev/null +++ b/app/src/main/res/drawable/ic_phone_small.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_circular_phone.xml b/app/src/main/res/drawable/icon_circular_phone.xml new file mode 100644 index 000000000..2d83aa6f0 --- /dev/null +++ b/app/src/main/res/drawable/icon_circular_phone.xml @@ -0,0 +1,27 @@ + + + + + + + + + +