Skip to content

Commit 4e356a5

Browse files
authored
Merge pull request #5764 from skdud4659/feature/_refactor
refactor: refactor generate routes helper
1 parent 23ae1e8 commit 4e356a5

File tree

15 files changed

+105
-133
lines changed

15 files changed

+105
-133
lines changed

Diff for: apps/web/src/lib/config/global-config/generate-routes.ts renamed to apps/web/src/lib/config/global-config/helpers/generate-routes.ts

+16-7
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,28 @@ import infoRoutes from '@/services/info/routes/routes';
1010
import adminWorkspaceHomeRoutes from '@/services/workspace-home/routes/admin/routes';
1111
import workspaceHomeRoute from '@/services/workspace-home/routes/routes';
1212

13-
export const generateRoutes = (mode: string): RouteConfig[] => {
13+
interface GeneratedFeatureRouteConfig {
14+
routes: RouteConfig[];
15+
adminRoutes: RouteConfig[];
16+
}
17+
18+
export const generateRoutes = (): GeneratedFeatureRouteConfig => {
1419
const globalConfigStore = useGlobalConfigStore();
1520
const schema = globalConfigStore.state.schema;
16-
const baseRoutes = mode === 'admin'
17-
? [adminWorkspaceHomeRoutes, adminAdvancedRoutes, adminInfoRoutes]
18-
: [workspaceHomeRoute, infoRoutes];
21+
const baseRoutes: GeneratedFeatureRouteConfig = {
22+
routes: [workspaceHomeRoute, infoRoutes],
23+
adminRoutes: [adminWorkspaceHomeRoutes, adminAdvancedRoutes, adminInfoRoutes],
24+
};
1925

2026
Object.keys(schema).forEach((serviceName) => {
2127
const configurator = getFeatureConfigurator(serviceName);
2228
if (configurator) {
23-
const route = configurator.getRoutes(mode === 'admin');
24-
if (route && !baseRoutes.some((existingRoute) => existingRoute.path === route.path)) {
25-
baseRoutes.push(route);
29+
const featureRoutes = configurator.getRoutes();
30+
if (featureRoutes?.routes) {
31+
baseRoutes.routes.push(featureRoutes.routes);
32+
}
33+
if (featureRoutes?.adminRoutes) {
34+
baseRoutes.adminRoutes.push(featureRoutes.adminRoutes);
2635
}
2736
}
2837
});

Diff for: apps/web/src/lib/config/global-config/types/type.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,14 @@ export type GlobalServiceConfig = Record<string, { ENABLED: boolean; VERSION: Fe
99
export type FeatureKeyType = typeof FEATURES[keyof typeof FEATURES];
1010

1111
export interface FeatureMenuConfig {
12+
version?: FeatureVersion;
1213
menu: Menu;
1314
adminMenu?: Menu|null;
1415
uiAffects?: Record<string, boolean>;
16+
}
17+
export interface FeatureRouteConfig {
18+
routes: RouteConfig|null;
19+
adminRoutes: RouteConfig|null;
1520
version?: FeatureVersion;
1621
}
1722

@@ -31,7 +36,7 @@ export type ApiClientsSchemaType = {
3136
};
3237

3338
export interface FeatureConfiguratorType {
34-
getRoutes: (isAdmin?: boolean) => RouteConfig|null;
39+
getRoutes: () => FeatureRouteConfig;
3540
getMenu: (config?: GlobalServiceConfig) => FeatureMenuConfig;
3641
initialize: (version: FeatureVersion) => void;
3742
uiAffect: FeatureUiAffect[];

Diff for: apps/web/src/lib/site-initializer/index.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { useUserStore } from '@/store/user/user-store';
1717

1818
import config from '@/lib/config';
1919
import featureSchemaManager from '@/lib/config/global-config/feature-schema-manager';
20-
import { generateRoutes } from '@/lib/config/global-config/generate-routes';
20+
import { generateRoutes } from '@/lib/config/global-config/helpers/generate-routes';
2121
import { initRequestIdleCallback } from '@/lib/request-idle-callback-polyfill';
2222
import { initAmcharts5 } from '@/lib/site-initializer/amcharts5';
2323
import { initGtag, initGtm } from '@/lib/site-initializer/analysis';
@@ -53,14 +53,13 @@ const initRouter = (domainId?: string) => {
5353
(route) => route.name === ROOT_ROUTE.WORKSPACE._NAME,
5454
)?.children;
5555

56+
const featureRoutes = generateRoutes();
5657
if (adminChildren) {
57-
const dynamicAdminRoutes = generateRoutes('admin');
58-
adminChildren.push(...dynamicAdminRoutes);
58+
adminChildren.push(...featureRoutes.adminRoutes);
5959
}
6060

6161
if (workspaceChildren) {
62-
const dynamicWorkspaceRoutes = generateRoutes('workspace');
63-
workspaceChildren.push(...dynamicWorkspaceRoutes);
62+
workspaceChildren.push(...featureRoutes.routes);
6463
}
6564

6665
if (!domainId) {

Diff for: apps/web/src/router/alert-manager-v1-admin-routes.ts

-22
This file was deleted.

Diff for: apps/web/src/router/alert-manager-v1-workspace-routes.ts

-24
This file was deleted.

Diff for: apps/web/src/router/type.ts

+10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
11
import type { ROUTE_SCOPE } from '@/router/constant';
22

33
export type RouteScopeType = keyof typeof ROUTE_SCOPE;
4+
5+
export interface RouteParams {
6+
menuId: string;
7+
name?: string;
8+
route?: any;
9+
params?: Record<string, string>;
10+
query?: Record<string, string | string[]>;
11+
}
12+
13+

Diff for: apps/web/src/router/workspace-routes.ts

-25
This file was deleted.

Diff for: apps/web/src/services/alert-manager/configurator.ts

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { RouteConfig } from 'vue-router';
2-
3-
import type { FeatureConfiguratorType, FeatureMenuConfig, FeatureUiAffect } from '@/lib/config/global-config/types/type';
1+
import type {
2+
FeatureConfiguratorType, FeatureMenuConfig, FeatureRouteConfig, FeatureUiAffect,
3+
} from '@/lib/config/global-config/types/type';
44
import type { Menu } from '@/lib/menu/config';
55
import { MENU_ID } from '@/lib/menu/config';
66

@@ -31,10 +31,12 @@ class AlertManagerConfigurator implements FeatureConfiguratorType {
3131
this.version = version;
3232
}
3333

34-
getRoutes(isAdmin?: boolean): RouteConfig|null {
35-
if (isAdmin) return null;
36-
37-
return this.version === 'V1' ? alertManagerRouteV1 : alertManagerRoute;
34+
getRoutes(): FeatureRouteConfig {
35+
return {
36+
routes: this.version === 'V1' ? alertManagerRouteV1 : alertManagerRoute,
37+
adminRoutes: null,
38+
version: this.version,
39+
};
3840
}
3941

4042
getMenu(): FeatureMenuConfig {

Diff for: apps/web/src/services/asset-inventory/configurator.ts

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { RouteConfig } from 'vue-router';
2-
3-
import type { FeatureConfiguratorType, FeatureMenuConfig, FeatureUiAffect } from '@/lib/config/global-config/types/type';
1+
import type {
2+
FeatureConfiguratorType, FeatureMenuConfig, FeatureRouteConfig, FeatureUiAffect,
3+
} from '@/lib/config/global-config/types/type';
44
import type { Menu } from '@/lib/menu/config';
55
import { MENU_ID } from '@/lib/menu/config';
66

@@ -26,9 +26,12 @@ class AssetInventoryConfigurator implements FeatureConfiguratorType {
2626
this.version = version;
2727
}
2828

29-
// eslint-disable-next-line class-methods-use-this
30-
getRoutes(isAdmin?: boolean): RouteConfig | null {
31-
return isAdmin ? adminAssetInventoryRoutes : assetInventoryRoute;
29+
getRoutes(): FeatureRouteConfig {
30+
return {
31+
routes: assetInventoryRoute,
32+
adminRoutes: adminAssetInventoryRoutes,
33+
version: this.version,
34+
};
3235
}
3336

3437
getMenu(): FeatureMenuConfig {

Diff for: apps/web/src/services/cost-explorer/configurator.ts

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { RouteConfig } from 'vue-router';
2-
3-
import type { FeatureConfiguratorType, FeatureMenuConfig, FeatureUiAffect } from '@/lib/config/global-config/types/type';
1+
import type {
2+
FeatureConfiguratorType, FeatureMenuConfig, FeatureRouteConfig, FeatureUiAffect,
3+
} from '@/lib/config/global-config/types/type';
44
import type { Menu } from '@/lib/menu/config';
55
import { MENU_ID } from '@/lib/menu/config';
66

@@ -26,9 +26,12 @@ class CostExplorerConfigurator implements FeatureConfiguratorType {
2626
this.version = version;
2727
}
2828

29-
// eslint-disable-next-line class-methods-use-this
30-
getRoutes(isAdmin?: boolean): RouteConfig | null {
31-
return isAdmin ? adminCostExplorerRoutes : costExplorerRoutes;
29+
getRoutes(): FeatureRouteConfig {
30+
return {
31+
routes: costExplorerRoutes,
32+
adminRoutes: adminCostExplorerRoutes,
33+
version: this.version,
34+
};
3235
}
3336

3437
getMenu(): FeatureMenuConfig {

Diff for: apps/web/src/services/dashboards/configurator.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
import type { RouteConfig } from 'vue-router';
2-
31
import type {
4-
FeatureConfiguratorType, FeatureMenuConfig, FeatureUiAffect, FeatureVersion,
2+
FeatureConfiguratorType, FeatureMenuConfig, FeatureRouteConfig, FeatureUiAffect, FeatureVersion,
53
} from '@/lib/config/global-config/types/type';
64
import type { Menu } from '@/lib/menu/config';
75
import { MENU_ID } from '@/lib/menu/config';
@@ -18,9 +16,12 @@ class DashboardConfigurator implements FeatureConfiguratorType {
1816
this.version = version;
1917
}
2018

21-
// eslint-disable-next-line class-methods-use-this
22-
getRoutes(isAdmin?: boolean): RouteConfig | null {
23-
return isAdmin ? adminDashboardsRoute : dashboardsRoute;
19+
getRoutes(): FeatureRouteConfig {
20+
return {
21+
routes: dashboardsRoute,
22+
adminRoutes: adminDashboardsRoute,
23+
version: this.version,
24+
};
2425
}
2526

2627
getMenu(): FeatureMenuConfig {

Diff for: apps/web/src/services/iam/configurator.ts

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import type { RouteConfig } from 'vue-router';
2-
31
import type {
4-
FeatureConfiguratorType, FeatureMenuConfig, FeatureUiAffect, GlobalServiceConfig,
2+
FeatureConfiguratorType, FeatureMenuConfig, FeatureRouteConfig, FeatureUiAffect,
3+
GlobalServiceConfig,
54
} from '@/lib/config/global-config/types/type';
65
import type { Menu } from '@/lib/menu/config';
76
import { MENU_ID } from '@/lib/menu/config';
@@ -18,9 +17,12 @@ class IamConfigurator implements FeatureConfiguratorType {
1817
this.version = version;
1918
}
2019

21-
// eslint-disable-next-line class-methods-use-this
22-
getRoutes(isAdmin?: boolean): RouteConfig | null {
23-
return isAdmin ? adminIamRoutes : iamRoutes;
20+
getRoutes(): FeatureRouteConfig {
21+
return {
22+
routes: iamRoutes,
23+
adminRoutes: adminIamRoutes,
24+
version: this.version,
25+
};
2426
}
2527

2628
getMenu(config?: GlobalServiceConfig): FeatureMenuConfig {

Diff for: apps/web/src/services/ops-flow/configurator.ts

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { RouteConfig } from 'vue-router';
2-
3-
import type { FeatureConfiguratorType, FeatureMenuConfig, FeatureUiAffect } from '@/lib/config/global-config/types/type';
1+
import type {
2+
FeatureConfiguratorType, FeatureMenuConfig, FeatureRouteConfig, FeatureUiAffect,
3+
} from '@/lib/config/global-config/types/type';
44
import type { Menu } from '@/lib/menu/config';
55
import { MENU_ID } from '@/lib/menu/config';
66

@@ -16,9 +16,12 @@ class OpsFlowConfigurator implements FeatureConfiguratorType {
1616
this.version = version;
1717
}
1818

19-
// eslint-disable-next-line class-methods-use-this
20-
getRoutes(isAdmin?: boolean): RouteConfig {
21-
return isAdmin ? adminOpsFlowRoutes : opsFlowRoutes;
19+
getRoutes(): FeatureRouteConfig {
20+
return {
21+
routes: opsFlowRoutes,
22+
adminRoutes: adminOpsFlowRoutes,
23+
version: this.version,
24+
};
2225
}
2326

2427
getMenu(): FeatureMenuConfig {

Diff for: apps/web/src/services/project/configurator.ts

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { RouteConfig } from 'vue-router';
2-
3-
import type { FeatureConfiguratorType, FeatureMenuConfig, FeatureUiAffect } from '@/lib/config/global-config/types/type';
1+
import type {
2+
FeatureConfiguratorType, FeatureMenuConfig, FeatureRouteConfig, FeatureUiAffect,
3+
} from '@/lib/config/global-config/types/type';
44
import { MENU_ID } from '@/lib/menu/config';
55

66
import projectRoutesV1 from '@/services/project/v1/routes/routes';
@@ -25,9 +25,12 @@ class ProjectConfigurator implements FeatureConfiguratorType {
2525
this.version = version;
2626
}
2727

28-
getRoutes(isAdmin?: boolean): RouteConfig|null {
29-
if (isAdmin) return null;
30-
return this.version === 'V1' ? projectRoutesV1 : projectRoutes;
28+
getRoutes(): FeatureRouteConfig {
29+
return {
30+
routes: this.version === 'V1' ? projectRoutesV1 : projectRoutes,
31+
adminRoutes: null,
32+
version: this.version,
33+
};
3134
}
3235

3336
getMenu(): FeatureMenuConfig {

Diff for: apps/web/src/services/service-account/configurator.ts

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { RouteConfig } from 'vue-router';
2-
3-
import type { FeatureConfiguratorType, FeatureMenuConfig, FeatureUiAffect } from '@/lib/config/global-config/types/type';
1+
import type {
2+
FeatureConfiguratorType, FeatureMenuConfig, FeatureRouteConfig, FeatureUiAffect,
3+
} from '@/lib/config/global-config/types/type';
44
import { MENU_ID } from '@/lib/menu/config';
55

66
import adminServiceAccountRoute from '@/services/service-account/routes/admin/routes';
@@ -15,9 +15,12 @@ class ServiceAccountConfigurator implements FeatureConfiguratorType {
1515
this.version = version;
1616
}
1717

18-
// eslint-disable-next-line class-methods-use-this
19-
getRoutes(isAdmin?: boolean): RouteConfig|null {
20-
return isAdmin ? adminServiceAccountRoute : serviceAccountRoute;
18+
getRoutes(): FeatureRouteConfig {
19+
return {
20+
routes: serviceAccountRoute,
21+
adminRoutes: adminServiceAccountRoute,
22+
version: this.version,
23+
};
2124
}
2225

2326
getMenu(): FeatureMenuConfig {

0 commit comments

Comments
 (0)