chore: format code
This commit is contained in:
parent
cfab9a65ca
commit
d6efed3e77
|
|
@ -10,49 +10,46 @@ import type Mithril from 'mithril';
|
||||||
* the search dropdown.
|
* the search dropdown.
|
||||||
*/
|
*/
|
||||||
export default class Source implements SearchSource {
|
export default class Source implements SearchSource {
|
||||||
protected results = new Map<string, unknown[]>();
|
protected results = new Map<string, unknown[]>();
|
||||||
|
|
||||||
search(query: string) {
|
search(query: string) {
|
||||||
query = query.toLowerCase();
|
query = query.toLowerCase();
|
||||||
|
|
||||||
this.results.set(query, []);
|
this.results.set(query, []);
|
||||||
|
|
||||||
const params = {
|
const params = {
|
||||||
filter: { q: query },
|
filter: { q: query },
|
||||||
page: { limit: 3 },
|
page: { limit: 3 },
|
||||||
include: 'mostRelevantPost',
|
include: 'mostRelevantPost',
|
||||||
};
|
};
|
||||||
|
|
||||||
return app.request(
|
return app.request(app.forum.attribute('apiUrl') + '/blomstra/search', params).then((results) => this.results.set(query, results));
|
||||||
app.forum.attribute('apiUrl') + '/blomstra/search',
|
}
|
||||||
params
|
|
||||||
).then((results) => this.results.set(query, results));
|
|
||||||
}
|
|
||||||
|
|
||||||
view(query: string): Array<Mithril.Vnode> {
|
view(query: string): Array<Mithril.Vnode> {
|
||||||
query = query.toLowerCase();
|
query = query.toLowerCase();
|
||||||
|
|
||||||
const results = (this.results.get(query) || []).map((discussion: unknown) => {
|
const results = (this.results.get(query) || []).map((discussion: unknown) => {
|
||||||
const mostRelevantPost = discussion.mostRelevantPost();
|
const mostRelevantPost = discussion.mostRelevantPost();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<li className="DiscussionSearchResult" data-index={'discussions' + discussion.id()}>
|
<li className="DiscussionSearchResult" data-index={'discussions' + discussion.id()}>
|
||||||
<Link href={app.route.discussion(discussion, mostRelevantPost && mostRelevantPost.number())}>
|
<Link href={app.route.discussion(discussion, mostRelevantPost && mostRelevantPost.number())}>
|
||||||
<div className="DiscussionSearchResult-title">{highlight(discussion.title(), query)}</div>
|
<div className="DiscussionSearchResult-title">{highlight(discussion.title(), query)}</div>
|
||||||
{mostRelevantPost ? <div className="DiscussionSearchResult-excerpt">{highlight(mostRelevantPost.contentPlain(), query, 100)}</div> : ''}
|
{mostRelevantPost ? <div className="DiscussionSearchResult-excerpt">{highlight(mostRelevantPost.contentPlain(), query, 100)}</div> : ''}
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
}) as Array<Mithril.Vnode>;
|
}) as Array<Mithril.Vnode>;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
<li className="Dropdown-header">{app.translator.trans('core.forum.search.discussions_heading')}</li>,
|
<li className="Dropdown-header">{app.translator.trans('core.forum.search.discussions_heading')}</li>,
|
||||||
<li>
|
<li>
|
||||||
<LinkButton icon="fas fa-search" href={app.route('index', { q: query })}>
|
<LinkButton icon="fas fa-search" href={app.route('index', { q: query })}>
|
||||||
{app.translator.trans('core.forum.search.all_discussions_button', { query })}
|
{app.translator.trans('core.forum.search.all_discussions_button', { query })}
|
||||||
</LinkButton>
|
</LinkButton>
|
||||||
</li>,
|
</li>,
|
||||||
...results,
|
...results,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,12 @@ import Search from 'flarum/forum/components/Search';
|
||||||
import Source from './Source';
|
import Source from './Source';
|
||||||
|
|
||||||
app.initializers.add('blomstra-search', () => {
|
app.initializers.add('blomstra-search', () => {
|
||||||
extend(Search.prototype, 'sourceItems', function (items) {
|
extend(Search.prototype, 'sourceItems', function (items) {
|
||||||
items.remove('users');
|
items.remove('users');
|
||||||
items.remove('discussions');
|
items.remove('discussions');
|
||||||
|
|
||||||
items.add('discussions', new Source());
|
items.add('discussions', new Source());
|
||||||
|
|
||||||
console.log(items)
|
console.log(items);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue