Browse Source

fix(user_status): do not make requests to user_status if known that no status is set

- autocomplete API return status as object, if set, and empty string, if not
- NcAvatar expects preloadedUserStatus as object to block requests
- in case of empty string, empty object should be provided

Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
pull/14933/head
Maksim Sukharev 6 months ago
committed by backportbot[bot]
parent
commit
b9194c90b7
  1. 2
      src/components/LeftSidebar/SearchConversationsResults/SearchConversationsResults.vue
  2. 1
      src/store/conversationsStore.js
  3. 2
      src/store/conversationsStore.spec.js
  4. 19
      src/utils/userStatus.ts

2
src/components/LeftSidebar/SearchConversationsResults/SearchConversationsResults.vue

@ -23,6 +23,7 @@ import Conversation from '../ConversationsList/Conversation.vue'
import { ATTENDEE, CONVERSATION, AVATAR } from '../../../constants.ts'
import { useSettingsStore } from '../../../stores/settings.js'
import type { Conversation as TypeConversation, ParticipantSearchResult } from '../../../types/index.ts'
import { getPreloadedUserStatus } from '../../../utils/userStatus.ts'
const props = defineProps<{
searchText: string,
@ -154,6 +155,7 @@ function iconData(item: ParticipantSearchResult) {
id: item.id,
name: item.label,
source: item.source,
preloadedUserStatus: getPreloadedUserStatus(item),
disableMenu: true,
token: 'new',
showUserStatus: true,

1
src/store/conversationsStore.js

@ -311,6 +311,7 @@ const actions = {
actorId: conversation.actorId, // FIXME check public share page handling
userId: currentUser ? currentUser.uid : '',
displayName: currentUser && currentUser.displayName ? currentUser.displayName : '', // TODO guest name from localstore?
status: '',
},
})
},

2
src/store/conversationsStore.spec.js

@ -165,6 +165,7 @@ describe('conversationsStore', () => {
'session-id-1',
],
userId: 'current-user',
status: '',
},
})
})
@ -196,6 +197,7 @@ describe('conversationsStore', () => {
'session-id-1',
],
userId: '',
status: '',
},
})
})

19
src/utils/userStatus.ts

@ -30,12 +30,21 @@ export function getPreloadedUserStatus(userData?: Conversation | Participant | P
icon: userData.statusIcon || null,
}
}
if ('status' in userData && typeof userData.status === 'object') {
if ('status' in userData) {
// We preloaded the status when via search API
return {
status: userData.status.status || null,
message: userData.status.message || null,
icon: userData.status.icon || null,
if (typeof userData.status === 'object') {
return {
status: userData.status.status || null,
message: userData.status.message || null,
icon: userData.status.icon || null,
}
} else if (typeof userData.status === 'string' && userData.status === '') {
// No status is set, provide empty status object to not make a request
return {
status: null,
message: null,
icon: null,
}
}
}
return undefined

Loading…
Cancel
Save