mirror of
https://github.com/flarum/core.git
synced 2025-08-08 09:26:34 +02:00
create route resolver for /:filter (route overrides any others such as /tags, etc)
This commit is contained in:
committed by
Franz Liedke
parent
7d5bebb70a
commit
b0891c42da
@@ -9,6 +9,7 @@ import alertEmailConfirmation from './utils/alertEmailConfirmation';
|
||||
import UserControls from './utils/UserControls';
|
||||
import Pane from './utils/Pane';
|
||||
import ComposerState from './states/ComposerState';
|
||||
import IndexFilterRouteResolver from './utils/IndexFilterRouteResolver';
|
||||
import DiscussionListState from './states/DiscussionListState';
|
||||
import GlobalSearchState from './states/GlobalSearchState';
|
||||
import NotificationListState from './states/NotificationListState';
|
||||
@@ -81,6 +82,7 @@ export default Object.assign(compat, {
|
||||
'utils/alertEmailConfirmation': alertEmailConfirmation,
|
||||
'utils/UserControls': UserControls,
|
||||
'utils/Pane': Pane,
|
||||
'utils/IndexFilterRouteResolver': IndexFilterRouteResolver,
|
||||
'states/ComposerState': ComposerState,
|
||||
'states/DiscussionListState': DiscussionListState,
|
||||
'states/GlobalSearchState': GlobalSearchState,
|
||||
|
@@ -4,15 +4,7 @@ import PostsUserPage from './components/PostsUserPage';
|
||||
import DiscussionsUserPage from './components/DiscussionsUserPage';
|
||||
import SettingsPage from './components/SettingsPage';
|
||||
import NotificationsPage from './components/NotificationsPage';
|
||||
|
||||
const match = (component) => ({
|
||||
onmatch: () => {
|
||||
component.onroutematch();
|
||||
|
||||
return component;
|
||||
},
|
||||
render: (vnode) => vnode,
|
||||
});
|
||||
import IndexFilterRouteResolver from './utils/IndexFilterRouteResolver';
|
||||
|
||||
/**
|
||||
* The `routes` initializer defines the forum app's routes.
|
||||
@@ -33,7 +25,7 @@ export default function (app) {
|
||||
settings: { path: '/settings', component: SettingsPage },
|
||||
notifications: { path: '/notifications', component: NotificationsPage },
|
||||
|
||||
'index.filter': { path: '/:filter', component: match(IndexPage) },
|
||||
'index.filter': { path: '/:filter', component: IndexFilterRouteResolver },
|
||||
};
|
||||
|
||||
/**
|
||||
|
17
js/src/forum/utils/IndexFilterRouteResolver.js
Normal file
17
js/src/forum/utils/IndexFilterRouteResolver.js
Normal file
@@ -0,0 +1,17 @@
|
||||
import IndexPage from '../components/IndexPage';
|
||||
|
||||
export default {
|
||||
isIndexPage: true,
|
||||
|
||||
onmatch: (params, path) => {
|
||||
const route = Object.values(app.routes).find((o) => o.path === path);
|
||||
|
||||
if (route && route.component && !route.component.isIndexPage) {
|
||||
return route.component;
|
||||
}
|
||||
|
||||
return IndexPage;
|
||||
},
|
||||
|
||||
render: (vnode) => vnode,
|
||||
};
|
Reference in New Issue
Block a user