1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

[WIP] adding params object to page registration

Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
Jim Ehrismann 2020-11-25 18:28:25 -05:00
parent 1547142125
commit d78ccde5eb

View File

@ -16,6 +16,8 @@ export interface PageRegistration {
* When not provided, first registered page without "id" would be used for page-menus without target.pageId for same extension
*/
id?: string;
params?: object;
/**
* Strict route matching to provided page-id, read also: https://reactrouter.com/web/api/NavLink/exact-bool
* In case when more than one page registered at same extension "pageId" is required to identify different pages,
@ -34,6 +36,7 @@ export interface PageRegistration {
export interface RegisteredPage extends PageRegistration {
extensionId: string; // required for compiling registered page to url with page-menu-target to compare
routePath: string; // full route-path to registered extension page
params?: object; // default values of page parameters, empty value could mean optional??
}
export interface PageComponents {
@ -57,11 +60,18 @@ export class PageRegistry extends BaseRegistry<RegisteredPage> {
const itemArray = recitfy(items);
let registeredPages: RegisteredPage[] = [];
try {
registeredPages = itemArray.map(page => ({
...page,
extensionId: ext.name,
routePath: getExtensionPageUrl({ extensionId: ext.name, pageId: page.id }),
}));
registeredPages = itemArray.map(page => {
let idPath: string = page.id;
if (page.params) {
// build the route path with :params
idPath = [idPath, ...Object.keys(page.params)].join("/:");
}
return {
...page,
extensionId: ext.name,
routePath: getExtensionPageUrl({ extensionId: ext.name, pageId: idPath }),
};
});
} catch (err) {
logger.error(`[EXTENSION]: page-registration failed`, {
items,