aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/src/plugins/search/folderSearch.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/src/plugins/search/folderSearch.ts')
-rw-r--r--apps/files/src/plugins/search/folderSearch.ts54
1 files changed, 32 insertions, 22 deletions
diff --git a/apps/files/src/plugins/search/folderSearch.ts b/apps/files/src/plugins/search/folderSearch.ts
index 25049fc25b4..6aabefbfc9d 100644
--- a/apps/files/src/plugins/search/folderSearch.ts
+++ b/apps/files/src/plugins/search/folderSearch.ts
@@ -5,7 +5,7 @@
import type { Node } from '@nextcloud/files'
import { emit } from '@nextcloud/event-bus'
-import { getFilePickerBuilder } from '@nextcloud/dialogs';
+import { getFilePickerBuilder } from '@nextcloud/dialogs'
import { imagePath } from '@nextcloud/router'
import { translate as t } from '@nextcloud/l10n'
import logger from '../../logger'
@@ -19,31 +19,41 @@ function init() {
return
}
- logger.info('Initializing unified search plugin: folder search from files app');
+ logger.info('Initializing unified search plugin: folder search from files app')
OCA.UnifiedSearch.registerFilterAction({
- id: 'files',
+ id: 'in-folder',
appId: 'files',
+ searchFrom: 'files',
label: t('files', 'In folder'),
icon: imagePath('files', 'app.svg'),
- callback: () => {
- const filepicker = getFilePickerBuilder('Pick plain text files')
- .addMimeTypeFilter('httpd/unix-directory')
- .allowDirectories(true)
- .addButton({
- label: 'Pick',
- callback: (nodes: Node[]) => {
- logger.info('Folder picked', { folder: nodes[0] })
- const folder = nodes[0]
- emit('nextcloud:unified-search:add-filter', {
- id: 'files',
- payload: folder,
- filterUpdateText: t('files', 'Search in folder: {folder}', { folder: folder.basename }),
- filterParams: { path: folder.path },
- })
- },
- })
- .build()
- filepicker.pick()
+ callback: (showFilePicker: boolean = true) => {
+ if (showFilePicker) {
+ const filepicker = getFilePickerBuilder('Pick plain text files')
+ .addMimeTypeFilter('httpd/unix-directory')
+ .allowDirectories(true)
+ .addButton({
+ label: 'Pick',
+ callback: (nodes: Node[]) => {
+ logger.info('Folder picked', { folder: nodes[0] })
+ const folder = nodes[0]
+ const filterUpdateText = (folder.root === '/files/' + folder.basename)
+ ? t('files', 'Search in all files')
+ : t('files', 'Search in folder: {folder}', { folder: folder.basename })
+ emit('nextcloud:unified-search:add-filter', {
+ id: 'in-folder',
+ appId: 'files',
+ searchFrom: 'files',
+ payload: folder,
+ filterUpdateText,
+ filterParams: { path: folder.path },
+ })
+ },
+ })
+ .build()
+ filepicker.pick()
+ } else {
+ logger.debug('Folder search callback was handled without showing the file picker, it might already be open')
+ }
},
})
}