diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.test.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.test.tsx index 72922d5ff97e8..6cfd61cb90bd5 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.test.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.test.tsx @@ -7,6 +7,7 @@ import { configureStore } from 'app/store/configureStore'; import { InstanceTypesExtra } from '../../panel.types'; import AddRemoteInstance from './AddRemoteInstance'; +import { MemoryRouter } from 'react-router-dom-v5-compat'; jest.mock('app/percona/shared/helpers/logger', () => { const originalModule = jest.requireActual('app/percona/shared/helpers/logger'); @@ -23,7 +24,9 @@ describe('Add remote instance:: ', () => { const type = Databases.mysql; render( - + + + ); @@ -42,7 +45,9 @@ describe('Add remote instance:: ', () => { const type = InstanceTypesExtra.external; render( - + + + ); @@ -66,7 +71,9 @@ describe('Add remote instance:: ', () => { render( - + + + ); diff --git a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tsx b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tsx index c18e241dd1746..fc67762a4e082 100644 --- a/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tsx +++ b/public/app/percona/add-instance/components/AddRemoteInstance/AddRemoteInstance.tsx @@ -38,12 +38,16 @@ import { } from './FormParts'; import { ExternalServiceConnectionDetails } from './FormParts/ExternalServiceConnectionDetails/ExternalServiceConnectionDetails'; import { HAProxyConnectionDetails } from './FormParts/HAProxyConnectionDetails/HAProxyConnectionDetails'; +import { isPmmNavEnabled } from 'app/percona/shared/helpers/plugin'; +import { useNavigate } from 'react-router-dom-v5-compat'; +import { ServiceAddedEvent } from 'app/percona/shared/core/events'; const AddRemoteInstance: FC = ({ instance: { type, credentials }, onSubmit: submitWrapper, }) => { const styles = useStyles(getStyles); + const navigate = useNavigate(); const { remoteInstanceCredentials, discoverName } = getInstanceData(type, credentials); const [loading, setLoading] = useState(false); @@ -84,7 +88,14 @@ const AddRemoteInstance: FC = ({ Messages.success.title(values.serviceName || values.address || ''), Messages.success.description(INSTANCE_TYPES_LABELS[type as Databases]), ]); - window.location.href = '/graph/inventory/'; + + if (isPmmNavEnabled()) { + appEvents.publish(new ServiceAddedEvent()); + + navigate('/inventory'); + } else { + window.location.href = '/graph/inventory/'; + } } catch (e) { if (isApiCancelError(e)) { return; diff --git a/public/app/percona/shared/core/events.ts b/public/app/percona/shared/core/events.ts new file mode 100644 index 0000000000000..5f70213fdb066 --- /dev/null +++ b/public/app/percona/shared/core/events.ts @@ -0,0 +1,9 @@ +import { BusEventBase } from '@grafana/data'; + +export class SettingsUpdatedEvent extends BusEventBase { + static type = 'settings-updated-event'; +} + +export class ServiceAddedEvent extends BusEventBase { + static type = 'service-added-event'; +} diff --git a/public/app/percona/shared/core/reducers/index.ts b/public/app/percona/shared/core/reducers/index.ts index cb3673500648f..035529508936f 100644 --- a/public/app/percona/shared/core/reducers/index.ts +++ b/public/app/percona/shared/core/reducers/index.ts @@ -26,6 +26,8 @@ import tourReducer from './tour/tour'; import updatesReducers from './updates'; import perconaUserReducers from './user/user'; import usersReducers from './users/users'; +import appEvents from 'app/core/app_events'; +import { SettingsUpdatedEvent } from '../events'; const initialSettingsState: Settings = { updatesEnabled: false, @@ -114,6 +116,7 @@ export const updateSettingsAction = createAsyncThunk( } const settings = await SettingsService.setSettings(args.body, args.token, true); await thunkAPI.dispatch(fetchSettingsAction({ usedPassword: password, testEmail })); + appEvents.publish(new SettingsUpdatedEvent()); return settings; })() ),