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 query = (ctx.req.query('q') || '').trim().toLowerCase();
|
||||
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 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 });
|
||||
});
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ export const useFileBrowserApp = (basePath: string, rootOverride?: string, initi
|
||||
setSearching(true);
|
||||
searchTimerRef.current = setTimeout(async () => {
|
||||
try {
|
||||
const data = await filesRef.current.search(q);
|
||||
const data = await filesRef.current.search(q, currentPath);
|
||||
setSearchResults(data.results);
|
||||
} catch {
|
||||
toast.error('Search failed');
|
||||
|
||||
@@ -24,8 +24,8 @@ export const useFilesAPI = (root: string = 'home') => {
|
||||
writeFile: (path: string, content: string) =>
|
||||
client.post(withRoot('/file-browser/write'), { path, content }),
|
||||
|
||||
search: (query: string) =>
|
||||
client.get<{ results: DirEntry[] }>(withRoot(`/file-browser/search?q=${encodeURIComponent(query)}`)),
|
||||
search: (query: string, path?: string) =>
|
||||
client.get<{ results: DirEntry[] }>(withRoot(`/file-browser/search?q=${encodeURIComponent(query)}${path ? `&path=${encodeURIComponent(path)}` : ''}`)),
|
||||
|
||||
copy: (sources: string[], destination: string) =>
|
||||
client.post(withRoot('/file-browser/copy'), {
|
||||
|
||||
Reference in New Issue
Block a user