From abd04cb8700e2195ff02c4ffa75adb3523e9d978 Mon Sep 17 00:00:00 2001 From: Faustino Kialungila Date: Mon, 3 Feb 2020 01:27:03 +0100 Subject: [PATCH] Load only valid excalidraw json when drag&drop (#678) * Load only valid excalidraw json when drag&drop * fix lint error --- src/scene/data.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/scene/data.ts b/src/scene/data.ts index 584a127e..095c4f65 100644 --- a/src/scene/data.ts +++ b/src/scene/data.ts @@ -24,6 +24,9 @@ const BACKEND_GET = "https://json.excalidraw.com/api/v1/"; (window as any).handle = null; interface DataState { + type?: string; + version?: string; + source?: string; elements: readonly ExcalidrawElement[]; appState: AppState | null; selectedId?: number; @@ -92,6 +95,9 @@ export async function loadFromBlob(blob: any) { let appState = defaultAppState; try { const data = JSON.parse(contents); + if (data.type !== "excalidraw") { + throw new Error("Cannot load invalid json"); + } elements = data.elements || []; appState = { ...defaultAppState, ...data.appState }; } catch (e) { @@ -120,6 +126,9 @@ export async function loadFromBlob(blob: any) { })(); } const { elements, appState } = updateAppState(contents); + if (!elements.length) { + return Promise.reject("Cannot load invalid json"); + } return new Promise(resolve => { resolve(restore(elements, appState, { scrollToContent: true })); });