mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-20 18:30:15 +01:00
refactor(NewConversationMenu): remove unused imports and commented code
feat(NewConversationMenu): add support for deleting presets and creating new presets using data-provider
This commit is contained in:
parent
285351bb53
commit
8b952be268
1 changed files with 26 additions and 28 deletions
|
|
@ -1,12 +1,11 @@
|
||||||
import React, { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
import { useRecoilValue, useRecoilState } from 'recoil';
|
import { useRecoilValue, useRecoilState } from 'recoil';
|
||||||
import EditPresetDialog from '../../Endpoints/EditPresetDialog.jsx';
|
import EditPresetDialog from '../../Endpoints/EditPresetDialog';
|
||||||
import EndpointItems from './EndpointItems.jsx';
|
import EndpointItems from './EndpointItems';
|
||||||
import PresetItems from './PresetItems.jsx';
|
import PresetItems from './PresetItems';
|
||||||
import FileUpload from './FileUpload.jsx';
|
import FileUpload from './FileUpload';
|
||||||
import getIcon from '~/utils/getIcon';
|
import getIcon from '~/utils/getIcon';
|
||||||
import manualSWR, { handleFileSelected } from '~/utils/fetchers';
|
import { useDeletePresetMutation, useCreatePresetMutation } from '~/data-provider';
|
||||||
|
|
||||||
import { Button } from '../../ui/Button.tsx';
|
import { Button } from '../../ui/Button.tsx';
|
||||||
import {
|
import {
|
||||||
DropdownMenu,
|
DropdownMenu,
|
||||||
|
|
@ -17,33 +16,34 @@ import {
|
||||||
DropdownMenuTrigger
|
DropdownMenuTrigger
|
||||||
} from '../../ui/DropdownMenu.tsx';
|
} from '../../ui/DropdownMenu.tsx';
|
||||||
import { Dialog, DialogTrigger } from '../../ui/Dialog.tsx';
|
import { Dialog, DialogTrigger } from '../../ui/Dialog.tsx';
|
||||||
import DialogTemplate from '../../ui/DialogTemplate.jsx';
|
import DialogTemplate from '../../ui/DialogTemplate';
|
||||||
|
|
||||||
import store from '~/store';
|
import store from '~/store';
|
||||||
|
|
||||||
export default function NewConversationMenu() {
|
export default function NewConversationMenu() {
|
||||||
// const [modelSave, setModelSave] = useState(false);
|
|
||||||
const [menuOpen, setMenuOpen] = useState(false);
|
const [menuOpen, setMenuOpen] = useState(false);
|
||||||
const [presetModelVisible, setPresetModelVisible] = useState(false);
|
const [presetModelVisible, setPresetModelVisible] = useState(false);
|
||||||
const [preset, setPreset] = useState(false);
|
const [preset, setPreset] = useState(false);
|
||||||
|
|
||||||
// const models = useRecoilValue(store.models);
|
|
||||||
const availableEndpoints = useRecoilValue(store.availableEndpoints);
|
const availableEndpoints = useRecoilValue(store.availableEndpoints);
|
||||||
// const setCustomGPTModels = useSetRecoilState(store.customGPTModels);
|
|
||||||
const [presets, setPresets] = useRecoilState(store.presets);
|
const [presets, setPresets] = useRecoilState(store.presets);
|
||||||
|
|
||||||
const conversation = useRecoilValue(store.conversation) || {};
|
const conversation = useRecoilValue(store.conversation) || {};
|
||||||
const { endpoint, conversationId } = conversation;
|
const { endpoint, conversationId } = conversation;
|
||||||
// const { model, promptPrefix, chatGptLabel, conversationId } = conversation;
|
|
||||||
const { newConversation } = store.useConversation();
|
const { newConversation } = store.useConversation();
|
||||||
|
|
||||||
const { trigger: clearPresetsTrigger } = manualSWR(`/api/presets/delete`, 'post', res => {
|
const deletePresetsMutation = useDeletePresetMutation();
|
||||||
console.log(res);
|
const createPresetMutation = useCreatePresetMutation();
|
||||||
setPresets(res.data);
|
|
||||||
});
|
|
||||||
|
|
||||||
const importPreset = jsonData => {
|
const importPreset = jsonData => {
|
||||||
handleFileSelected(jsonData).then(setPresets);
|
createPresetMutation.mutate({...jsonData}, {
|
||||||
|
onSuccess: (data) => {
|
||||||
|
setPresets(data);
|
||||||
|
},
|
||||||
|
onError: (error) => {
|
||||||
|
console.error('Error uploading the preset:', error);
|
||||||
|
}
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
// update the default model when availableModels changes
|
// update the default model when availableModels changes
|
||||||
|
|
@ -65,7 +65,6 @@ export default function NewConversationMenu() {
|
||||||
setMenuOpen(false);
|
setMenuOpen(false);
|
||||||
|
|
||||||
if (!newEndpoint) return;
|
if (!newEndpoint) return;
|
||||||
// else if (newEndpoint === endpoint) return;
|
|
||||||
else {
|
else {
|
||||||
newConversation({}, { endpoint: newEndpoint });
|
newConversation({}, { endpoint: newEndpoint });
|
||||||
}
|
}
|
||||||
|
|
@ -75,7 +74,6 @@ export default function NewConversationMenu() {
|
||||||
const onSelectPreset = newPreset => {
|
const onSelectPreset = newPreset => {
|
||||||
setMenuOpen(false);
|
setMenuOpen(false);
|
||||||
if (!newPreset) return;
|
if (!newPreset) return;
|
||||||
// else if (newEndpoint === endpoint) return;
|
|
||||||
else {
|
else {
|
||||||
newConversation({}, newPreset);
|
newConversation({}, newPreset);
|
||||||
}
|
}
|
||||||
|
|
@ -86,8 +84,12 @@ export default function NewConversationMenu() {
|
||||||
setPreset(preset);
|
setPreset(preset);
|
||||||
};
|
};
|
||||||
|
|
||||||
const clearPreset = () => {
|
const clearAllPresets = () => {
|
||||||
clearPresetsTrigger({});
|
deletePresetsMutation.mutate({arg: {}});
|
||||||
|
};
|
||||||
|
|
||||||
|
const onDeletePreset = preset => {
|
||||||
|
deletePresetsMutation.mutate({arg: preset});
|
||||||
};
|
};
|
||||||
|
|
||||||
const icon = getIcon({
|
const icon = getIcon({
|
||||||
|
|
@ -99,9 +101,7 @@ export default function NewConversationMenu() {
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialog
|
<Dialog>
|
||||||
// onOpenChange={onOpenChange}
|
|
||||||
>
|
|
||||||
<DropdownMenu
|
<DropdownMenu
|
||||||
open={menuOpen}
|
open={menuOpen}
|
||||||
onOpenChange={setMenuOpen}
|
onOpenChange={setMenuOpen}
|
||||||
|
|
@ -109,7 +109,6 @@ export default function NewConversationMenu() {
|
||||||
<DropdownMenuTrigger asChild>
|
<DropdownMenuTrigger asChild>
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
// style={{backgroundColor: 'rgb(16, 163, 127)'}}
|
|
||||||
className={`group relative mt-[-8px] mb-[-12px] ml-0 items-center rounded-md border-0 p-1 outline-none focus:ring-0 focus:ring-offset-0 dark:data-[state=open]:bg-opacity-50 md:left-1 md:ml-[-12px] md:pl-1`}
|
className={`group relative mt-[-8px] mb-[-12px] ml-0 items-center rounded-md border-0 p-1 outline-none focus:ring-0 focus:ring-offset-0 dark:data-[state=open]:bg-opacity-50 md:left-1 md:ml-[-12px] md:pl-1`}
|
||||||
>
|
>
|
||||||
{icon}
|
{icon}
|
||||||
|
|
@ -150,7 +149,6 @@ export default function NewConversationMenu() {
|
||||||
<Button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
className="h-auto bg-transparent px-2 py-1 text-xs font-medium font-normal text-red-700 hover:bg-slate-200 hover:text-red-700 dark:bg-transparent dark:text-red-400 dark:hover:bg-gray-800 dark:hover:text-red-400"
|
className="h-auto bg-transparent px-2 py-1 text-xs font-medium font-normal text-red-700 hover:bg-slate-200 hover:text-red-700 dark:bg-transparent dark:text-red-400 dark:hover:bg-gray-800 dark:hover:text-red-400"
|
||||||
// onClick={clearPreset}
|
|
||||||
>
|
>
|
||||||
Clear All
|
Clear All
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -159,7 +157,7 @@ export default function NewConversationMenu() {
|
||||||
title="Clear presets"
|
title="Clear presets"
|
||||||
description="Are you sure you want to clear all presets? This is irreversible."
|
description="Are you sure you want to clear all presets? This is irreversible."
|
||||||
selection={{
|
selection={{
|
||||||
selectHandler: clearPreset,
|
selectHandler: clearAllPresets,
|
||||||
selectClasses: 'bg-red-600 hover:bg-red-700 dark:hover:bg-red-800 text-white',
|
selectClasses: 'bg-red-600 hover:bg-red-700 dark:hover:bg-red-800 text-white',
|
||||||
selectText: 'Clear'
|
selectText: 'Clear'
|
||||||
}}
|
}}
|
||||||
|
|
@ -176,7 +174,7 @@ export default function NewConversationMenu() {
|
||||||
presets={presets}
|
presets={presets}
|
||||||
onSelect={onSelectPreset}
|
onSelect={onSelectPreset}
|
||||||
onChangePreset={onChangePreset}
|
onChangePreset={onChangePreset}
|
||||||
onDeletePreset={clearPresetsTrigger}
|
onDeletePreset={onDeletePreset}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<DropdownMenuLabel className="dark:text-gray-300">No preset yet.</DropdownMenuLabel>
|
<DropdownMenuLabel className="dark:text-gray-300">No preset yet.</DropdownMenuLabel>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue