feat: override discussion search page

This commit is contained in:
David Wheatley 2021-10-21 17:58:37 +01:00
parent 383dee43a0
commit e3f74b5f07
No known key found for this signature in database
GPG Key ID: DCC0FCE349280DFF
2 changed files with 33 additions and 0 deletions

View File

@ -0,0 +1,30 @@
import app from 'flarum/forum/app';
import { override } from 'flarum/common/extend';
import DiscussionListState from 'flarum/forum/states/DiscussionListState';
export default function extendDiscussionState() {
override(DiscussionListState.prototype, 'loadPage', async function (this: DiscussionListState, original, page: number = 1) {
const params = this.requestParams();
params.page = {
offset: this.pageSize * (page - 1),
...params.page,
};
if (Array.isArray(params.include)) {
params.include = params.include.join(',');
}
// Construct API search URI
const url = `${app.forum.attribute('apiUrl')}/blomstra/search/${this.type}`;
// Make API GET request
const results = await app.request({ params, url, method: 'GET' });
// Parse API response into models and push to store
const models = app.store.pushPayload(results);
return models;
});
}

View File

@ -6,6 +6,7 @@ import { extend } from 'flarum/common/extend';
import ItemList from 'flarum/common/utils/ItemList'; import ItemList from 'flarum/common/utils/ItemList';
import DiscussionsSearchSource from './SearchSources/DiscussionsSearchSource'; import DiscussionsSearchSource from './SearchSources/DiscussionsSearchSource';
import extendDiscussionState from './PaginatedListStates/extendDiscussionState';
app.initializers.add('blomstra-search', () => { app.initializers.add('blomstra-search', () => {
extend(Search.prototype, 'sourceItems', function (this: Search, items: ItemList) { extend(Search.prototype, 'sourceItems', function (this: Search, items: ItemList) {
@ -16,4 +17,6 @@ app.initializers.add('blomstra-search', () => {
// console.log(items); // console.log(items);
}); });
extendDiscussionState();
}); });