hotfix import
This commit is contained in:
		
							parent
							
								
									f5118e3037
								
							
						
					
					
						commit
						1f31cc5507
					
				|  | @ -1,9 +1,9 @@ | ||||||
| import { Conversation } from "@/types"; | import { ChatFolder, Conversation } from "@/types"; | ||||||
| import { IconFileImport } from "@tabler/icons-react"; | import { IconFileImport } from "@tabler/icons-react"; | ||||||
| import { FC } from "react"; | import { FC } from "react"; | ||||||
| 
 | 
 | ||||||
| interface Props { | interface Props { | ||||||
|   onImport: (conversations: Conversation[]) => void; |   onImport: (data: { conversations: Conversation[]; folders: ChatFolder[] }) => void; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export const Import: FC<Props> = ({ onImport }) => { | export const Import: FC<Props> = ({ onImport }) => { | ||||||
|  | @ -19,8 +19,13 @@ export const Import: FC<Props> = ({ onImport }) => { | ||||||
|           const file = e.target.files[0]; |           const file = e.target.files[0]; | ||||||
|           const reader = new FileReader(); |           const reader = new FileReader(); | ||||||
|           reader.onload = (e) => { |           reader.onload = (e) => { | ||||||
|             const conversations: Conversation[] = JSON.parse(e.target?.result as string); |             let json = JSON.parse(e.target?.result as string); | ||||||
|             onImport(conversations); | 
 | ||||||
|  |             if (!json.folders) { | ||||||
|  |               json = { history: json, folders: [] }; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             onImport({ conversations: json.history, folders: json.folders }); | ||||||
|           }; |           }; | ||||||
|           reader.readAsText(file); |           reader.readAsText(file); | ||||||
|         }} |         }} | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ interface Props { | ||||||
|   onApiKeyChange: (apiKey: string) => void; |   onApiKeyChange: (apiKey: string) => void; | ||||||
|   onClearConversations: () => void; |   onClearConversations: () => void; | ||||||
|   onExportConversations: () => void; |   onExportConversations: () => void; | ||||||
|   onImportConversations: (conversations: Conversation[]) => void; |   onImportConversations: (data: { conversations: Conversation[]; folders: ChatFolder[] }) => void; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export const Sidebar: FC<Props> = ({ loading, conversations, lightMode, selectedConversation, apiKey, folders, onCreateFolder, onDeleteFolder, onUpdateFolder, onNewConversation, onToggleLightMode, onSelectConversation, onDeleteConversation, onToggleSidebar, onUpdateConversation, onApiKeyChange, onClearConversations, onExportConversations, onImportConversations }) => { | export const Sidebar: FC<Props> = ({ loading, conversations, lightMode, selectedConversation, apiKey, folders, onCreateFolder, onDeleteFolder, onUpdateFolder, onNewConversation, onToggleLightMode, onSelectConversation, onDeleteConversation, onToggleSidebar, onUpdateConversation, onApiKeyChange, onClearConversations, onExportConversations, onImportConversations }) => { | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import { Conversation } from "@/types"; | import { ChatFolder, Conversation } from "@/types"; | ||||||
| import { IconFileExport, IconMoon, IconSun } from "@tabler/icons-react"; | import { IconFileExport, IconMoon, IconSun } from "@tabler/icons-react"; | ||||||
| import { FC } from "react"; | import { FC } from "react"; | ||||||
| import { ClearConversations } from "./ClearConversations"; | import { ClearConversations } from "./ClearConversations"; | ||||||
|  | @ -13,7 +13,7 @@ interface Props { | ||||||
|   onApiKeyChange: (apiKey: string) => void; |   onApiKeyChange: (apiKey: string) => void; | ||||||
|   onClearConversations: () => void; |   onClearConversations: () => void; | ||||||
|   onExportConversations: () => void; |   onExportConversations: () => void; | ||||||
|   onImportConversations: (conversations: Conversation[]) => void; |   onImportConversations: (data: { conversations: Conversation[]; folders: ChatFolder[] }) => void; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export const SidebarSettings: FC<Props> = ({ lightMode, apiKey, onToggleLightMode, onApiKeyChange, onClearConversations, onExportConversations, onImportConversations }) => { | export const SidebarSettings: FC<Props> = ({ lightMode, apiKey, onToggleLightMode, onApiKeyChange, onClearConversations, onExportConversations, onImportConversations }) => { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ import { cleanConversationHistory, cleanSelectedConversation } from "@/utils/app | ||||||
| import { DEFAULT_SYSTEM_PROMPT } from "@/utils/app/const"; | import { DEFAULT_SYSTEM_PROMPT } from "@/utils/app/const"; | ||||||
| import { saveConversation, saveConversations, updateConversation } from "@/utils/app/conversation"; | import { saveConversation, saveConversations, updateConversation } from "@/utils/app/conversation"; | ||||||
| import { saveFolders } from "@/utils/app/folders"; | import { saveFolders } from "@/utils/app/folders"; | ||||||
| import { exportConversations, importConversations } from "@/utils/app/importExport"; | import { exportData, importData } from "@/utils/app/importExport"; | ||||||
| import { IconArrowBarLeft, IconArrowBarRight } from "@tabler/icons-react"; | import { IconArrowBarLeft, IconArrowBarRight } from "@tabler/icons-react"; | ||||||
| import Head from "next/head"; | import Head from "next/head"; | ||||||
| import { useEffect, useRef, useState } from "react"; | import { useEffect, useRef, useState } from "react"; | ||||||
|  | @ -210,14 +210,16 @@ export default function Home() { | ||||||
|     localStorage.setItem("isUsingEnv", isUsingEnv.toString()); |     localStorage.setItem("isUsingEnv", isUsingEnv.toString()); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   const handleExportConversations = () => { |   const handleExportData = () => { | ||||||
|     exportConversations(); |     exportData(); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   const handleImportConversations = (conversations: Conversation[]) => { |   const handleImportConversations = (data: { conversations: Conversation[]; folders: ChatFolder[] }) => { | ||||||
|     importConversations(conversations); |     console.log(data); | ||||||
|     setConversations(conversations); |     importData(data.conversations, data.folders); | ||||||
|     setSelectedConversation(conversations[conversations.length - 1]); |     setConversations(data.conversations); | ||||||
|  |     setSelectedConversation(data.conversations[data.conversations.length - 1]); | ||||||
|  |     setFolders(data.folders); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   const handleSelectConversation = (conversation: Conversation) => { |   const handleSelectConversation = (conversation: Conversation) => { | ||||||
|  | @ -461,7 +463,7 @@ export default function Home() { | ||||||
|                   onUpdateConversation={handleUpdateConversation} |                   onUpdateConversation={handleUpdateConversation} | ||||||
|                   onApiKeyChange={handleApiKeyChange} |                   onApiKeyChange={handleApiKeyChange} | ||||||
|                   onClearConversations={handleClearConversations} |                   onClearConversations={handleClearConversations} | ||||||
|                   onExportConversations={handleExportConversations} |                   onExportConversations={handleExportData} | ||||||
|                   onImportConversations={handleImportConversations} |                   onImportConversations={handleImportConversations} | ||||||
|                 /> |                 /> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,11 +1,23 @@ | ||||||
| import { Conversation } from "@/types"; | import { ChatFolder, Conversation } from "@/types"; | ||||||
| 
 | 
 | ||||||
| export const exportConversations = () => { | export const exportData = () => { | ||||||
|   const history = localStorage.getItem("conversationHistory"); |   let history = localStorage.getItem("conversationHistory"); | ||||||
|  |   let folders = localStorage.getItem("folders"); | ||||||
| 
 | 
 | ||||||
|   if (!history) return; |   if (history) { | ||||||
|  |     history = JSON.parse(history); | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   const blob = new Blob([history], { type: "application/json" }); |   if (folders) { | ||||||
|  |     folders = JSON.parse(folders); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   const data = { | ||||||
|  |     history, | ||||||
|  |     folders | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const blob = new Blob([JSON.stringify(data)], { type: "application/json" }); | ||||||
|   const url = URL.createObjectURL(blob); |   const url = URL.createObjectURL(blob); | ||||||
|   const link = document.createElement("a"); |   const link = document.createElement("a"); | ||||||
|   link.download = "chatbot_ui_history.json"; |   link.download = "chatbot_ui_history.json"; | ||||||
|  | @ -17,7 +29,8 @@ export const exportConversations = () => { | ||||||
|   URL.revokeObjectURL(url); |   URL.revokeObjectURL(url); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export const importConversations = (conversations: Conversation[]) => { | export const importData = (conversations: Conversation[], folders: ChatFolder[]) => { | ||||||
|   localStorage.setItem("conversationHistory", JSON.stringify(conversations)); |   localStorage.setItem("conversationHistory", JSON.stringify(conversations)); | ||||||
|   localStorage.setItem("selectedConversation", JSON.stringify(conversations[conversations.length - 1])); |   localStorage.setItem("selectedConversation", JSON.stringify(conversations[conversations.length - 1])); | ||||||
|  |   localStorage.setItem("folders", JSON.stringify(folders)); | ||||||
| }; | }; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue