-
Notifications
You must be signed in to change notification settings - Fork 133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unified search #600
Unified search #600
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
@include icon-black-white('notes', 'notes', 1); | ||
@include icon-black-white('notes-trans', 'notes', 1); |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,84 @@ | ||||||||||||||||||||||
<?php | ||||||||||||||||||||||
|
||||||||||||||||||||||
declare(strict_types=1); | ||||||||||||||||||||||
|
||||||||||||||||||||||
namespace OCA\Notes\AppInfo; | ||||||||||||||||||||||
|
||||||||||||||||||||||
use OCA\Notes\Service\Note; | ||||||||||||||||||||||
use OCA\Notes\Service\NotesService; | ||||||||||||||||||||||
use OCA\Notes\Service\Util; | ||||||||||||||||||||||
|
||||||||||||||||||||||
use OCP\IUser; | ||||||||||||||||||||||
use OCP\IURLGenerator; | ||||||||||||||||||||||
use OCP\Search\IProvider; | ||||||||||||||||||||||
use OCP\Search\ISearchQuery; | ||||||||||||||||||||||
use OCP\Search\SearchResult; | ||||||||||||||||||||||
use OCP\Search\SearchResultEntry; | ||||||||||||||||||||||
|
||||||||||||||||||||||
class SearchProvider implements IProvider { | ||||||||||||||||||||||
|
||||||||||||||||||||||
/** @var Util */ | ||||||||||||||||||||||
private $util; | ||||||||||||||||||||||
/** @var NotesService */ | ||||||||||||||||||||||
private $notesService; | ||||||||||||||||||||||
/** @var IURLGenerator */ | ||||||||||||||||||||||
private $url; | ||||||||||||||||||||||
|
||||||||||||||||||||||
public function __construct( | ||||||||||||||||||||||
Util $util, | ||||||||||||||||||||||
NotesService $notesService, | ||||||||||||||||||||||
IURLGenerator $url | ||||||||||||||||||||||
) { | ||||||||||||||||||||||
$this->util = $util; | ||||||||||||||||||||||
$this->notesService = $notesService; | ||||||||||||||||||||||
$this->url = $url; | ||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
|
||||||||||||||||||||||
public function getId(): string { | ||||||||||||||||||||||
return Application::APP_ID; | ||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
public function getName(): string { | ||||||||||||||||||||||
return $this->util->l10n->t('Notes'); | ||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
public function getOrder(string $route, array $routeParameters): int { | ||||||||||||||||||||||
if (strpos($route, 'files' . '.') === 0) { | ||||||||||||||||||||||
return 25; | ||||||||||||||||||||||
} elseif (strpos($route, Application::APP_ID . '.') === 0) { | ||||||||||||||||||||||
return -1; | ||||||||||||||||||||||
} | ||||||||||||||||||||||
return 4; | ||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Default is far too high.
Comment on lines
+47
to
+52
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So yeah, as korel already mentioned. Notes are files, but the notes app can present them better. So it should be the prefered app when you search anywhere over files, hence the |
||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
public function search(IUser $user, ISearchQuery $query): SearchResult { | ||||||||||||||||||||||
$notes = $this->notesService->search($user->getUID(), $query->getTerm()); | ||||||||||||||||||||||
// sort by modified time | ||||||||||||||||||||||
usort($notes, function (Note $a, Note $b) { | ||||||||||||||||||||||
return $b->getModified() - $a->getModified(); | ||||||||||||||||||||||
}); | ||||||||||||||||||||||
// create SearchResultEntry from Note | ||||||||||||||||||||||
$result = array_map( | ||||||||||||||||||||||
function (Note $note) : SearchResultEntry { | ||||||||||||||||||||||
$excerpt = $note->getCategory(); | ||||||||||||||||||||||
try { | ||||||||||||||||||||||
$excerpt = $note->getExcerpt(); | ||||||||||||||||||||||
} catch (\Throwable $e) { | ||||||||||||||||||||||
} | ||||||||||||||||||||||
return new SearchResultEntry( | ||||||||||||||||||||||
'', | ||||||||||||||||||||||
$note->getTitle(), | ||||||||||||||||||||||
$excerpt, | ||||||||||||||||||||||
$this->url->linkToRouteAbsolute('notes.page.index') . 'note/'.$note->getId(), | ||||||||||||||||||||||
'icon-notes-trans' | ||||||||||||||||||||||
); | ||||||||||||||||||||||
}, | ||||||||||||||||||||||
$notes | ||||||||||||||||||||||
); | ||||||||||||||||||||||
return SearchResult::complete( | ||||||||||||||||||||||
$this->getName(), | ||||||||||||||||||||||
$result | ||||||||||||||||||||||
); | ||||||||||||||||||||||
} | ||||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you put yourself lower when you're on files?