diff --git a/src/components/ConversationIcon.vue b/src/components/ConversationIcon.vue index bed942122c..785b639e1a 100644 --- a/src/components/ConversationIcon.vue +++ b/src/components/ConversationIcon.vue @@ -174,8 +174,17 @@ export default { return getPreloadedUserStatus(this.item) }, + canRequestAvatar() { + if (!supportsAvatar || this.item.isDummyConversation) { + return false + } + + // Endpoint limited with #RequireParticipantOrLoggedInAndListedConversation + return !!this.item.actorId + }, + iconClass() { - return getFallbackIconClass(this.item, this.failed) + return getFallbackIconClass(this.item, this.failed || !this.canRequestAvatar) }, themeClass() { @@ -196,7 +205,7 @@ export default { }, avatarUrl() { - if (!supportsAvatar || this.item.isDummyConversation) { + if (!this.canRequestAvatar) { return undefined } diff --git a/src/components/RightSidebar/RightSidebarContent.vue b/src/components/RightSidebar/RightSidebarContent.vue index cebc032304..12476d5d1d 100644 --- a/src/components/RightSidebar/RightSidebarContent.vue +++ b/src/components/RightSidebar/RightSidebarContent.vue @@ -30,6 +30,7 @@ import LocalTime from '../UIShared/LocalTime.vue' import { useGetToken } from '../../composables/useGetToken.ts' import { CONVERSATION } from '../../constants.ts' import { getConversationAvatarOcsUrl } from '../../services/avatarService.ts' +import { hasTalkFeature } from '../../services/CapabilitiesManager.ts' import { useGroupwareStore } from '../../stores/groupware.ts' import { getFallbackIconClass } from '../../utils/conversation.ts' import { convertToUnix } from '../../utils/formattedTime.ts' @@ -55,6 +56,8 @@ const emit = defineEmits<{ (event: 'update:mode', value: 'compact' | 'preview' | 'full'): void }>() +const supportsAvatar = hasTalkFeature('local', 'avatar') + const store = useStore() const groupwareStore = useGroupwareStore() @@ -93,10 +96,19 @@ const sidebarTitle = computed(() => { return conversation.value.displayName }) -const iconClass = computed(() => getFallbackIconClass(conversation.value, profileImageFailed.value)) +const canRequestAvatar = computed(() => { + if (!supportsAvatar || conversation.value.isDummyConversation) { + return false + } + + // Endpoint limited with #RequireParticipantOrLoggedInAndListedConversation + return !!conversation.value.actorId +}) + +const iconClass = computed(() => getFallbackIconClass(conversation.value, (profileImageFailed.value || !canRequestAvatar.value))) const avatarUrl = computed(() => { - if (iconClass.value) { + if (iconClass.value || !canRequestAvatar.value) { return undefined }