mirror of
https://github.com/flarum/core.git
synced 2025-08-09 01:46:35 +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 UserControls from './utils/UserControls';
|
||||||
import Pane from './utils/Pane';
|
import Pane from './utils/Pane';
|
||||||
import ComposerState from './states/ComposerState';
|
import ComposerState from './states/ComposerState';
|
||||||
|
import IndexFilterRouteResolver from './utils/IndexFilterRouteResolver';
|
||||||
import DiscussionListState from './states/DiscussionListState';
|
import DiscussionListState from './states/DiscussionListState';
|
||||||
import GlobalSearchState from './states/GlobalSearchState';
|
import GlobalSearchState from './states/GlobalSearchState';
|
||||||
import NotificationListState from './states/NotificationListState';
|
import NotificationListState from './states/NotificationListState';
|
||||||
@@ -81,6 +82,7 @@ export default Object.assign(compat, {
|
|||||||
'utils/alertEmailConfirmation': alertEmailConfirmation,
|
'utils/alertEmailConfirmation': alertEmailConfirmation,
|
||||||
'utils/UserControls': UserControls,
|
'utils/UserControls': UserControls,
|
||||||
'utils/Pane': Pane,
|
'utils/Pane': Pane,
|
||||||
|
'utils/IndexFilterRouteResolver': IndexFilterRouteResolver,
|
||||||
'states/ComposerState': ComposerState,
|
'states/ComposerState': ComposerState,
|
||||||
'states/DiscussionListState': DiscussionListState,
|
'states/DiscussionListState': DiscussionListState,
|
||||||
'states/GlobalSearchState': GlobalSearchState,
|
'states/GlobalSearchState': GlobalSearchState,
|
||||||
|
@@ -4,15 +4,7 @@ import PostsUserPage from './components/PostsUserPage';
|
|||||||
import DiscussionsUserPage from './components/DiscussionsUserPage';
|
import DiscussionsUserPage from './components/DiscussionsUserPage';
|
||||||
import SettingsPage from './components/SettingsPage';
|
import SettingsPage from './components/SettingsPage';
|
||||||
import NotificationsPage from './components/NotificationsPage';
|
import NotificationsPage from './components/NotificationsPage';
|
||||||
|
import IndexFilterRouteResolver from './utils/IndexFilterRouteResolver';
|
||||||
const match = (component) => ({
|
|
||||||
onmatch: () => {
|
|
||||||
component.onroutematch();
|
|
||||||
|
|
||||||
return component;
|
|
||||||
},
|
|
||||||
render: (vnode) => vnode,
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The `routes` initializer defines the forum app's routes.
|
* The `routes` initializer defines the forum app's routes.
|
||||||
@@ -33,7 +25,7 @@ export default function (app) {
|
|||||||
settings: { path: '/settings', component: SettingsPage },
|
settings: { path: '/settings', component: SettingsPage },
|
||||||
notifications: { path: '/notifications', component: NotificationsPage },
|
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