From 3a1841ad3c7084f9310e48ef073ab138ca208a22 Mon Sep 17 00:00:00 2001 From: Srinath Narayanan Date: Thu, 4 Mar 2021 00:05:30 -0800 Subject: [PATCH] Remove injected cell before download (#467) * remove newcell on download * addressed pr comments --- .../NotebookViewer/NotebookViewerComponent.tsx | 14 +------------- src/Utils/GalleryUtils.ts | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/Explorer/Controls/NotebookViewer/NotebookViewerComponent.tsx b/src/Explorer/Controls/NotebookViewer/NotebookViewerComponent.tsx index d98dd2cef..e73b23a4f 100644 --- a/src/Explorer/Controls/NotebookViewer/NotebookViewerComponent.tsx +++ b/src/Explorer/Controls/NotebookViewer/NotebookViewerComponent.tsx @@ -15,7 +15,6 @@ import { Dialog, DialogProps, TextFieldProps } from "../Dialog"; import { NotebookMetadataComponent } from "./NotebookMetadataComponent"; import "./NotebookViewerComponent.less"; import Explorer from "../../Explorer"; -import { NotebookV4 } from "@nteract/commutable/lib/v4"; import { SessionStorageUtility } from "../../../Shared/StorageUtility"; import { DialogHost } from "../../../Utils/GalleryUtils"; import { getErrorMessage, getErrorStack, handleError } from "../../../Common/ErrorHandlingUtils"; @@ -103,7 +102,7 @@ export class NotebookViewerComponent ); const notebook: Notebook = await response.json(); - this.removeNotebookViewerLink(notebook, this.props.galleryItem?.newCellId); + GalleryUtils.removeNotebookViewerLink(notebook, this.props.galleryItem?.newCellId); this.notebookComponentBootstrapper.setContent("json", notebook); this.setState({ content: notebook, showProgressBar: false }); @@ -133,17 +132,6 @@ export class NotebookViewerComponent } } - private removeNotebookViewerLink = (notebook: Notebook, newCellId: string): void => { - if (!newCellId) { - return; - } - const notebookV4 = notebook as NotebookV4; - if (notebookV4 && notebookV4.cells[0].source[0].search(newCellId)) { - delete notebookV4.cells[0]; - notebook = notebookV4; - } - }; - public render(): JSX.Element { return (
diff --git a/src/Utils/GalleryUtils.ts b/src/Utils/GalleryUtils.ts index d0cd0999c..c95257a4e 100644 --- a/src/Utils/GalleryUtils.ts +++ b/src/Utils/GalleryUtils.ts @@ -13,6 +13,8 @@ import { getErrorMessage, getErrorStack, handleError } from "../Common/ErrorHand import { HttpStatusCodes } from "../Common/Constants"; import { trace, traceFailure, traceStart, traceSuccess } from "../Shared/Telemetry/TelemetryProcessor"; import { Action, ActionModifiers } from "../Shared/Telemetry/TelemetryConstants"; +import { Notebook } from "@nteract/commutable"; +import { NotebookV4 } from "@nteract/commutable/lib/v4"; const defaultSelectedAbuseCategory = "Other"; const abuseCategories: IChoiceGroupOption[] = [ @@ -243,7 +245,10 @@ export function downloadItem( throw new Error(`Received HTTP ${response.status} when fetching ${data.name}`); } - await container.importAndOpenContent(data.name, response.data); + const notebook = JSON.parse(response.data) as Notebook; + removeNotebookViewerLink(notebook, data.newCellId); + + await container.importAndOpenContent(data.name, JSON.stringify(notebook)); NotificationConsoleUtils.logConsoleMessage( ConsoleDataType.Info, `Successfully downloaded ${name} to My Notebooks` @@ -281,6 +286,17 @@ export function downloadItem( ); } +export const removeNotebookViewerLink = (notebook: Notebook, newCellId: string): void => { + if (!newCellId) { + return; + } + const notebookV4 = notebook as NotebookV4; + if (notebookV4?.cells[0]?.source[0]?.search(newCellId)) { + notebookV4.cells.splice(0, 1); + notebook = notebookV4; + } +}; + export async function favoriteItem( container: Explorer, junoClient: JunoClient,