()
| 54 | }); |
| 55 | |
| 56 | function CommunityDrawerContent(): React.Node { |
| 57 | const communities = useSelector(communityThreadSelector); |
| 58 | const resolvedCommunities = useResolvedThreadInfos(communities); |
| 59 | const communitiesSuffixed = useAppendCommunitySuffix(resolvedCommunities); |
| 60 | const styles = useStyles(unboundStyles); |
| 61 | |
| 62 | const callFetchPrimaryLinks = useFetchPrimaryInviteLinks(); |
| 63 | |
| 64 | const dispatchActionPromise = useDispatchActionPromise(); |
| 65 | const drawerStatus = useDrawerStatus(); |
| 66 | const getAllCommunityInfosWithNames = useLegacyAshoatKeyserverCall( |
| 67 | fetchNativeDrawerAndDirectoryInfos, |
| 68 | ); |
| 69 | const getAllCommunityInfosWithNamesPromiseRef = |
| 70 | React.useRef<?Promise<ClientFetchNativeDrawerAndDirectoryInfosResponse>>( |
| 71 | null, |
| 72 | ); |
| 73 | const [fetchedCommunitiesWithNames, setFetchedCommunitiesWithNames] = |
| 74 | React.useState<?$ReadOnlyArray<ClientCommunityInfoWithCommunityName>>(null); |
| 75 | React.useEffect(() => { |
| 76 | if (drawerStatus !== 'open') { |
| 77 | return; |
| 78 | } |
| 79 | void dispatchActionPromise( |
| 80 | fetchPrimaryInviteLinkActionTypes, |
| 81 | callFetchPrimaryLinks(), |
| 82 | ); |
| 83 | const getAllCommunityInfosWithNamesPromise = |
| 84 | getAllCommunityInfosWithNames(); |
| 85 | getAllCommunityInfosWithNamesPromiseRef.current = |
| 86 | getAllCommunityInfosWithNamesPromise; |
| 87 | void dispatchActionPromise( |
| 88 | fetchNativeDrawerAndDirectoryInfosActionTypes, |
| 89 | getAllCommunityInfosWithNamesPromise, |
| 90 | ); |
| 91 | void (async () => { |
| 92 | const response = await getAllCommunityInfosWithNamesPromise; |
| 93 | setFetchedCommunitiesWithNames( |
| 94 | response.allCommunityInfosWithNames.filter( |
| 95 | community => !viewerIsMember(community.threadInfo), |
| 96 | ), |
| 97 | ); |
| 98 | })(); |
| 99 | }, [ |
| 100 | callFetchPrimaryLinks, |
| 101 | dispatchActionPromise, |
| 102 | drawerStatus, |
| 103 | getAllCommunityInfosWithNames, |
| 104 | ]); |
| 105 | |
| 106 | const [expanded, setExpanded] = React.useState<Set<string>>(() => { |
| 107 | if (communitiesSuffixed.length === 1) { |
| 108 | return new Set([communitiesSuffixed[0].id]); |
| 109 | } |
| 110 | return new Set(); |
| 111 | }); |
| 112 | |
| 113 | const setOpenCommunityOrClose = React.useCallback( |
nothing calls this directly
no test coverage detected