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