mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 17:00:15 +01:00
feat: add delete for presets in menu
[200~refactor(presets.js): remove unused getPreset function refactor(presets.js): use arrow function syntax for map callback refactor(presets.js): add console.log for debugging purposes refactor(presets.js): simplify map callback syntax refactor(presets.js): remove commented out code refactor(FileUpload.jsx): remove commented out code refactor(NewConversationMenu.jsx): rename data parameter to res for clarity refactor(NewConversationMenu.jsx): rename clearPresetsTrigger to deletePresetsTrigger for clarity refactor(NewConversationMenu.jsx): add onDeletePreset prop to PresetItems component refactor(PresetItem.jsx): add TrashIcon component and onDeletePreset prop refactor(PresetItems.jsx): add onDeletePreset prop to PresetItem component
This commit is contained in:
parent
e1c731299c
commit
d4cd9411c0
5 changed files with 26 additions and 26 deletions
|
|
@ -1,10 +1,10 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
const { getPreset, getPresets, savePreset, deletePresets } = require('../../models');
|
const { getPresets, savePreset, deletePresets } = require('../../models');
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
|
|
||||||
router.get('/', async (req, res) => {
|
router.get('/', async (req, res) => {
|
||||||
const presets = (await getPresets(req?.session?.user?.username)).map(preset => {
|
const presets = (await getPresets(req?.session?.user?.username)).map((preset) => {
|
||||||
return preset.toObject();
|
return preset.toObject();
|
||||||
});
|
});
|
||||||
res.status(200).send(presets);
|
res.status(200).send(presets);
|
||||||
|
|
@ -18,7 +18,7 @@ router.post('/', async (req, res) => {
|
||||||
try {
|
try {
|
||||||
await savePreset(req?.session?.user?.username, update);
|
await savePreset(req?.session?.user?.username, update);
|
||||||
|
|
||||||
const presets = (await getPresets(req?.session?.user?.username)).map(preset => {
|
const presets = (await getPresets(req?.session?.user?.username)).map((preset) => {
|
||||||
return preset.toObject();
|
return preset.toObject();
|
||||||
});
|
});
|
||||||
res.status(201).send(presets);
|
res.status(201).send(presets);
|
||||||
|
|
@ -34,12 +34,14 @@ router.post('/delete', async (req, res) => {
|
||||||
|
|
||||||
if (presetId) filter = { presetId };
|
if (presetId) filter = { presetId };
|
||||||
|
|
||||||
|
console.log('delete preset filter', filter);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await deletePresets(req?.session?.user?.username, filter);
|
await deletePresets(req?.session?.user?.username, filter);
|
||||||
|
|
||||||
const presets = (await getPresets(req?.session?.user?.username)).map(preset => {
|
const presets = (await getPresets(req?.session?.user?.username)).map(preset => preset.toObject());
|
||||||
return preset.toObject();
|
|
||||||
});
|
// console.log('delete preset response', presets);
|
||||||
res.status(201).send(presets);
|
res.status(201).send(presets);
|
||||||
// res.status(201).send(dbResponse);
|
// res.status(201).send(dbResponse);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
||||||
|
|
@ -5,20 +5,6 @@ import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
import store from '~/store';
|
import store from '~/store';
|
||||||
|
|
||||||
// async function fetchPresets(callback) {
|
|
||||||
// try {
|
|
||||||
// const response = await axios.get('/api/presets', {
|
|
||||||
// timeout: 1000,
|
|
||||||
// withCredentials: true
|
|
||||||
// });
|
|
||||||
|
|
||||||
// callback(response.data);
|
|
||||||
// } catch (error) {
|
|
||||||
// console.error(error);
|
|
||||||
// console.log('[FileUpload] Error fetching presets');
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
const FileUpload = ({ onFileSelected }) => {
|
const FileUpload = ({ onFileSelected }) => {
|
||||||
// const setPresets = useSetRecoilState(store.presets);
|
// const setPresets = useSetRecoilState(store.presets);
|
||||||
const endpointsFilter = useRecoilValue(store.endpointsFilter);
|
const endpointsFilter = useRecoilValue(store.endpointsFilter);
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,9 @@ export default function NewConversationMenu() {
|
||||||
// const { model, promptPrefix, chatGptLabel, conversationId } = conversation;
|
// const { model, promptPrefix, chatGptLabel, conversationId } = conversation;
|
||||||
const { newConversation } = store.useConversation();
|
const { newConversation } = store.useConversation();
|
||||||
|
|
||||||
const { trigger: clearPresetsTrigger } = manualSWR(`/api/presets/delete`, 'post', data => {
|
const { trigger: clearPresetsTrigger } = manualSWR(`/api/presets/delete`, 'post', res => {
|
||||||
console.log(data);
|
console.log(res);
|
||||||
setPresets(data);
|
setPresets(res.data);
|
||||||
});
|
});
|
||||||
|
|
||||||
const importPreset = jsonData => {
|
const importPreset = jsonData => {
|
||||||
|
|
@ -172,6 +172,7 @@ export default function NewConversationMenu() {
|
||||||
presets={presets}
|
presets={presets}
|
||||||
onSelect={onSelectPreset}
|
onSelect={onSelectPreset}
|
||||||
onChangePreset={onChangePreset}
|
onChangePreset={onChangePreset}
|
||||||
|
onDeletePreset={clearPresetsTrigger}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<DropdownMenuLabel className="dark:text-gray-300">No preset yet.</DropdownMenuLabel>
|
<DropdownMenuLabel className="dark:text-gray-300">No preset yet.</DropdownMenuLabel>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { DropdownMenuRadioItem } from '../../ui/DropdownMenu.tsx';
|
import { DropdownMenuRadioItem } from '../../ui/DropdownMenu.tsx';
|
||||||
import EditIcon from '../../svg/EditIcon';
|
import EditIcon from '../../svg/EditIcon';
|
||||||
|
import TrashIcon from '../../svg/TrashIcon';
|
||||||
import getIcon from '~/utils/getIcon';
|
import getIcon from '~/utils/getIcon';
|
||||||
|
|
||||||
export default function PresetItem({ preset = {}, value, onSelect, onChangePreset }) {
|
export default function PresetItem({ preset = {}, value, onSelect, onChangePreset, onDeletePreset }) {
|
||||||
const { endpoint } = preset;
|
const { endpoint } = preset;
|
||||||
|
|
||||||
const icon = getIcon({
|
const icon = getIcon({
|
||||||
|
|
@ -55,7 +56,16 @@ export default function PresetItem({ preset = {}, value, onSelect, onChangePrese
|
||||||
/> */}
|
/> */}
|
||||||
<div className="flex w-4 flex-1" />
|
<div className="flex w-4 flex-1" />
|
||||||
<button
|
<button
|
||||||
className="invisible m-0 rounded-md text-gray-400 hover:text-gray-700 group-hover:visible dark:text-gray-400 dark:hover:text-gray-200 "
|
className="invisible m-0 mr-1 rounded-md text-gray-400 hover:text-gray-700 group-hover:visible dark:text-gray-400 dark:hover:text-gray-200 "
|
||||||
|
onClick={e => {
|
||||||
|
e.preventDefault();
|
||||||
|
onDeletePreset(preset);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<TrashIcon />
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
className="invisible m-0 p-2 rounded-md text-gray-400 hover:text-gray-700 group-hover:visible dark:text-gray-400 dark:hover:text-gray-200 "
|
||||||
onClick={e => {
|
onClick={e => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
onChangePreset(preset);
|
onChangePreset(preset);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PresetItem from './PresetItem';
|
import PresetItem from './PresetItem';
|
||||||
|
|
||||||
export default function PresetItems({ presets, onSelect, onChangePreset }) {
|
export default function PresetItems({ presets, onSelect, onChangePreset, onDeletePreset }) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{presets.map(preset => (
|
{presets.map(preset => (
|
||||||
|
|
@ -10,6 +10,7 @@ export default function PresetItems({ presets, onSelect, onChangePreset }) {
|
||||||
value={preset}
|
value={preset}
|
||||||
onSelect={onSelect}
|
onSelect={onSelect}
|
||||||
onChangePreset={onChangePreset}
|
onChangePreset={onChangePreset}
|
||||||
|
onDeletePreset={onDeletePreset}
|
||||||
preset={preset}
|
preset={preset}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue