feat: override discussion search page
This commit is contained in:
parent
383dee43a0
commit
e3f74b5f07
|
|
@ -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;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue