scope file search to current directory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -843,6 +843,8 @@ router.get('/search', async (ctx) => {
|
|||||||
const rootDir = getRootDir(user, ctx.req.query('root') ?? undefined);
|
const rootDir = getRootDir(user, ctx.req.query('root') ?? undefined);
|
||||||
const query = (ctx.req.query('q') || '').trim().toLowerCase();
|
const query = (ctx.req.query('q') || '').trim().toLowerCase();
|
||||||
if (!query) throw errors.BAD_REQUEST('q is required');
|
if (!query) throw errors.BAD_REQUEST('q is required');
|
||||||
|
const searchPath = ctx.req.query('path') || '';
|
||||||
|
const startDir = searchPath ? resolveUserPath(rootDir, searchPath) : rootDir;
|
||||||
|
|
||||||
const MAX_RESULTS = 50;
|
const MAX_RESULTS = 50;
|
||||||
const results: { path: string; name: string; type: string; size: number; modifiedAt: number }[] = [];
|
const results: { path: string; name: string; type: string; size: number; modifiedAt: number }[] = [];
|
||||||
@@ -870,7 +872,7 @@ router.get('/search', async (ctx) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await walk(rootDir);
|
await walk(startDir);
|
||||||
return ctx.json({ results });
|
return ctx.json({ results });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ export const useFileBrowserApp = (basePath: string, rootOverride?: string, initi
|
|||||||
setSearching(true);
|
setSearching(true);
|
||||||
searchTimerRef.current = setTimeout(async () => {
|
searchTimerRef.current = setTimeout(async () => {
|
||||||
try {
|
try {
|
||||||
const data = await filesRef.current.search(q);
|
const data = await filesRef.current.search(q, currentPath);
|
||||||
setSearchResults(data.results);
|
setSearchResults(data.results);
|
||||||
} catch {
|
} catch {
|
||||||
toast.error('Search failed');
|
toast.error('Search failed');
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ export const useFilesAPI = (root: string = 'home') => {
|
|||||||
writeFile: (path: string, content: string) =>
|
writeFile: (path: string, content: string) =>
|
||||||
client.post(withRoot('/file-browser/write'), { path, content }),
|
client.post(withRoot('/file-browser/write'), { path, content }),
|
||||||
|
|
||||||
search: (query: string) =>
|
search: (query: string, path?: string) =>
|
||||||
client.get<{ results: DirEntry[] }>(withRoot(`/file-browser/search?q=${encodeURIComponent(query)}`)),
|
client.get<{ results: DirEntry[] }>(withRoot(`/file-browser/search?q=${encodeURIComponent(query)}${path ? `&path=${encodeURIComponent(path)}` : ''}`)),
|
||||||
|
|
||||||
copy: (sources: string[], destination: string) =>
|
copy: (sources: string[], destination: string) =>
|
||||||
client.post(withRoot('/file-browser/copy'), {
|
client.post(withRoot('/file-browser/copy'), {
|
||||||
|
|||||||
Reference in New Issue
Block a user