in apps/chat/src/components/Promptbar/components/PromptFolders.tsx [427:505]
export function PromptFolders() {
const isFilterEmpty = useAppSelector(
PromptsSelectors.selectIsEmptySearchFilter,
);
const commonSearchFilter = useAppSelector(
PromptsSelectors.selectMyItemsFilters,
);
const isSharingEnabled = useAppSelector((state) =>
SettingsSelectors.isSharingEnabled(state, FeatureType.Prompt),
);
const isPublishingEnabled = useAppSelector((state) =>
SettingsSelectors.selectIsPublishingEnabled(state, FeatureType.Prompt),
);
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,
ignoreRootFilter: true,
displayRootFiles: true,
dataQa: 'shared-with-me',
},
{
name: PINNED_PROMPTS_SECTION_NAME,
filters: commonSearchFilter,
showEmptyFolders: isFilterEmpty,
dataQa: 'pinned-prompts',
},
].filter(({ hidden }) => !hidden),
[commonSearchFilter, isFilterEmpty, isPublishingEnabled, isSharingEnabled],
);
return (
<div
className="flex w-full flex-col gap-0.5 divide-y divide-tertiary empty:hidden"
data-qa="prompt-folders"
>
{!toApproveFolderItem.hidden && (
<ApproveRequiredSection
featureTypes={publicationFeatureTypes}
publicationItems={publicationItems}
includeEmptyResourceTypesEmpty
{...toApproveFolderItem}
/>
)}
{folderItems.map((itemProps) => (
<PromptSection key={itemProps.name} {...itemProps} />
))}
</div>
);
}