diff --git a/js/src/forum/PaginatedListStates/extendDiscussionState.tsx b/js/src/forum/PaginatedListStates/extendDiscussionState.tsx index b25c9ec..ece53e3 100644 --- a/js/src/forum/PaginatedListStates/extendDiscussionState.tsx +++ b/js/src/forum/PaginatedListStates/extendDiscussionState.tsx @@ -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 = { diff --git a/js/src/forum/SearchSources/DiscussionsSearchSource.tsx b/js/src/forum/SearchSources/DiscussionsSearchSource.tsx index d4439e9..c3aff73 100644 --- a/js/src/forum/SearchSources/DiscussionsSearchSource.tsx +++ b/js/src/forum/SearchSources/DiscussionsSearchSource.tsx @@ -44,7 +44,7 @@ export default class DiscussionsSearchSource implements SearchSource { this.results.set(query, models); } - view(query: string): Mithril.Children { + view(query: string): Array { query = query.toLowerCase(); // Get results from map @@ -54,7 +54,7 @@ export default class DiscussionsSearchSource implements SearchSource { const mostRelevantPost = discussion.mostRelevantPost(); return ( -
  • +
  • {highlight(discussion.title(), query)}
    {!!mostRelevantPost &&
    {highlight(mostRelevantPost.contentPlain(), query, 100)}
    } @@ -63,16 +63,14 @@ export default class DiscussionsSearchSource implements SearchSource { ); }); - return ( - <> -
  • {app.translator.trans('core.forum.search.discussions_heading')}
  • -
  • - - {app.translator.trans('core.forum.search.all_discussions_button', { query })} - -
  • - {results} - - ); + return [ +
  • {app.translator.trans('core.forum.search.discussions_heading')}
  • , +
  • + + {app.translator.trans('core.forum.search.all_discussions_button', { query })} + +
  • , + ...results, + ]; } } diff --git a/js/src/forum/index.ts b/js/src/forum/index.ts index 290b154..e1c83d3 100644 --- a/js/src/forum/index.ts +++ b/js/src/forum/index.ts @@ -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, items: ItemList) { + items.setContent('discussions', new DiscussionsSearchSource()); }); - - extendDiscussionState(); }); + +app.initializers.add( + 'blomstra-search-early', + () => { + extendDiscussionState(); + }, + 999999 +);