Update chat presentation (#10444)
This commit is contained in:
@@ -59,7 +59,11 @@ export function useListConvoMembersQuery({
|
||||
r => r.did === data.member.did,
|
||||
)
|
||||
if (newMember) {
|
||||
mutateList(list => list.concat(newMember))
|
||||
mutateList(list =>
|
||||
list.some(m => m.did === newMember.did)
|
||||
? list
|
||||
: list.concat(newMember),
|
||||
)
|
||||
}
|
||||
}
|
||||
} else if (ChatBskyConvoDefs.isLogRemoveMember(log)) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {
|
||||
type ChatBskyActorDefs,
|
||||
type ChatBskyConvoDefs,
|
||||
ChatBskyConvoDefs,
|
||||
type ChatBskyConvoListConvos,
|
||||
type ChatBskyGroupRemoveMembers,
|
||||
} from '@atproto/api'
|
||||
@@ -56,9 +56,18 @@ export function useRemoveFromGroupChat(
|
||||
CONVO_KEY(convoId),
|
||||
prev => {
|
||||
if (!prev) return
|
||||
const nextMembers = prev.members.filter(m => !members.includes(m.did))
|
||||
const removed = prev.members.length - nextMembers.length
|
||||
if (!ChatBskyConvoDefs.isGroupConvo(prev.kind)) {
|
||||
return {...prev, members: nextMembers}
|
||||
}
|
||||
return {
|
||||
...prev,
|
||||
members: prev.members.filter(m => !members.includes(m.did)),
|
||||
members: nextMembers,
|
||||
kind: {
|
||||
...prev.kind,
|
||||
memberCount: Math.max(0, prev.kind.memberCount - removed),
|
||||
},
|
||||
}
|
||||
},
|
||||
)
|
||||
@@ -73,9 +82,20 @@ export function useRemoveFromGroupChat(
|
||||
...page,
|
||||
convos: page.convos.map(convo => {
|
||||
if (convo.id !== convoId) return convo
|
||||
const nextMembers = convo.members.filter(
|
||||
m => !members.includes(m.did),
|
||||
)
|
||||
const removed = convo.members.length - nextMembers.length
|
||||
if (!ChatBskyConvoDefs.isGroupConvo(convo.kind)) {
|
||||
return {...convo, members: nextMembers}
|
||||
}
|
||||
return {
|
||||
...convo,
|
||||
members: convo.members.filter(m => !members.includes(m.did)),
|
||||
members: nextMembers,
|
||||
kind: {
|
||||
...convo.kind,
|
||||
memberCount: Math.max(0, convo.kind.memberCount - removed),
|
||||
},
|
||||
}
|
||||
}),
|
||||
})),
|
||||
|
||||
Reference in New Issue
Block a user