Merge pull request #9 from blomstra/im/fix-search-override
fix: override search not fired correctly
This commit is contained in:
commit
09fb4e8b7b
|
|
@ -25,7 +25,7 @@ Enable the extension inside the admin area and configure the settings.
|
|||
Enable the extension in your admin area. Now to seed your existing discussions use the following command:
|
||||
|
||||
```
|
||||
php flarum blomstra:search:build
|
||||
php flarum blomstra:search:index
|
||||
```
|
||||
|
||||
All mutations to discussions are automatically added and removed from the elasticsearch index.
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ export default function extendDiscussionState() {
|
|||
override(DiscussionListState.prototype, 'loadPage', async function (this: DiscussionListState, original, page: number = 1) {
|
||||
const preloaded = app.data.apiDocument || null;
|
||||
|
||||
// If existing payload is given or no search is made, fallback on native page.
|
||||
if (preloaded || !this.requestParams()?.filter?.q) return original.call(this, page);
|
||||
// If existing payload is given fallback on native page.
|
||||
if (preloaded) return original.call(this, page);
|
||||
|
||||
const params = this.requestParams();
|
||||
params.page = {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ export default class DiscussionsSearchSource implements SearchSource {
|
|||
this.results.set(query, models);
|
||||
}
|
||||
|
||||
view(query: string): Mithril.Children {
|
||||
view(query: string): Array<Mithril.Vnode> {
|
||||
query = query.toLowerCase();
|
||||
|
||||
// Get results from map
|
||||
|
|
@ -54,7 +54,7 @@ export default class DiscussionsSearchSource implements SearchSource {
|
|||
const mostRelevantPost = discussion.mostRelevantPost();
|
||||
|
||||
return (
|
||||
<li className="DiscussionSearchResult" data-index={`${this.type}${discussion.id()}`} key={`${this.type}${discussion.id()}`}>
|
||||
<li className="DiscussionSearchResult" data-index={`${this.type}${discussion.id()}`}>
|
||||
<Link href={app.route.discussion(discussion, mostRelevantPost && mostRelevantPost.number())}>
|
||||
<div className="DiscussionSearchResult-title">{highlight(discussion.title(), query)}</div>
|
||||
{!!mostRelevantPost && <div className="DiscussionSearchResult-excerpt">{highlight(mostRelevantPost.contentPlain(), query, 100)}</div>}
|
||||
|
|
@ -63,16 +63,14 @@ export default class DiscussionsSearchSource implements SearchSource {
|
|||
);
|
||||
});
|
||||
|
||||
return (
|
||||
<>
|
||||
<li className="Dropdown-header">{app.translator.trans('core.forum.search.discussions_heading')}</li>
|
||||
return [
|
||||
<li className="Dropdown-header">{app.translator.trans('core.forum.search.discussions_heading')}</li>,
|
||||
<li>
|
||||
<LinkButton icon="fas fa-search" href={app.route('index', { q: query })}>
|
||||
{app.translator.trans('core.forum.search.all_discussions_button', { query })}
|
||||
</LinkButton>
|
||||
</li>
|
||||
{results}
|
||||
</>
|
||||
);
|
||||
</li>,
|
||||
...results,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import app from 'flarum/forum/app';
|
||||
|
||||
import Search from 'flarum/forum/components/Search';
|
||||
import Search, { SearchAttrs, SearchSource } from 'flarum/forum/components/Search';
|
||||
|
||||
import { extend } from 'flarum/common/extend';
|
||||
import ItemList from 'flarum/common/utils/ItemList';
|
||||
|
|
@ -9,12 +9,15 @@ import DiscussionsSearchSource from './SearchSources/DiscussionsSearchSource';
|
|||
import extendDiscussionState from './PaginatedListStates/extendDiscussionState';
|
||||
|
||||
app.initializers.add('blomstra-search', () => {
|
||||
extend(Search.prototype, 'sourceItems', function (this: Search, items: ItemList) {
|
||||
// items.remove('users');
|
||||
items.remove('discussions');
|
||||
|
||||
items.add('discussions', new DiscussionsSearchSource());
|
||||
extend(Search.prototype, 'sourceItems', function (this: Search<SearchAttrs>, items: ItemList<SearchSource>) {
|
||||
items.setContent('discussions', new DiscussionsSearchSource());
|
||||
});
|
||||
|
||||
extendDiscussionState();
|
||||
});
|
||||
|
||||
app.initializers.add(
|
||||
'blomstra-search-early',
|
||||
() => {
|
||||
extendDiscussionState();
|
||||
},
|
||||
999999
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in New Issue