1
0
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:
David Sevilla Martin
2020-08-12 20:45:51 -04:00
committed by Franz Liedke
parent 7d5bebb70a
commit b0891c42da
3 changed files with 21 additions and 10 deletions

View File

@@ -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,

View File

@@ -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 },
};
/**

View 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,
};