Skip to content

Commit 5cc03ad

Browse files
chore: refactor for esier extensibility
1 parent ba16f50 commit 5cc03ad

35 files changed

+108
-98
lines changed

src/renderer/components/CCTray/index.test.tsx renamed to src/extensions/cctray/component/index.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import React from 'react';
55
import { render, fireEvent, waitFor, screen } from '@testing-library/react';
66
import '@testing-library/jest-dom';
7-
import { CCTray } from './index';
7+
import { CCTray } from './';
88
import { faker } from '@faker-js/faker';
99

1010
jest.mock('@mui/material/TextField', () => ({

src/main/observers/CCTray.test.ts renamed to src/extensions/cctray/observer/index.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { CCTray } from './CCTray';
1+
import { CCTray } from './';
22
import { faker } from '@faker-js/faker';
3-
import { Status } from '../../types/Status';
4-
import { CCTrayConfiguration } from '../../types/CCTrayConfiguration';
3+
import { Status } from '../../../types/Status';
4+
import { CCTrayConfiguration } from '../../../types/CCTrayConfiguration';
55

66
const fetchtMock = jest.fn();
77
jest.mock('electron-fetch', () => {

src/main/observers/CCTray.ts renamed to src/extensions/cctray/observer/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { State } from '../../types/State';
2-
import { Observer } from '../../types/Observer';
3-
import { CCTrayConfiguration } from '../../types/CCTrayConfiguration';
4-
import { Status } from '../../types/Status';
1+
import { State } from '../../../types/State';
2+
import { Observer } from '../../../types/Observer';
3+
import { CCTrayConfiguration } from '../../../types/CCTrayConfiguration';
4+
import { Status } from '../../../types/Status';
55
import { XMLParser } from 'fast-xml-parser';
66
import fetch from 'electron-fetch';
77

src/renderer/components/DatadogMonitor/index.test.tsx renamed to src/extensions/datadog/component/index.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import React from 'react';
55
import { render, fireEvent, waitFor, screen } from '@testing-library/react';
66
import '@testing-library/jest-dom';
7-
import { DatadogMonitor } from './';
7+
import { DatadogMonitor } from '.';
88
import { faker } from '@faker-js/faker';
99

1010
jest.mock('@mui/material/TextField', () => ({

src/main/observers/DatadogMonitor.test.ts renamed to src/extensions/datadog/observer/index.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { DatadogMonitor } from './DatadogMonitor';
1+
import { DatadogMonitor } from '.';
22
import { faker } from '@faker-js/faker';
3-
import { Status } from '../../types/Status';
4-
import { DetadogMonitorConfiguration } from '../../types/DetadogMonitorConfiguration';
3+
import { Status } from '../../../types/Status';
4+
import { DetadogMonitorConfiguration } from '../../../types/DetadogMonitorConfiguration';
55
import { v1 } from '@datadog/datadog-api-client';
66
import { ServerConfiguration } from '@datadog/datadog-api-client/dist/packages/datadog-api-client-common';
77

src/main/observers/DatadogMonitor.ts renamed to src/extensions/datadog/observer/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { State } from '../../types/State';
2-
import { Observer } from '../../types/Observer';
3-
import { DetadogMonitorConfiguration } from '../../types/DetadogMonitorConfiguration';
1+
import { State } from '../../../types/State';
2+
import { Observer } from '../../../types/Observer';
3+
import { DetadogMonitorConfiguration } from '../../../types/DetadogMonitorConfiguration';
44
import { client, v1 } from '@datadog/datadog-api-client';
5-
import { Status } from '../../types/Status';
5+
import { Status } from '../../../types/Status';
66
import { ServerConfiguration } from '@datadog/datadog-api-client/dist/packages/datadog-api-client-common';
77
import {
88
OK,

src/main/observers/GithubAction.test.ts renamed to src/extensions/github/observer/index.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { GithubActionConfiguration } from '../../types/GithubActionConfiguration';
2-
import { GithubAction } from './GithubAction';
1+
import { GithubActionConfiguration } from '../../../types/GithubActionConfiguration';
2+
import { GithubAction } from '.';
33
import { faker } from '@faker-js/faker';
4-
import { Status } from '../../types/Status';
4+
import { Status } from '../../../types/Status';
55

66
const requestMock = jest.fn();
77

src/main/observers/GithubAction.ts renamed to src/extensions/github/observer/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Octokit } from 'octokit';
2-
import { Observer } from '../../types/Observer';
3-
import { State } from '../../types/State';
4-
import { GithubActionConfiguration } from '../../types/GithubActionConfiguration';
5-
import { Status } from '../../types/Status';
2+
import { Observer } from '../../../types/Observer';
3+
import { State } from '../../../types/State';
4+
import { GithubActionConfiguration } from '../../../types/GithubActionConfiguration';
5+
import { Status } from '../../../types/Status';
66

77
export class GithubAction implements Observer {
88
private octokit: Octokit;

src/main/observers/grafana/index.test.ts renamed to src/extensions/grafana/observer/index.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { faker } from '@faker-js/faker';
22
import { Status } from '../../../types/Status';
33
import { GrafanaConfiguration } from '../../../types/GrafanaConfiguration';
4-
import { Grafana } from './index';
4+
import { Grafana } from './';
55

66
const fetchtMock = jest.fn();
77
jest.mock('electron-fetch', () => {

src/main/observers/NewRelic.test.ts renamed to src/extensions/newRelic/observer/index.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { faker } from '@faker-js/faker';
2-
import { Status } from '../../types/Status';
3-
import { NewRelicConfiguration } from '../../types/NewRelicConfiguration';
4-
import { NewRelic } from './NewRelic';
2+
import { Status } from '../../../types/Status';
3+
import { NewRelicConfiguration } from '../../../types/NewRelicConfiguration';
4+
import { NewRelic } from '.';
55

66
const fetchtMock = jest.fn();
77
jest.mock('electron-fetch', () => {

src/main/observers/NewRelic.ts renamed to src/extensions/newRelic/observer/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { State } from '../../types/State';
2-
import { Observer } from '../../types/Observer';
3-
import { NewRelicConfiguration } from '../../types/NewRelicConfiguration';
4-
import { Status } from '../../types/Status';
1+
import { State } from '../../../types/State';
2+
import { Observer } from '../../../types/Observer';
3+
import { NewRelicConfiguration } from '../../../types/NewRelicConfiguration';
4+
import { Status } from '../../../types/Status';
55
import fetch from 'electron-fetch';
66

77
export class NewRelic implements Observer {

src/extensions/observerBuiderMap.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { MapType } from '../types/MapType';
2+
import { Observer } from '../types/Observer';
3+
import { Sentry } from './sentry/observer';
4+
import { NewRelic } from './newRelic/observer';
5+
import { Grafana } from './grafana/observer';
6+
import { GithubAction } from './github/observer';
7+
import { CCTray } from './cctray/observer';
8+
import { DatadogMonitor } from './datadog/observer';
9+
10+
export const ObserversBuildersMap: MapType<(config: any) => Observer> = {
11+
githubAction: (configuration: any) => new GithubAction(configuration as any),
12+
ccTray: (configuration: any) => new CCTray(configuration as any),
13+
datadogMonitor: (configuration: any) => new DatadogMonitor(configuration as any),
14+
sentry: (configuration: any) => new Sentry(configuration as any),
15+
newRelic: (configuration: any) => new NewRelic(configuration as any),
16+
grafana: (configuration: any) => new Grafana(configuration as any),
17+
};
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,24 @@ import { render, fireEvent, screen } from '@testing-library/react';
66
import '@testing-library/jest-dom';
77
import { observersComponentBuilderMap } from './observersComponentBuilderMap';
88
import { faker } from '@faker-js/faker';
9-
import { GithubAction } from '../../GithubAction';
109

11-
jest.mock('../../GithubAction', () => ({
10+
jest.mock('./github/component', () => ({
1211
__esModule: true,
1312
GithubAction: (props: any) => <input data-testid={`githubAction`} {...props} />,
1413
}));
15-
jest.mock('../../CCTray', () => ({
14+
jest.mock('./cctray/component', () => ({
1615
__esModule: true,
1716
CCTray: (props: any) => <input data-testid={`ccTray`} {...props} />,
1817
}));
19-
jest.mock('../../DatadogMonitor', () => ({
18+
jest.mock('./datadog/component', () => ({
2019
__esModule: true,
2120
DatadogMonitor: (props: any) => <input data-testid={`datadogMonitor`} {...props} />,
2221
}));
23-
jest.mock('../../Sentry', () => ({
22+
jest.mock('./sentry/component', () => ({
2423
__esModule: true,
2524
Sentry: (props: any) => <input data-testid={`sentry`} {...props} />,
2625
}));
27-
jest.mock('../../NewRelic', () => ({
26+
jest.mock('./newRelic/component', () => ({
2827
__esModule: true,
2928
NewRelic: (props: any) => <input data-testid={`newRelic`} {...props} />,
3029
}));
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import React from 'react';
2-
import { MapType } from '../../../../types/MapType';
3-
import { GithubAction } from '../../GithubAction';
4-
import { CCTray } from '../../CCTray';
5-
import { DatadogMonitor } from '../../DatadogMonitor';
6-
import { Sentry } from '../../Sentry';
7-
import { NewRelic } from '../../NewRelic';
8-
import { Grafana } from '../../Grafana';
2+
import { MapType } from '../types/MapType';
3+
import { GithubAction } from './github/component';
4+
import { CCTray } from './cctray/component';
5+
import { DatadogMonitor } from './datadog/component';
6+
import { Sentry } from './sentry/component';
7+
import { NewRelic } from './newRelic/component';
8+
import { Grafana } from './grafana/component';
99

1010
export const observersComponentBuilderMap: MapType<
1111
(observable: any, index: number, updateFieldWithValue: any, translate: any) => JSX.Element

src/extensions/observersList.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { MapType } from '../types/MapType';
2+
3+
export const observersList: MapType<any> = [
4+
{ value: 'githubAction', label: 'Github Action' },
5+
{ value: 'ccTray', label: 'CCTray' },
6+
{ value: 'datadogMonitor', label: 'Datadog Monitor' },
7+
{ value: 'sentry', label: 'Sentry' },
8+
{ value: 'newRelic', label: 'New Relic' },
9+
{ value: 'grafana', label: 'Grafana' },
10+
];

src/renderer/components/Observers/helpers/observersTitleBuilderMap.ts renamed to src/extensions/observersTitleBuilderMap.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { MapType } from '../../../../types/MapType';
1+
import { MapType } from '../types/MapType';
22

33
export const observersTitleBuilderMap: MapType<(observable: any) => string> = {
44
githubAction: (observable: any) =>

src/main/observers/Sentry.test.ts renamed to src/extensions/sentry/observer/index.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { Sentry } from './Sentry';
1+
import { Sentry } from '.';
22
import { faker } from '@faker-js/faker';
3-
import { Status } from '../../types/Status';
4-
import { SentryConfiguration } from '../../types/SentryConfiguration';
3+
import { Status } from '../../../types/Status';
4+
import { SentryConfiguration } from '../../../types/SentryConfiguration';
55

66
const fetchtMock = jest.fn();
77
jest.mock('electron-fetch', () => {

src/main/observers/Sentry.ts renamed to src/extensions/sentry/observer/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { State } from '../../types/State';
2-
import { Observer } from '../../types/Observer';
3-
import { SentryConfiguration } from '../../types/SentryConfiguration';
4-
import { Status } from '../../types/Status';
1+
import { State } from '../../../types/State';
2+
import { Observer } from '../../../types/Observer';
3+
import { SentryConfiguration } from '../../../types/SentryConfiguration';
4+
import { Status } from '../../../types/Status';
55
import fetch from 'electron-fetch';
66

77
export class Sentry implements Observer {

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { app, ipcMain } from 'electron';
22
import { appManager } from './main/AppManager';
33
import { TrayMenu } from './main/TrayMenu';
44
import { AppWindow } from './main/AppWindow';
5-
import { ObserverManager } from './main/observers/ObserverManager';
5+
import { ObserverManager } from './main/ObserverManager';
66
import { NotificationManager } from './main/NotificationManager';
77
import { dirname, resolve, basename } from 'path';
88
import updateElectronApp from 'update-electron-app';

src/main/observers/ObserverManager.test.ts renamed to src/main/ObserverManager.test.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import { Status } from '../../types/Status';
1+
import { Status } from '../types/Status';
22
import { ObserverManager } from './ObserverManager';
3-
import { TrayMenu } from '../TrayMenu';
4-
import { NotificationManager } from '../NotificationManager';
5-
import { State } from '../../types/State';
6-
import { GithubAction } from './GithubAction';
7-
import { CCTray } from './CCTray';
8-
import { Sentry } from './Sentry';
9-
import { DatadogMonitor } from './DatadogMonitor';
10-
import { NewRelic } from './NewRelic';
3+
import { TrayMenu } from './TrayMenu';
4+
import { NotificationManager } from './NotificationManager';
5+
import { State } from '../types/State';
6+
import { GithubAction } from '../extensions/github/observer';
7+
import { CCTray } from '../extensions/cctray/observer';
8+
import { Sentry } from '../extensions/sentry/observer';
9+
import { DatadogMonitor } from '../extensions/datadog/observer';
10+
import { NewRelic } from '../extensions/newRelic/observer';
1111

1212
const storeGetMock = jest.fn();
1313

14-
jest.mock('../../store', () => ({
14+
jest.mock('../store', () => ({
1515
store: {
1616
get: (...params: any[]) => storeGetMock(...params),
1717
},

src/main/observers/ObserverManager.ts renamed to src/main/ObserverManager.ts

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,16 @@
1-
import { GithubAction } from './GithubAction';
2-
import { CCTray } from './CCTray';
3-
import { store } from '../../store';
4-
import { TrayMenu } from '../TrayMenu';
5-
import { NotificationManager } from '../NotificationManager';
6-
import { State } from '../../types/State';
7-
import { Observer } from '../../types/Observer';
8-
import { ObserverConfiguration } from '../../types/ObserverConfiguration';
9-
import { Status } from '../../types/Status';
10-
import { DatadogMonitor } from './DatadogMonitor';
11-
import { MapType } from '../../types/MapType';
12-
import { Sentry } from './Sentry';
13-
import { NewRelic } from './NewRelic';
14-
import { Grafana } from './grafana';
1+
import { store } from '../store';
2+
import { TrayMenu } from './TrayMenu';
3+
import { NotificationManager } from './NotificationManager';
4+
import { State } from '../types/State';
5+
import { Observer } from '../types/Observer';
6+
import { ObserverConfiguration } from '../types/ObserverConfiguration';
7+
import { Status } from '../types/Status';
8+
import { ObserversBuildersMap } from '../extensions/observerBuiderMap';
159

1610
export class ObserverManager {
1711
private observers: Observer[];
1812
private globalState: State;
1913
private observersState: State[];
20-
private readonly ObserversBuildersMap: MapType<(config: any) => Observer> = {
21-
githubAction: (configuration: any) => new GithubAction(configuration as any),
22-
ccTray: (configuration: any) => new CCTray(configuration as any),
23-
datadogMonitor: (configuration: any) => new DatadogMonitor(configuration as any),
24-
sentry: (configuration: any) => new Sentry(configuration as any),
25-
newRelic: (configuration: any) => new NewRelic(configuration as any),
26-
grafana: (configuration: any) => new Grafana(configuration as any),
27-
};
2814

2915
constructor(
3016
private tray: TrayMenu,
@@ -59,7 +45,7 @@ export class ObserverManager {
5945
this.observers = (store.get('observables') as ObserverConfiguration[]).map(
6046
(configuration: ObserverConfiguration) => {
6147
try {
62-
return this.ObserversBuildersMap[configuration.type](configuration);
48+
return ObserversBuildersMap[configuration.type](configuration);
6349
} catch (error) {
6450
console.error(error);
6551
}

src/renderer/components/Observers/index.test.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import { render, fireEvent, waitFor, screen, within } from '@testing-library/rea
66
import '@testing-library/jest-dom';
77
import { Observers } from './index';
88
import { faker } from '@faker-js/faker';
9-
import { observersComponentBuilderMap } from './helpers/observersComponentBuilderMap';
10-
import { observersTitleBuilderMap } from './helpers/observersTitleBuilderMap';
9+
import { observersComponentBuilderMap } from '../../../extensions/observersComponentBuilderMap';
10+
import { observersTitleBuilderMap } from '../../../extensions/observersTitleBuilderMap';
1111

12-
jest.mock('./helpers/observersComponentBuilderMap', () => ({
12+
jest.mock('../../../extensions/observersComponentBuilderMap', () => ({
1313
__esModule: true,
1414
observersComponentBuilderMap: {
1515
githubAction: jest.fn(),
@@ -19,7 +19,7 @@ jest.mock('./helpers/observersComponentBuilderMap', () => ({
1919
newRelic: jest.fn(),
2020
},
2121
}));
22-
jest.mock('./helpers/observersTitleBuilderMap', () => ({
22+
jest.mock('../../../extensions/observersTitleBuilderMap', () => ({
2323
__esModule: true,
2424
observersTitleBuilderMap: {
2525
githubAction: jest.fn(),

src/renderer/components/Observers/index.tsx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
99
import MenuItem from '@mui/material/MenuItem';
1010
import Select from '@mui/material/Select';
1111
import TextField from '@mui/material/TextField';
12-
import { observersComponentBuilderMap } from './helpers/observersComponentBuilderMap';
13-
import { observersTitleBuilderMap } from './helpers/observersTitleBuilderMap';
12+
import { observersComponentBuilderMap } from '../../../extensions/observersComponentBuilderMap';
13+
import { observersTitleBuilderMap } from '../../../extensions/observersTitleBuilderMap';
1414
import { ObserversParams } from '../../../types/ObserversParams';
15+
import { observersList } from '../../../extensions/observersList';
1516

1617
export const Observers = ({ observables, add, remove, update, save, translate }: ObserversParams) => {
1718
const getComponent = (observable: any, index: number, updateFieldWithValue: any): any => {
@@ -42,12 +43,9 @@ export const Observers = ({ observables, add, remove, update, save, translate }:
4243
label="Observer Type"
4344
onChange={(event: React.ChangeEvent<HTMLInputElement>) => update('type', index, event.target.value)}
4445
>
45-
<MenuItem value={'githubAction'}>Github Action</MenuItem>
46-
<MenuItem value={'ccTray'}>CCTray</MenuItem>
47-
<MenuItem value={'datadogMonitor'}>Datadog Monitor</MenuItem>
48-
<MenuItem value={'sentry'}>Sentry</MenuItem>
49-
<MenuItem value={'newRelic'}>New Relic</MenuItem>
50-
<MenuItem value={'grafana'}>Grafana</MenuItem>
46+
{observersList.map(({ value, lable }: any) => (
47+
<MenuItem value={value}>{lable}</MenuItem>
48+
))}
5149
</Select>
5250
{getComponent(observable, index, update)}
5351
<TextField

0 commit comments

Comments
 (0)