From 8ecd93661d94667316afed4635bf1f5a1f2d792d Mon Sep 17 00:00:00 2001 From: NamH Date: Tue, 5 Mar 2024 14:03:39 +0700 Subject: [PATCH] fix: replaced user path from app log (#2238) Signed-off-by: James Co-authored-by: James --- web/hooks/useLogs.tsx | 47 ++++++++++++++++++++++++++----------------- web/hooks/usePath.ts | 21 +++++++------------ 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/web/hooks/useLogs.tsx b/web/hooks/useLogs.tsx index fc591405f9..91620d6c33 100644 --- a/web/hooks/useLogs.tsx +++ b/web/hooks/useLogs.tsx @@ -1,26 +1,37 @@ -import { - fs, - joinPath, - openFileExplorer, - getJanDataFolderPath, -} from '@janhq/core' +import { useCallback } from 'react' + +import { fs, joinPath, openFileExplorer } from '@janhq/core' +import { useAtomValue } from 'jotai' + +import { janDataFolderPathAtom } from '@/helpers/atoms/AppConfig.atom' export const useLogs = () => { - const getLogs = async (file: string) => { - const path = await joinPath(['file://logs', `${file}.log`]) - if (!(await fs.existsSync(path))) return {} - const logs = await fs.readFileSync(path, 'utf-8') - - return logs - } - const openServerLog = async () => { - const janDataFolderPath = await getJanDataFolderPath() + const janDataFolderPath = useAtomValue(janDataFolderPathAtom) + + const getLogs = useCallback( + async (file: string) => { + const path = await joinPath(['file://logs', `${file}.log`]) + if (!(await fs.existsSync(path))) return '' + const logs = await fs.readFileSync(path, 'utf-8') + + const sanitizedLogs = logs.replace( + new RegExp(`${janDataFolderPath}\\/`, 'g'), + 'jan-data-folder/' + ) + + return sanitizedLogs + }, + [janDataFolderPath] + ) + + const openServerLog = useCallback(async () => { const fullPath = await joinPath([janDataFolderPath, 'logs', 'server.log']) return openFileExplorer(fullPath) - } + }, [janDataFolderPath]) - const clearServerLog = async () => { + const clearServerLog = useCallback(async () => { await fs.writeFileSync(await joinPath(['file://logs', 'server.log']), '') - } + }, []) + return { getLogs, openServerLog, clearServerLog } } diff --git a/web/hooks/usePath.ts b/web/hooks/usePath.ts index 545cfb6eec..ed784a5c54 100644 --- a/web/hooks/usePath.ts +++ b/web/hooks/usePath.ts @@ -1,16 +1,13 @@ -import { - openFileExplorer, - joinPath, - getJanDataFolderPath, - baseName, -} from '@janhq/core' +import { openFileExplorer, joinPath, baseName } from '@janhq/core' import { useAtomValue } from 'jotai' import { selectedModelAtom } from '@/containers/DropdownListSidebar' +import { janDataFolderPathAtom } from '@/helpers/atoms/AppConfig.atom' import { activeThreadAtom } from '@/helpers/atoms/Thread.atom' export const usePath = () => { + const janDataFolderPath = useAtomValue(janDataFolderPathAtom) const activeThread = useAtomValue(activeThreadAtom) const selectedModel = useAtomValue(selectedModelAtom) @@ -18,7 +15,6 @@ export const usePath = () => { // TODO: this logic should be refactored. if (type !== 'Model' && !activeThread) return - const userSpace = await getJanDataFolderPath() let filePath = undefined const assistantId = activeThread?.assistants[0]?.assistant_id switch (type) { @@ -40,7 +36,7 @@ export const usePath = () => { } if (!filePath) return - const fullPath = await joinPath([userSpace, filePath]) + const fullPath = await joinPath([janDataFolderPath, filePath]) openFileExplorer(fullPath) } @@ -48,7 +44,6 @@ export const usePath = () => { // TODO: this logic should be refactored. if (type !== 'Model' && !activeThread) return - const userSpace = await getJanDataFolderPath() let filePath = undefined const assistantId = activeThread?.assistants[0]?.assistant_id switch (type) { @@ -74,31 +69,29 @@ export const usePath = () => { } if (!filePath) return - const fullPath = await joinPath([userSpace, filePath]) + const fullPath = await joinPath([janDataFolderPath, filePath]) openFileExplorer(fullPath) } const onViewFile = async (id: string) => { if (!activeThread) return - const userSpace = await getJanDataFolderPath() let filePath = undefined id = await baseName(id) filePath = await joinPath(['threads', `${activeThread.id}/files`, `${id}`]) if (!filePath) return - const fullPath = await joinPath([userSpace, filePath]) + const fullPath = await joinPath([janDataFolderPath, filePath]) openFileExplorer(fullPath) } const onViewFileContainer = async () => { if (!activeThread) return - const userSpace = await getJanDataFolderPath() let filePath = undefined filePath = await joinPath(['threads', `${activeThread.id}/files`]) if (!filePath) return - const fullPath = await joinPath([userSpace, filePath]) + const fullPath = await joinPath([janDataFolderPath, filePath]) openFileExplorer(fullPath) }