From 1c4baea62f66bbf353bb69038801b7e98ad10e21 Mon Sep 17 00:00:00 2001 From: Logan Allen Date: Fri, 12 Feb 2021 11:48:50 -0600 Subject: [PATCH] interface: profiles would intermittently show contact information when they should not, fixes this --- .../src/views/apps/chat/ChatResource.tsx | 82 +++++++++++-------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/pkg/interface/src/views/apps/chat/ChatResource.tsx b/pkg/interface/src/views/apps/chat/ChatResource.tsx index 5e8a35e95..6b47a4409 100644 --- a/pkg/interface/src/views/apps/chat/ChatResource.tsx +++ b/pkg/interface/src/views/apps/chat/ChatResource.tsx @@ -80,49 +80,52 @@ export function ChatResource(props: ChatResourceProps) { }, [station]); const [showBanner, setShowBanner] = useState(false); + const [hasLoadedAllowed, setHasLoadedAllowed] = useState(false); const [recipients, setRecipients] = useState([]); const res = resourceFromPath(groupPath); useEffect(() => { (async () => { - if (!res) { return; } - if (!group) { return; } - if (group.hidden) { - const members = _.compact(await Promise.all( - Array.from(group.members) - .map(s => { - const ship = `~${s}`; - if(s === window.ship) { - return Promise.resolve(null); - } - return props.api.contacts.fetchIsAllowed( - `~${window.ship}`, - 'personal', - ship, - true - ).then(isAllowed => { - return isAllowed ? null : ship; - }); - }) - )); + if (!res) { return; } + if (!group) { return; } + if (group.hidden) { + const members = _.compact(await Promise.all( + Array.from(group.members) + .map(s => { + const ship = `~${s}`; + if(s === window.ship) { + return Promise.resolve(null); + } + return props.api.contacts.fetchIsAllowed( + `~${window.ship}`, + 'personal', + ship, + true + ).then(isAllowed => { + return isAllowed ? null : ship; + }); + }) + )); + + if(members.length > 0) { + setShowBanner(true); + setRecipients(members); + } else { + setShowBanner(false); + } - if(members.length > 0) { - setShowBanner(true); - setRecipients(members); } else { - setShowBanner(false); + const groupShared = await props.api.contacts.fetchIsAllowed( + `~${window.ship}`, + 'personal', + res.ship, + true + ); + setShowBanner(!groupShared); } - } else { - const groupShared = await props.api.contacts.fetchIsAllowed( - `~${window.ship}`, - 'personal', - res.ship, - true - ); - setShowBanner(!groupShared); - } + setHasLoadedAllowed(true); })(); }, [groupPath]); @@ -151,7 +154,10 @@ export function ChatResource(props: ChatResourceProps) { history={props.history} graph={graph} unreadCount={unreadCount} - contacts={!showBanner ? contacts : modifiedContacts} + contacts={ + (!showBanner && hasLoadedAllowed) ? + contacts : modifiedContacts + } association={props.association} associations={props.associations} groups={props.groups} @@ -166,9 +172,13 @@ export function ChatResource(props: ChatResourceProps) { ref={chatInput} api={props.api} station={station} - ourContact={!showBanner ? ourContact : null} + ourContact={ + (!showBanner && hasLoadedAllowed) ? ourContact : null + } envelopes={[]} - contacts={contacts} + contacts={ + (!showBanner && hasLoadedAllowed) ? contacts : modifiedContacts + } onUnmount={appendUnsent} s3={props.s3} placeholder="Message..."