Skip to content

Commit

Permalink
refactor: move layout and createSideNavItems into applicationService …
Browse files Browse the repository at this point in the history
…and use from it
  • Loading branch information
guidomodarelli committed Feb 14, 2025
1 parent 31b6de6 commit ff4a1a3
Show file tree
Hide file tree
Showing 28 changed files with 267 additions and 235 deletions.
7 changes: 3 additions & 4 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,8 @@ module.exports = {
/* -------------------------------------------------------------------------- */
/* @typescript-eslint */
/* -------------------------------------------------------------------------- */
'@typescript-eslint/no-empty-object-type': [
'error',
{ allowInterfaces: 'always' },
],
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-empty-object-type': 'off',
'@typescript-eslint/no-dynamic-delete': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
Expand Down Expand Up @@ -363,6 +361,7 @@ module.exports = {
},
},
],
'react/prop-types': 'off',
},
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
AppNavLinkStatus,
AppUpdater,
} from '../../../../../src/core/public';
import { ApplicationService } from '../../../../wazuh-core/public/services/application/application';
import { DOCKER_ID, DOCKER_TITLE } from './apps/docker/constants';
import { AWS_ID, AWS_TITLE } from './apps/aws/constants';
import {
Expand All @@ -12,8 +13,16 @@ import {
} from './apps/google-cloud/constants';
import { GITHUB_ID, GITHUB_TITLE } from './apps/github/constants';
import { OFFICE365_ID, OFFICE365_TITLE } from './apps/office-365/constants';
import { CloudSecurityNavGroup } from '.';

export function getCloudSecurityApps(
applicationService?: ApplicationService,
updater$?: Subject<AppUpdater>,
) {
const cloudSecurityLayout = applicationService?.createLayout(
CloudSecurityNavGroup,
);

export function getCloudSecurityApps(updater$?: Subject<AppUpdater>) {
return [
{
id: DOCKER_ID,
Expand All @@ -23,7 +32,9 @@ export function getCloudSecurityApps(updater$?: Subject<AppUpdater>) {
mount: async (params: AppMountParameters) => {
const { renderApp } = await import('./apps/docker/application');

return await renderApp(params);
return await renderApp(params, {
Layout: cloudSecurityLayout!(DOCKER_ID),
});
},
},
{
Expand All @@ -34,7 +45,9 @@ export function getCloudSecurityApps(updater$?: Subject<AppUpdater>) {
mount: async (params: AppMountParameters) => {
const { renderApp } = await import('./apps/aws/application');

return await renderApp(params);
return await renderApp(params, {
Layout: cloudSecurityLayout!(AWS_ID),
});
},
},
{
Expand All @@ -45,7 +58,9 @@ export function getCloudSecurityApps(updater$?: Subject<AppUpdater>) {
mount: async (params: AppMountParameters) => {
const { renderApp } = await import('./apps/google-cloud/application');

return await renderApp(params);
return await renderApp(params, {
Layout: cloudSecurityLayout!(GOOGLE_CLOUD_ID),
});
},
},
{
Expand All @@ -56,7 +71,9 @@ export function getCloudSecurityApps(updater$?: Subject<AppUpdater>) {
mount: async (params: AppMountParameters) => {
const { renderApp } = await import('./apps/github/application');

return await renderApp(params);
return await renderApp(params, {
Layout: cloudSecurityLayout!(GITHUB_ID),
});
},
},
{
Expand All @@ -67,7 +84,9 @@ export function getCloudSecurityApps(updater$?: Subject<AppUpdater>) {
mount: async (params: AppMountParameters) => {
const { renderApp } = await import('./apps/office-365/application');

return await renderApp(params);
return await renderApp(params, {
Layout: cloudSecurityLayout!(OFFICE365_ID),
});
},
},
];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
import React from 'react';
import { AppMountParameters } from 'opensearch-dashboards/public';
import ReactDOM from 'react-dom';
import { Layout } from '../../../layout';
import { createSideNavItems } from '../../../side-nav';
import { CLOUD_SECURITY_TITLE } from '../../constants';
import { CloudSecurityNavGroup } from '../..';
import { AppProps } from '../../../../../../wazuh-core/public/services/application/types';
import { AwsApp } from './aws-app';
import { AWS_ID } from './constants';

export const renderApp = async (params: AppMountParameters) => {
const items = createSideNavItems({
group: CloudSecurityNavGroup,
selectedAppId: AWS_ID,
});

export const renderApp = async (
params: AppMountParameters,
{ Layout }: AppProps,
) => {
ReactDOM.render(
<Layout aria-label={CLOUD_SECURITY_TITLE} items={items}>
<Layout>
<AwsApp params={params} />
</Layout>,
params.element,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
import React from 'react';
import { AppMountParameters } from 'opensearch-dashboards/public';
import ReactDOM from 'react-dom';
import { Layout } from '../../../layout';
import { createSideNavItems } from '../../../side-nav';
import { CLOUD_SECURITY_TITLE } from '../../constants';
import { CloudSecurityNavGroup } from '../..';
import { AppProps } from '../../../../../../wazuh-core/public/services/application/types';
import { DockerApp } from './docker-app';
import { DOCKER_ID } from './constants';

export const renderApp = async (params: AppMountParameters) => {
const items = createSideNavItems({
group: CloudSecurityNavGroup,
selectedAppId: DOCKER_ID,
});

export const renderApp = async (
params: AppMountParameters,
{ Layout }: AppProps,
) => {
ReactDOM.render(
<Layout aria-label={CLOUD_SECURITY_TITLE} items={items}>
<Layout>
<DockerApp params={params} />
</Layout>,
params.element,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
import React from 'react';
import { AppMountParameters } from 'opensearch-dashboards/public';
import ReactDOM from 'react-dom';
import { Layout } from '../../../layout';
import { createSideNavItems } from '../../../side-nav';
import { CLOUD_SECURITY_TITLE } from '../../constants';
import { CloudSecurityNavGroup } from '../..';
import { AppProps } from '../../../../../../wazuh-core/public/services/application/types';
import { GithubApp } from './github-app';
import { GITHUB_ID } from './constants';

export const renderApp = async (params: AppMountParameters) => {
const items = createSideNavItems({
group: CloudSecurityNavGroup,
selectedAppId: GITHUB_ID,
});

export const renderApp = async (
params: AppMountParameters,
{ Layout }: AppProps,
) => {
ReactDOM.render(
<Layout aria-label={CLOUD_SECURITY_TITLE} items={items}>
<Layout>
<GithubApp params={params} />
</Layout>,
params.element,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
import React from 'react';
import { AppMountParameters } from 'opensearch-dashboards/public';
import ReactDOM from 'react-dom';
import { Layout } from '../../../layout';
import { createSideNavItems } from '../../../side-nav';
import { CLOUD_SECURITY_TITLE } from '../../constants';
import { CloudSecurityNavGroup } from '../..';
import { AppProps } from '../../../../../../wazuh-core/public/services/application/types';
import { GoogleCloudApp } from './google-cloud-app';
import { GOOGLE_CLOUD_ID } from './constants';

export const renderApp = async (params: AppMountParameters) => {
const items = createSideNavItems({
group: CloudSecurityNavGroup,
selectedAppId: GOOGLE_CLOUD_ID,
});

export const renderApp = async (
params: AppMountParameters,
{ Layout }: AppProps,
) => {
ReactDOM.render(
<Layout aria-label={CLOUD_SECURITY_TITLE} items={items}>
<Layout>
<GoogleCloudApp params={params} />
</Layout>,
params.element,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
import React from 'react';
import { AppMountParameters } from 'opensearch-dashboards/public';
import ReactDOM from 'react-dom';
import { Layout } from '../../../layout';
import { createSideNavItems } from '../../../side-nav';
import { CLOUD_SECURITY_TITLE } from '../../constants';
import { CloudSecurityNavGroup } from '../..';
import { AppProps } from '../../../../../../wazuh-core/public/services/application/types';
import { Office365App } from './office-365-app';
import { OFFICE365_ID } from './constants';

export const renderApp = async (params: AppMountParameters) => {
const items = createSideNavItems({
group: CloudSecurityNavGroup,
selectedAppId: OFFICE365_ID,
});

export const renderApp = async (
params: AppMountParameters,
{ Layout }: AppProps,
) => {
ReactDOM.render(
<Layout aria-label={CLOUD_SECURITY_TITLE} items={items}>
<Layout>
<Office365App params={params} />
</Layout>,
params.element,
Expand Down
8 changes: 6 additions & 2 deletions plugins/wazuh-analysis/public/groups/cloud-security/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
} from '../../../../../src/core/public';
import { CATEGORY } from '../category';
import { Group } from '../../../../wazuh-core/public/services/application/types';
import { ApplicationService } from '../../../../wazuh-core/public/services/application/application';
import { getCloudSecurityApps } from './applications';
import {
CLOUD_SECURITY_DESCRIPTION,
Expand Down Expand Up @@ -51,7 +52,10 @@ export const CloudSecurityNavGroup: Group<typeof CLOUD_SECURITY_ID> = {
}));
},

getApps(updater$?: Subject<AppUpdater>): App[] {
return getCloudSecurityApps(updater$);
getApps(
applicationService: ApplicationService,
updater$: Subject<AppUpdater>,
): App[] {
return getCloudSecurityApps(applicationService, updater$);
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
AppNavLinkStatus,
AppUpdater,
} from '../../../../../src/core/public';
import { ApplicationService } from '../../../../wazuh-core/public/services/application/application';
import {
CONFIGURATION_ASSESSMENT_ID,
CONFIGURATION_ASSESSMENT_TITLE,
Expand All @@ -14,8 +15,16 @@ import {
MALWARE_DETECTION_ID,
MALWARE_DETECTION_TITLE,
} from './apps/malware-detection/constants';
import { EndpointSecurityNavGroup } from '.';

export function getEndpointSecurityApps(
applicationService?: ApplicationService,
updater$?: Subject<AppUpdater>,
): App[] {
const endpointSecurityLayout = applicationService?.createLayout(
EndpointSecurityNavGroup,
);

export function getEndpointSecurityApps(updater$?: Subject<AppUpdater>): App[] {
return [
{
id: CONFIGURATION_ASSESSMENT_ID,
Expand All @@ -27,7 +36,9 @@ export function getEndpointSecurityApps(updater$?: Subject<AppUpdater>): App[] {
'./apps/configuration-assesment/application'
);

return await renderApp(params);
return await renderApp(params, {
Layout: endpointSecurityLayout!(CONFIGURATION_ASSESSMENT_ID),
});
},
},
{
Expand All @@ -40,7 +51,9 @@ export function getEndpointSecurityApps(updater$?: Subject<AppUpdater>): App[] {
'./apps/malware-detection/application'
);

return await renderApp(params);
return await renderApp(params, {
Layout: endpointSecurityLayout!(MALWARE_DETECTION_ID),
});
},
},
{
Expand All @@ -51,7 +64,9 @@ export function getEndpointSecurityApps(updater$?: Subject<AppUpdater>): App[] {
mount: async (params: AppMountParameters) => {
const { renderApp } = await import('./apps/fim/application');

return await renderApp(params);
return await renderApp(params, {
Layout: endpointSecurityLayout!(FIM_ID),
});
},
},
];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
import React from 'react';
import { AppMountParameters } from 'opensearch-dashboards/public';
import ReactDOM from 'react-dom';
import { EndpointSecurityNavGroup } from '../..';
import { Layout } from '../../../layout';
import { createSideNavItems } from '../../../side-nav';
import { ENDPOINT_SECURITY_TITLE } from '../../constants';
import { AppProps } from '../../../../../../wazuh-core/public/services/application/types';
import { ConfigurationAssessmentApp } from './configuration-assesment-app';
import { CONFIGURATION_ASSESSMENT_ID } from './constants';

export const renderApp = async (params: AppMountParameters) => {
const items = createSideNavItems({
group: EndpointSecurityNavGroup,
selectedAppId: CONFIGURATION_ASSESSMENT_ID,
});

export const renderApp = async (
params: AppMountParameters,
{ Layout }: AppProps,
) => {
ReactDOM.render(
<Layout aria-label={ENDPOINT_SECURITY_TITLE} items={items}>
<Layout>
<ConfigurationAssessmentApp params={params} />
</Layout>,
params.element,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
import React from 'react';
import { AppMountParameters } from 'opensearch-dashboards/public';
import ReactDOM from 'react-dom';
import { EndpointSecurityNavGroup } from '../..';
import { Layout } from '../../../layout';
import { createSideNavItems } from '../../../side-nav';
import { ENDPOINT_SECURITY_TITLE } from '../../constants';
import { AppProps } from '../../../../../../wazuh-core/public/services/application/types';
import { FimApp } from './fim-app';
import { FIM_ID } from './constants';

export const renderApp = async (params: AppMountParameters) => {
const items = createSideNavItems({
group: EndpointSecurityNavGroup,
selectedAppId: FIM_ID,
});

export const renderApp = async (
params: AppMountParameters,
{ Layout }: AppProps,
) => {
ReactDOM.render(
<Layout aria-label={ENDPOINT_SECURITY_TITLE} items={items}>
<Layout>
<FimApp params={params} />
</Layout>,
params.element,
Expand Down
Loading

0 comments on commit ff4a1a3

Please sign in to comment.