diff --git a/js/src/common/Store.js b/js/src/common/Store.js index 0805b8202..42ee1433f 100644 --- a/js/src/common/Store.js +++ b/js/src/common/Store.js @@ -83,7 +83,7 @@ export default class Store { */ find(type, id, query = {}, options = {}) { let params = query; - let url = app.forum.attribute('apiUrl') + '/' + type; + let url = app.forum.attribute('apiUrl') + (query.search ? '/search/' : '/') + type; if (id instanceof Array) { url += '?filter[id]=' + id.join(','); diff --git a/js/src/forum/components/DiscussionsSearchSource.js b/js/src/forum/components/DiscussionsSearchSource.js index 39d5a4307..9d2302bdb 100644 --- a/js/src/forum/components/DiscussionsSearchSource.js +++ b/js/src/forum/components/DiscussionsSearchSource.js @@ -24,7 +24,7 @@ export default class DiscussionsSearchSource { include: 'mostRelevantPost', }; - return app.store.find('discussions', params).then((results) => (this.results[query] = results)); + return app.store.find('discussions', params, { search: query }).then((results) => (this.results[query] = results)); } view(query) { diff --git a/js/src/forum/components/UsersSearchSource.js b/js/src/forum/components/UsersSearchSource.js index de0a50635..a34d59e19 100644 --- a/js/src/forum/components/UsersSearchSource.js +++ b/js/src/forum/components/UsersSearchSource.js @@ -16,10 +16,14 @@ export default class UsersSearchResults { search(query) { return app.store - .find('users', { - filter: { q: query }, - page: { limit: 5 }, - }) + .find( + 'users', + { + filter: { q: query }, + page: { limit: 5 }, + }, + { search: query } + ) .then((results) => { this.results[query] = results; m.redraw(); diff --git a/js/src/forum/states/DiscussionListState.js b/js/src/forum/states/DiscussionListState.js index 57f4396a8..5c5f71cff 100644 --- a/js/src/forum/states/DiscussionListState.js +++ b/js/src/forum/states/DiscussionListState.js @@ -119,7 +119,7 @@ export default class DiscussionListState { params.page = { offset }; params.include = params.include.join(','); - return this.app.store.find('discussions', params); + return this.app.store.find('discussions', params, { search: params.filter.q }); } /** diff --git a/src/Forum/Content/Index.php b/src/Forum/Content/Index.php index 2f0d506e0..100125ef9 100644 --- a/src/Forum/Content/Index.php +++ b/src/Forum/Content/Index.php @@ -11,6 +11,7 @@ namespace Flarum\Forum\Content; use Flarum\Api\Client; use Flarum\Api\Controller\ListDiscussionsController; +use Flarum\Api\Controller\SearchDiscussionsController; use Flarum\Frontend\Document; use Flarum\Http\UrlGenerator; use Flarum\Settings\SettingsRepositoryInterface; @@ -114,6 +115,6 @@ class Index */ private function getApiDocument(User $actor, array $params) { - return json_decode($this->api->send(ListDiscussionsController::class, $actor, $params)->getBody()); + return json_decode($this->api->send(($params['filter']['q'] ? SearchDiscussionsController::class : ListDiscussionsController::class), $actor, $params)->getBody()); } }