浏览代码

Allow opening empty excalidraw file (#1348)

* allow openning empty file

* correctly throw error

* fix error handling

* switch back to error objects

Co-authored-by: dwelle <luzar.david@gmail.com>
Kostas Bariotis 5 年之前
父节点
当前提交
0a284adc18
共有 3 个文件被更改,包括 5 次插入10 次删除
  1. 1 1
      src/actions/actionExport.tsx
  2. 1 1
      src/components/App.tsx
  3. 3 8
      src/data/blob.ts

+ 1 - 1
src/actions/actionExport.tsx

@@ -92,7 +92,7 @@ export const actionLoadScene = register({
             updateData({ elements: elements, appState: appState });
           })
           .catch((error) => {
-            updateData({ error: error });
+            updateData({ error: error.message });
           });
       }}
     />

+ 1 - 1
src/components/App.tsx

@@ -2358,7 +2358,7 @@ export class App extends React.Component<any, AppState> {
           }),
         )
         .catch((error) => {
-          this.setState({ isLoading: false, errorMessage: error });
+          this.setState({ isLoading: false, errorMessage: error.message });
         });
     } else {
       this.setState({

+ 3 - 8
src/data/blob.ts

@@ -1,5 +1,4 @@
 import { getDefaultAppState } from "../appState";
-import { DataState } from "./types";
 import { restore } from "./restore";
 import { t } from "../i18n";
 
@@ -16,7 +15,7 @@ export async function loadFromBlob(blob: any) {
       elements = data.elements || [];
       appState = { ...defaultAppState, ...data.appState };
     } catch {
-      // Do nothing because elements array is already empty
+      throw new Error(t("alerts.couldNotLoadInvalidFile"));
     }
     return { elements, appState };
   };
@@ -38,11 +37,7 @@ export async function loadFromBlob(blob: any) {
       };
     });
   }
+
   const { elements, appState } = updateAppState(contents);
-  if (!elements.length) {
-    return Promise.reject(t("alerts.couldNotLoadInvalidFile"));
-  }
-  return new Promise<DataState>((resolve) => {
-    resolve(restore(elements, appState, { scrollToContent: true }));
-  });
+  return restore(elements, appState, { scrollToContent: true });
 }