import React, { useEffect, useMemo } from 'react'; import { Share2Icon } from 'lucide-react'; import { useForm, Controller } from 'react-hook-form'; import { Permissions } from 'librechat-data-provider'; import type { TPromptGroup, TStartupConfig, TUpdatePromptGroupPayload, } from 'librechat-data-provider'; import { Button, Switch, OGDialog, OGDialogTitle, OGDialogClose, OGDialogContent, OGDialogTrigger, } from '~/components/ui'; import { useUpdatePromptGroup, useGetStartupConfig } from '~/data-provider'; import { useToastContext } from '~/Providers'; import { useLocalize } from '~/hooks'; type FormValues = { [Permissions.SHARED_GLOBAL]: boolean; }; const SharePrompt = ({ group, disabled }: { group?: TPromptGroup; disabled: boolean }) => { const localize = useLocalize(); const { showToast } = useToastContext(); const updateGroup = useUpdatePromptGroup(); const { data: startupConfig = {} as TStartupConfig, isFetching } = useGetStartupConfig(); const { instanceProjectId } = startupConfig; const groupIsGlobal = useMemo( () => ((group?.projectIds ?? []) as string[]).includes(instanceProjectId as string), [group, instanceProjectId], ); const { control, setValue, handleSubmit, formState: { isSubmitting }, } = useForm({ mode: 'onChange', defaultValues: { [Permissions.SHARED_GLOBAL]: groupIsGlobal, }, }); useEffect(() => { setValue(Permissions.SHARED_GLOBAL, groupIsGlobal); }, [groupIsGlobal, setValue]); if (group == null || !instanceProjectId) { return null; } const onSubmit = (data: FormValues) => { const groupId = group._id ?? ''; if (groupId === '' || !instanceProjectId) { return; } if (data[Permissions.SHARED_GLOBAL] === true && groupIsGlobal) { showToast({ message: localize('com_ui_prompt_already_shared_to_all'), status: 'info', }); return; } const payload = {} as TUpdatePromptGroupPayload; if (data[Permissions.SHARED_GLOBAL] === true) { payload.projectIds = [startupConfig.instanceProjectId]; } else { payload.removeProjectIds = [startupConfig.instanceProjectId]; } updateGroup.mutate({ id: groupId, payload, }); }; return ( {localize('com_ui_share_var', { 0: `"${group.name}"` })}
{localize('com_ui_share_form_description')}
{localize('com_ui_share_to_all_users')}
( )} />
); }; export default SharePrompt;