fix: override endpoint not used correctly

This commit is contained in:
Ian Morland 2022-11-18 09:29:19 +00:00
parent ed718e1458
commit 23dd403417
3 changed files with 24 additions and 23 deletions

View File

@ -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 = {

View File

@ -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,
];
}
}

View File

@ -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
);