Skip to content

Commit 0641dcb

Browse files
committed
fix breadcrumbs
1 parent c1e604f commit 0641dcb

6 files changed

Lines changed: 30 additions & 11 deletions

File tree

x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/copy_package_policy_page/index.tsx

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ const PoliciesBreadcrumb: React.FunctionComponent<{
4747
const InstalledIntegrationsBreadcrumb = memo<{
4848
policyName: string;
4949
}>(({ policyName }) => {
50-
useIntegrationsBreadcrumbs('integration_policy_edit_from_installed', { policyName });
50+
useIntegrationsBreadcrumbs('integration_policy_copy_from_installed', { policyName });
5151
return null;
5252
});
5353

@@ -70,8 +70,19 @@ export const CopyPackagePolicyPage = memo(() => {
7070

7171
// Parse the 'from' query parameter to determine navigation after save
7272
const { search } = useLocation();
73-
const qs = new URLSearchParams(search);
74-
const fromQs = (qs.get('from') as EditPackagePolicyFrom | null) ?? 'fleet-policy-list';
73+
74+
const from = useMemo(() => {
75+
const qs = new URLSearchParams(search);
76+
const qsFrom = (qs.get('from') as EditPackagePolicyFrom | null) ?? 'fleet-policy-list';
77+
78+
if (qsFrom === 'fleet-policy-list') {
79+
return 'copy-from-fleet-policy-list';
80+
} else if (qsFrom === 'installed-integrations') {
81+
return 'copy-from-installed-integrations';
82+
} else {
83+
return 'copy-from-integrations-policy-list';
84+
}
85+
}, [search]);
7586

7687
if (packagePolicy.isLoading || !packagePolicy.data) {
7788
return (
@@ -82,9 +93,9 @@ export const CopyPackagePolicyPage = memo(() => {
8293
}
8394

8495
const breadcrumb =
85-
fromQs === 'fleet-policy-list' && policyId ? (
96+
from === 'copy-from-fleet-policy-list' && policyId ? (
8697
<PoliciesBreadcrumb policyName={agentPolicy.data?.item?.name || ''} policyId={policyId} />
87-
) : fromQs === 'installed-integrations' ? (
98+
) : from === 'copy-from-installed-integrations' ? (
8899
<InstalledIntegrationsBreadcrumb policyName={packagePolicy.data?.item?.name || ''} />
89100
) : (
90101
<IntegrationsBreadcrumb
@@ -118,7 +129,7 @@ export const CopyPackagePolicyPage = memo(() => {
118129
<>
119130
{breadcrumb}
120131
<CreatePackagePolicySinglePage
121-
from={fromQs || ('copy-from-integrations-policy-list' as EditPackagePolicyFrom)}
132+
from={from}
122133
pkgName={packagePolicy.data!.item!.package!.name}
123134
pkgVersion={packagePolicy.data!.item!.package!.version}
124135
defaultPolicyData={packagePolicyData}

x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/hooks/navigation.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import { useCallback, useMemo, useEffect, useRef } from 'react';
99
import type { ApplicationStart } from '@kbn/core-application-browser';
1010

11+
import { splitPkgKey } from '../../../../../../../common/services';
1112
import { PLUGIN_ID, INTEGRATIONS_PLUGIN_ID } from '../../../../constants';
1213
import { pkgKeyFromPackageInfo } from '../../../../services';
1314
import { useStartServices, useLink, useIntraAppState } from '../../../../hooks';
@@ -48,7 +49,11 @@ export const useCancelAddPackagePolicy = (params: UseCancelParams) => {
4849
if (routeState && routeState.onCancelUrl) {
4950
return routeState.onCancelUrl;
5051
}
51-
return from === 'policy' && agentPolicyId
52+
if (from === 'installed-integrations' || from === 'copy-from-installed-integrations') {
53+
return `${getHref('integrations_installed', {})}?viewPolicies=${splitPkgKey(pkgkey).pkgName}`;
54+
}
55+
56+
return (from === 'policy' || from === 'copy-from-fleet-policy-list') && agentPolicyId
5257
? getHref('policy_details', {
5358
policyId: agentPolicyId,
5459
})

x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export const CreatePackagePolicySinglePageLayout: React.FunctionComponent<{
8484
[
8585
'copy-from-fleet-policy-list',
8686
'copy-from-integrations-policy-list',
87-
'copy-from-extension',
87+
'copy-from-installed-integrations',
8888
].includes(from),
8989
[from]
9090
);

x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ export type EditPackagePolicyFrom =
1818
| 'upgrade-from-fleet-policy-list'
1919
| 'upgrade-from-integrations-policy-list'
2020
| 'upgrade-from-extension'
21+
| 'copy-from-fleet-policy-list'
22+
| 'copy-from-integrations-policy-list'
23+
| 'copy-from-installed-integrations'
2124
| 'fleet-policy-list'
2225
| 'installed-integrations';
2326

x-pack/platform/plugins/shared/fleet/test/scout/ui/fixtures/page_objects/copy_integration_page.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import { type ScoutPage } from '@kbn/scout';
1010
export class CopyIntegrationPage {
1111
constructor(private readonly page: ScoutPage) {}
1212

13-
async navigateTo(packagePolicyId: string) {
14-
await this.page.gotoApp(`fleet/policies/copy-integration/${packagePolicyId}`);
13+
async navigateTo(agentPolicyId: string, packagePolicyId: string) {
14+
await this.page.gotoApp(`fleet/policies/${agentPolicyId}/copy-integration/${packagePolicyId}`);
1515
}
1616

1717
async waitForPageToLoad() {

x-pack/platform/plugins/shared/fleet/test/scout/ui/tests/copy_integration.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ test.describe('Copy integration', { tag: ['@ess'] }, () => {
135135
await browserAuth.loginAsPrivilegedUser();
136136
const { copyIntegration } = pageObjects;
137137

138-
await copyIntegration.navigateTo(packagePolicyId);
138+
await copyIntegration.navigateTo(agentPolicyId, packagePolicyId);
139139
await copyIntegration.waitForPageToLoad();
140140

141141
const nameInput = copyIntegration.getPackagePolicyNameInput();

0 commit comments

Comments
 (0)