Skip to content

Commit f1387ae

Browse files
authored
[Fix] Lose OriginatingApp Connection on Save After Create new (#74420) (#74692)
Fixed typo created in #72725 which caused the originatingApp connection not to be lost properly after Create new
1 parent 0a5cc09 commit f1387ae

File tree

4 files changed

+37
-6
lines changed

4 files changed

+37
-6
lines changed

src/plugins/visualize/public/application/utils/get_top_nav_config.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export const getTopNavConfig = (
114114
application.navigateToApp(originatingApp);
115115
}
116116
} else {
117-
if (setOriginatingApp && originatingApp && savedVis.copyOnSave) {
117+
if (setOriginatingApp && originatingApp && newlyCreated) {
118118
setOriginatingApp(undefined);
119119
}
120120
chrome.docTitle.change(savedVis.lastSavedTitle);

test/functional/apps/dashboard/edit_embeddable_redirects.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ import expect from '@kbn/expect';
2121
export default function ({ getService, getPageObjects }) {
2222
const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'settings', 'common']);
2323
const esArchiver = getService('esArchiver');
24+
const testSubjects = getService('testSubjects');
2425
const kibanaServer = getService('kibanaServer');
2526
const dashboardPanelActions = getService('dashboardPanelActions');
27+
const dashboardVisualizations = getService('dashboardVisualizations');
2628

2729
describe('edit embeddable redirects', () => {
2830
before(async () => {
@@ -81,6 +83,23 @@ export default function ({ getService, getPageObjects }) {
8183
await PageObjects.header.waitUntilLoadingHasFinished();
8284
await dashboardPanelActions.openContextMenu();
8385
await dashboardPanelActions.clickEdit();
86+
await PageObjects.visualize.linkedToOriginatingApp();
87+
await PageObjects.visualize.saveVisualizationExpectSuccess(newTitle, {
88+
saveAsNew: true,
89+
redirectToOrigin: false,
90+
});
91+
await PageObjects.visualize.notLinkedToOriginatingApp();
92+
await PageObjects.common.navigateToApp('dashboard');
93+
});
94+
95+
it('loses originatingApp connection after first save when redirectToOrigin is false', async () => {
96+
const newTitle = 'test create panel originatingApp';
97+
await PageObjects.dashboard.loadSavedDashboard('few panels');
98+
await PageObjects.dashboard.switchToEditMode();
99+
await testSubjects.exists('dashboardAddNewPanelButton');
100+
await testSubjects.click('dashboardAddNewPanelButton');
101+
await dashboardVisualizations.ensureNewVisualizationDialogIsShowing();
102+
await PageObjects.visualize.clickMarkdownWidget();
84103
await PageObjects.visualize.saveVisualizationExpectSuccess(newTitle, {
85104
saveAsNew: true,
86105
redirectToOrigin: false,

x-pack/plugins/lens/public/app_plugin/app.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,7 @@ export function App({
328328
...s,
329329
isSaveModalVisible: false,
330330
originatingApp:
331-
saveProps.newCopyOnSave && !saveProps.returnToOrigin
332-
? undefined
333-
: currentOriginatingApp,
331+
newlyCreated && !saveProps.returnToOrigin ? undefined : currentOriginatingApp,
334332
persistedDoc: newDoc,
335333
lastKnownDoc: newDoc,
336334
}));

x-pack/test/functional/apps/dashboard_mode/dashboard_empty_screen.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export default function ({ getPageObjects, getService }) {
2727
await PageObjects.dashboard.gotoDashboardLandingPage();
2828
});
2929

30-
async function createAndAddLens(title) {
30+
async function createAndAddLens(title, saveAsNew = false, redirectToOrigin = true) {
3131
log.debug(`createAndAddLens(${title})`);
3232
const inViewMode = await PageObjects.dashboard.getIsInViewMode();
3333
if (inViewMode) {
@@ -52,7 +52,7 @@ export default function ({ getPageObjects, getService }) {
5252
operation: 'terms',
5353
field: 'ip',
5454
});
55-
await PageObjects.lens.save(title, false, true);
55+
await PageObjects.lens.save(title, saveAsNew, redirectToOrigin);
5656
}
5757

5858
it('adds Lens visualization to empty dashboard', async () => {
@@ -100,6 +100,8 @@ export default function ({ getPageObjects, getService }) {
100100
});
101101

102102
it('loses originatingApp connection after save as when redirectToOrigin is false', async () => {
103+
await PageObjects.dashboard.saveDashboard('empty dashboard test');
104+
await PageObjects.dashboard.switchToEditMode();
103105
const newTitle = 'wowee, my title just got cooler again';
104106
await PageObjects.dashboard.waitForRenderComplete();
105107
await dashboardPanelActions.openContextMenu();
@@ -108,5 +110,17 @@ export default function ({ getPageObjects, getService }) {
108110
await PageObjects.lens.notLinkedToOriginatingApp();
109111
await PageObjects.common.navigateToApp('dashboard');
110112
});
113+
114+
it('loses originatingApp connection after first save when redirectToOrigin is false', async () => {
115+
const title = 'non-dashboard Test Lens';
116+
await PageObjects.dashboard.loadSavedDashboard('empty dashboard test');
117+
await PageObjects.dashboard.switchToEditMode();
118+
await testSubjects.exists('dashboardAddNewPanelButton');
119+
await testSubjects.click('dashboardAddNewPanelButton');
120+
await dashboardVisualizations.ensureNewVisualizationDialogIsShowing();
121+
await createAndAddLens(title, false, false);
122+
await PageObjects.lens.notLinkedToOriginatingApp();
123+
await PageObjects.common.navigateToApp('dashboard');
124+
});
111125
});
112126
}

0 commit comments

Comments
 (0)