From 880fda6ed993c7aafc2814aac99f079cf6796c26 Mon Sep 17 00:00:00 2001 From: Michael Lively Date: Wed, 17 Aug 2022 12:17:39 -0700 Subject: [PATCH] fix pasting image into newly created cell bug --- extensions/ipynb/src/notebookImagePaste.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/extensions/ipynb/src/notebookImagePaste.ts b/extensions/ipynb/src/notebookImagePaste.ts index 64137f82300..b28ce8b9616 100644 --- a/extensions/ipynb/src/notebookImagePaste.ts +++ b/extensions/ipynb/src/notebookImagePaste.ts @@ -62,9 +62,17 @@ class CopyPasteEditProvider implements vscode.DocumentPasteEditProvider { // create updated metadata for cell (prep for WorkspaceEdit) const b64string = encodeBase64(fileDataAsUint8); - const startingAttachments = currentCell.metadata?.custom?.attachments; + const startingAttachments = currentCell.metadata.custom?.attachments; + let metadataNotebookEdit; if (!startingAttachments) { - currentCell.metadata.custom['attachments'] = { [pasteFilename]: { 'image/png': b64string } }; + if (!currentCell.metadata.custom) { + const initMetadata = { 'custom': { 'attachments': { [pasteFilename]: { 'image/png': b64string } } } }; + metadataNotebookEdit = vscode.NotebookEdit.updateCellMetadata(currentCell.index, initMetadata); + } else { + currentCell.metadata.custom['attachments'] = { [pasteFilename]: { 'image/png': b64string } }; + metadataNotebookEdit = vscode.NotebookEdit.updateCellMetadata(currentCell.index, currentCell.metadata); + } + } else { for (let appendValue = 2; pasteFilename in startingAttachments; appendValue++) { const objEntries = Object.entries(startingAttachments[pasteFilename]); @@ -76,9 +84,9 @@ class CopyPasteEditProvider implements vscode.DocumentPasteEditProvider { } } currentCell.metadata.custom.attachments[pasteFilename] = { 'image/png': b64string }; + metadataNotebookEdit = vscode.NotebookEdit.updateCellMetadata(currentCell.index, currentCell.metadata); } - const metadataNotebookEdit = vscode.NotebookEdit.updateCellMetadata(currentCell.index, currentCell.metadata); const workspaceEdit = new vscode.WorkspaceEdit(); if (metadataNotebookEdit) { workspaceEdit.set(notebookUri, [metadataNotebookEdit]);