Skip to content

Commit cf33e64

Browse files
Merge pull request #5937 from nextcloud/style/2409/darkLightAvatars
👤 Load avatar dark/light depending on the active theme
2 parents 5ffc29a + 75225fe commit cf33e64

24 files changed

Lines changed: 101 additions & 74 deletions

app/src/main/java/com/nextcloud/talk/call/components/AvatarWithFallback.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ fun getUrlForAvatar(participant: ParticipantUiState, displayName: String): Strin
7878
var url = ApiUtils.getUrlForAvatar(
7979
participant.baseUrl,
8080
participant.actorId,
81-
true
81+
true,
82+
darkMode = isDarkModeOn(LocalContext.current)
8283
)
8384
if (Participant.ActorType.GUESTS == participant.actorType ||
8485
Participant.ActorType.EMAILS == participant.actorType

app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,21 +1358,12 @@ class ChatActivity :
13581358
}
13591359

13601360
if (uiState.userAbsence.replacementUserDisplayName != null) {
1361-
var imageUri = ApiUtils.getUrlForAvatar(
1361+
val imageUri = ApiUtils.getUrlForAvatar(
13621362
conversationUser?.baseUrl,
1363-
uiState.userAbsence
1364-
.replacementUserId,
1365-
false
1363+
uiState.userAbsence.replacementUserId,
1364+
false,
1365+
darkMode = DisplayUtils.isDarkModeOn(context)
13661366
).toUri()
1367-
if (DisplayUtils.isDarkModeOn(context)) {
1368-
imageUri = ApiUtils.getUrlForAvatarDarkTheme(
1369-
conversationUser?.baseUrl,
1370-
uiState
1371-
.userAbsence
1372-
.replacementUserId,
1373-
false
1374-
).toUri()
1375-
}
13761367
binding.outOfOfficeContainer.findViewById<TextView>(R.id.absenceReplacement).text =
13771368
context.resources.getString(R.string.user_absence_replacement)
13781369
binding.outOfOfficeContainer.findViewById<ImageView>(R.id.replacement_user_avatar)
@@ -1944,16 +1935,13 @@ class ChatActivity :
19441935
}
19451936

19461937
if (isOneToOneConversation()) {
1947-
var url = ApiUtils.getUrlForAvatar(
1938+
val url = ApiUtils.getUrlForAvatar(
19481939
conversationUser!!.baseUrl!!,
19491940
currentConversation!!.name,
1950-
true
1941+
true,
1942+
darkMode = DisplayUtils.isDarkModeOn(supportActionBar?.themedContext!!)
19511943
)
19521944

1953-
if (DisplayUtils.isDarkModeOn(supportActionBar?.themedContext!!)) {
1954-
url = "$url/dark"
1955-
}
1956-
19571945
val target = object : Target {
19581946

19591947
private fun setIcon(drawable: Drawable?) {

app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ import com.nextcloud.talk.ui.dialog.AttachmentDialog
7777
import com.nextcloud.talk.ui.theme.ViewThemeUtils
7878
import com.nextcloud.talk.users.UserManager
7979
import com.nextcloud.talk.utils.ApiUtils
80+
import com.nextcloud.talk.utils.DisplayUtils
8081
import com.nextcloud.talk.utils.CapabilitiesUtil
8182
import com.nextcloud.talk.utils.CharPolicy
8283
import com.nextcloud.talk.utils.ConversationUtils
@@ -297,7 +298,12 @@ class MessageInputFragment : Fragment() {
297298
val url: String = if (message.actorType == "guests" || message.actorType == "guest") {
298299
ApiUtils.getUrlForGuestAvatar(user!!.baseUrl!!, message.actorDisplayName, true)
299300
} else {
300-
ApiUtils.getUrlForAvatar(user!!.baseUrl!!, message.actorId, false)
301+
ApiUtils.getUrlForAvatar(
302+
user!!.baseUrl!!,
303+
message.actorId,
304+
false,
305+
darkMode = DisplayUtils.isDarkModeOn(requireContext())
306+
)
301307
}
302308

303309
val imageRequest: ImageRequest = ImageRequest.Builder(requireContext())

app/src/main/java/com/nextcloud/talk/contacts/ContactsRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ interface ContactsRepository {
2424
conversationName: String?
2525
): RoomOverall
2626

27-
fun getImageUri(user: User, avatarId: String, requestBigSize: Boolean): String
27+
fun getImageUri(user: User, avatarId: String, requestBigSize: Boolean, isDarkMode: Boolean): String
2828

2929
fun getContactsFlow(user: User, searchQuery: String?): Flow<List<AutocompleteUser>>
3030
}

app/src/main/java/com/nextcloud/talk/contacts/ContactsRepositoryImpl.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,8 @@ class ContactsRepositoryImpl @Inject constructor(private val ncApiCoroutines: Nc
6767
return response
6868
}
6969

70-
override fun getImageUri(user: User, avatarId: String, requestBigSize: Boolean): String =
71-
ApiUtils.getUrlForAvatar(
72-
user.baseUrl,
73-
avatarId,
74-
requestBigSize
75-
)
70+
override fun getImageUri(user: User, avatarId: String, requestBigSize: Boolean, isDarkMode: Boolean): String =
71+
ApiUtils.getUrlForAvatar(user.baseUrl, avatarId, requestBigSize, darkMode = isDarkMode)
7672

7773
override fun getContactsFlow(user: User, searchQuery: String?): Flow<List<AutocompleteUser>> =
7874
flow {

app/src/main/java/com/nextcloud/talk/contacts/ContactsViewModel.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,12 @@ class ContactsViewModel @Inject constructor(
175175
}
176176
}
177177

178-
fun getImageUri(avatarId: String, requestBigSize: Boolean): String =
178+
fun getImageUri(avatarId: String, requestBigSize: Boolean, isDarkMode: Boolean): String =
179179
repository.getImageUri(
180180
currentUser,
181181
avatarId,
182-
requestBigSize
182+
requestBigSize,
183+
isDarkMode
183184
)
184185

185186
sealed class ContactsUiState {

app/src/main/java/com/nextcloud/talk/contacts/components/ContactItemRow.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import com.nextcloud.talk.contacts.CompanionClass
4141
import com.nextcloud.talk.contacts.ContactsViewModel
4242
import com.nextcloud.talk.contacts.loadImage
4343
import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser
44+
import com.nextcloud.talk.utils.DisplayUtils
4445
import com.nextcloud.talk.utils.bundle.BundleKeys
4546

4647
@Suppress("LongMethod")
@@ -75,7 +76,7 @@ fun ContactItemRow(contact: AutocompleteUser, contactsViewModel: ContactsViewMod
7576
),
7677
verticalAlignment = Alignment.CenterVertically
7778
) {
78-
val imageUri = contact.id?.let { contactsViewModel.getImageUri(it, true) }
79+
val imageUri = contact.id?.let { contactsViewModel.getImageUri(it, true, DisplayUtils.isDarkModeOn(context)) }
7980
val errorPlaceholderImage: Int = R.drawable.account_circle_96dp
8081
val loadedImage = loadImage(imageUri, context, errorPlaceholderImage)
8182
AsyncImage(

app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationActivity.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ import androidx.compose.ui.graphics.Color
7070
import androidx.compose.ui.graphics.vector.ImageVector
7171
import androidx.compose.ui.layout.ContentScale
7272
import androidx.compose.ui.platform.LocalContext
73+
import com.nextcloud.talk.utils.DisplayUtils
7374
import androidx.compose.ui.res.colorResource
7475
import androidx.compose.ui.res.painterResource
7576
import androidx.compose.ui.res.stringResource
@@ -405,7 +406,9 @@ fun AddParticipants(
405406
}
406407
participants.toSet().forEach { participant ->
407408
Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
408-
val imageUri = participant.id?.let { conversationCreationViewModel.getImageUri(it, true) }
409+
val imageUri = participant.id?.let {
410+
conversationCreationViewModel.getImageUri(it, true, DisplayUtils.isDarkModeOn(LocalContext.current))
411+
}
409412
val errorPlaceholderImage: Int = R.drawable.account_circle_96dp
410413
val loadedImage = loadImage(imageUri, context, errorPlaceholderImage)
411414
AsyncImage(

app/src/main/java/com/nextcloud/talk/conversationcreation/ConversationCreationViewModel.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -232,12 +232,8 @@ class ConversationCreationViewModel @Inject constructor(
232232
}
233233
}
234234

235-
fun getImageUri(avatarId: String, requestBigSize: Boolean): String =
236-
ApiUtils.getUrlForAvatar(
237-
_currentUser.baseUrl,
238-
avatarId,
239-
requestBigSize
240-
)
235+
fun getImageUri(avatarId: String, requestBigSize: Boolean, isDarkMode: Boolean): String =
236+
ApiUtils.getUrlForAvatar(_currentUser.baseUrl, avatarId, requestBigSize, darkMode = isDarkMode)
241237
}
242238

243239
sealed class AllowGuestsUiState {

app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@ import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.ARCHIVE
117117
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.MENTION
118118
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.UNREAD
119119
import com.nextcloud.talk.users.UserManager
120+
import androidx.compose.ui.platform.LocalContext
120121
import com.nextcloud.talk.utils.ApiUtils
122+
import com.nextcloud.talk.utils.DisplayUtils
121123
import com.nextcloud.talk.utils.BrandingUtils
122124
import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
123125
import com.nextcloud.talk.utils.CapabilitiesUtil.isServerEOL
@@ -500,7 +502,8 @@ class ConversationsListActivity :
500502
val imageURI = ApiUtils.getUrlForAvatar(
501503
currentUser?.baseUrl,
502504
msg.actorId,
503-
true
505+
true,
506+
darkMode = DisplayUtils.isDarkModeOn(LocalContext.current)
504507
)
505508
val conversationImageURI = ApiUtils.getUrlForConversationAvatar(
506509
ApiUtils.API_V1,
@@ -734,7 +737,8 @@ class ConversationsListActivity :
734737
val url = ApiUtils.getUrlForAvatar(
735738
currentUser!!.baseUrl!!,
736739
currentUser!!.userId,
737-
true
740+
true,
741+
darkMode = DisplayUtils.isDarkModeOn(this)
738742
)
739743

740744
val credentials = ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)

0 commit comments

Comments
 (0)