LibreChat/client/src/utils/cleanupPreset.ts
Danny Avila b45ff8e4ed
🏷️ refactor: EditPresetDialog UI and Remove chatGptLabel from Presets (#7543)
* fix: add necessary dep., remove unnecessary dep from useMentions memoization

* fix: Migrate deprecated chatGptLabel to modelLabel in cleanupPreset and simplify getPresetTitle logic

* fix: Enhance cleanupPreset to remove empty chatGptLabel and add comprehensive tests for label migration and preset handling

* chore: Update endpointType prop in PopoverButtons to allow null values for better flexibility

* refactor: Replace Dialog with OGDialog in EditPresetDialog for improved UI consistency and structure

* style: Update EditPresetDialog layout and styling for improved responsiveness and consistency
2025-05-24 19:24:42 -04:00

50 lines
1.7 KiB
TypeScript

import { parseConvo } from 'librechat-data-provider';
import type { TPreset } from 'librechat-data-provider';
type UIPreset = Partial<TPreset> & { presetOverride?: Partial<TPreset> };
type TCleanupPreset = {
preset?: UIPreset;
};
const cleanupPreset = ({ preset: _preset }: TCleanupPreset): TPreset => {
const { endpoint, endpointType } = _preset ?? ({} as UIPreset);
if (endpoint == null || endpoint === '') {
console.error(`Unknown endpoint ${endpoint}`, _preset);
return {
endpoint: null,
presetId: _preset?.presetId ?? null,
title: _preset?.title ?? 'New Preset',
};
}
const { presetOverride = {}, ...rest } = _preset ?? {};
const preset = { ...rest, ...presetOverride };
// Handle deprecated chatGptLabel field
// If both chatGptLabel and modelLabel exist, prioritize modelLabel and remove chatGptLabel
// If only chatGptLabel exists, migrate it to modelLabel
if (preset.chatGptLabel && preset.modelLabel) {
// Both exist: prioritize modelLabel, remove chatGptLabel
delete preset.chatGptLabel;
} else if (preset.chatGptLabel && !preset.modelLabel) {
// Only chatGptLabel exists: migrate to modelLabel
preset.modelLabel = preset.chatGptLabel;
delete preset.chatGptLabel;
} else if ('chatGptLabel' in preset) {
// chatGptLabel exists but is empty/falsy: remove it
delete preset.chatGptLabel;
}
/* @ts-ignore: endpoint can be a custom defined name */
const parsedPreset = parseConvo({ endpoint, endpointType, conversation: preset });
return {
presetId: _preset?.presetId ?? null,
...parsedPreset,
endpoint,
endpointType,
title: _preset?.title ?? 'New Preset',
} as TPreset;
};
export default cleanupPreset;