in apps/chat/src/components/Chatbar/ChatFolders.tsx [445:521]
export function ChatFolders() {
const isFilterEmpty = useAppSelector(
ConversationsSelectors.selectIsEmptySearchFilter,
);
const commonItemFilter = useAppSelector(
ConversationsSelectors.selectMyItemsFilters,
);
const isPublishingEnabled = useAppSelector((state) =>
SettingsSelectors.selectIsPublishingEnabled(state, FeatureType.Chat),
);
const isSharingEnabled = useAppSelector((state) =>
SettingsSelectors.isSharingEnabled(state, FeatureType.Chat),
);
const publicationItemsSelector = useMemo(
() =>
PublicationSelectors.selectFilteredPublications(
publicationFeatureTypes,
true,
),
[],
);
const publicationItems = useAppSelector(publicationItemsSelector);
const toApproveFolderItem = {
hidden: !publicationItems.length,
name: APPROVE_REQUIRED_SECTION_NAME,
displayRootFiles: true,
dataQa: 'approve-required',
};
const folderItems: FolderSectionProps[] = useMemo(
() =>
[
{
hidden: !isPublishingEnabled || !isFilterEmpty,
name: ORGANIZATION_SECTION_NAME,
filters: PublishedWithMeFilter,
displayRootFiles: true,
dataQa: 'published-with-me',
},
{
hidden: !isSharingEnabled || !isFilterEmpty,
name: SHARED_WITH_ME_SECTION_NAME,
filters: SharedWithMeFilters,
displayRootFiles: true,
dataQa: 'shared-with-me',
},
{
name: PINNED_CONVERSATIONS_SECTION_NAME,
filters: commonItemFilter,
showEmptyFolders: isFilterEmpty,
dataQa: 'pinned-chats',
},
].filter(({ hidden }) => !hidden),
[commonItemFilter, isFilterEmpty, isPublishingEnabled, isSharingEnabled],
);
return (
<div
className="flex w-full flex-col gap-0.5 divide-y divide-tertiary empty:hidden"
data-qa="chat-folders"
>
{!toApproveFolderItem.hidden && (
<ApproveRequiredSection
featureTypes={publicationFeatureTypes}
publicationItems={publicationItems}
{...toApproveFolderItem}
/>
)}
{folderItems.map((itemProps) => (
<ChatSection key={itemProps.name} {...itemProps} />
))}
</div>
);
}