import/export add instead of replace (#601)
* change search language * add to import/export * fix log
This commit is contained in:
parent
b964188d0b
commit
5725024d80
|
@ -1,9 +1,4 @@
|
||||||
import {
|
import { IconFileExport, IconSettings } from '@tabler/icons-react';
|
||||||
IconFileExport,
|
|
||||||
IconMoon,
|
|
||||||
IconSettings,
|
|
||||||
IconSun,
|
|
||||||
} from '@tabler/icons-react';
|
|
||||||
import { useContext, useState } from 'react';
|
import { useContext, useState } from 'react';
|
||||||
|
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
|
@ -38,7 +33,6 @@ export const ChatbarSettings = () => {
|
||||||
handleClearConversations,
|
handleClearConversations,
|
||||||
handleImportConversations,
|
handleImportConversations,
|
||||||
handleExportData,
|
handleExportData,
|
||||||
|
|
||||||
handleApiKeyChange,
|
handleApiKeyChange,
|
||||||
} = useContext(ChatbarContext);
|
} = useContext(ChatbarContext);
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ const Sidebar = <T,>({
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<Search
|
<Search
|
||||||
placeholder={t('Search prompts...') || ''}
|
placeholder={t('Search...') || ''}
|
||||||
searchTerm={searchTerm}
|
searchTerm={searchTerm}
|
||||||
onSearch={handleSearchTerm}
|
onSearch={handleSearchTerm}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { Conversation } from '@/types/chat';
|
||||||
import {
|
import {
|
||||||
ExportFormatV1,
|
ExportFormatV1,
|
||||||
ExportFormatV2,
|
ExportFormatV2,
|
||||||
|
@ -6,6 +7,8 @@ import {
|
||||||
LatestExportFormat,
|
LatestExportFormat,
|
||||||
SupportedExportFormats,
|
SupportedExportFormats,
|
||||||
} from '@/types/export';
|
} from '@/types/export';
|
||||||
|
import { FolderInterface } from '@/types/folder';
|
||||||
|
import { Prompt } from '@/types/prompt';
|
||||||
|
|
||||||
import { cleanConversationHistory } from './clean';
|
import { cleanConversationHistory } from './clean';
|
||||||
|
|
||||||
|
@ -109,18 +112,33 @@ export const exportData = () => {
|
||||||
export const importData = (
|
export const importData = (
|
||||||
data: SupportedExportFormats,
|
data: SupportedExportFormats,
|
||||||
): LatestExportFormat => {
|
): LatestExportFormat => {
|
||||||
const cleanedData = cleanData(data);
|
const { history, folders, prompts } = cleanData(data);
|
||||||
const { history, folders, prompts } = cleanedData;
|
|
||||||
|
|
||||||
const conversations = history;
|
const oldConversations = localStorage.getItem('conversationHistory');
|
||||||
localStorage.setItem('conversationHistory', JSON.stringify(conversations));
|
const oldConversationsParsed = oldConversations
|
||||||
|
? JSON.parse(oldConversations)
|
||||||
|
: [];
|
||||||
|
const newHistory: Conversation[] = [...oldConversationsParsed, ...history];
|
||||||
|
localStorage.setItem('conversationHistory', JSON.stringify(newHistory));
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
'selectedConversation',
|
'selectedConversation',
|
||||||
JSON.stringify(conversations[conversations.length - 1]),
|
JSON.stringify(newHistory[newHistory.length - 1]),
|
||||||
);
|
);
|
||||||
|
|
||||||
localStorage.setItem('folders', JSON.stringify(folders));
|
const oldFolders = localStorage.getItem('folders');
|
||||||
localStorage.setItem('prompts', JSON.stringify(prompts));
|
const oldFoldersParsed = oldFolders ? JSON.parse(oldFolders) : [];
|
||||||
|
const newFolders: FolderInterface[] = [...oldFoldersParsed, ...folders];
|
||||||
|
localStorage.setItem('folders', JSON.stringify(newFolders));
|
||||||
|
|
||||||
return cleanedData;
|
const oldPrompts = localStorage.getItem('prompts');
|
||||||
|
const oldPromptsParsed = oldPrompts ? JSON.parse(oldPrompts) : [];
|
||||||
|
const newPrompts: Prompt[] = [...oldPromptsParsed, ...prompts];
|
||||||
|
localStorage.setItem('prompts', JSON.stringify(newPrompts));
|
||||||
|
|
||||||
|
return {
|
||||||
|
version: 4,
|
||||||
|
history: newHistory.map((e, idx) => ({ ...e, id: `${idx}` })),
|
||||||
|
folders: newFolders.map((e, idx) => ({ ...e, id: `${idx}` })),
|
||||||
|
prompts: newPrompts.map((e, idx) => ({ ...e, id: `${idx}` })),
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue