mirror of
				https://github.com/excalidraw/excalidraw.git
				synced 2025-10-31 10:54:33 +01:00 
			
		
		
		
	Add file handling (#1736)
* Add file handling https://github.com/WICG/file-handling/blob/master/explainer.md#example * Only trigger on `.excalidraw` for now
This commit is contained in:
		| @@ -17,5 +17,13 @@ | ||||
|   "start_url": ".", | ||||
|   "display": "standalone", | ||||
|   "theme_color": "#000000", | ||||
|   "background_color": "#ffffff" | ||||
|   "background_color": "#ffffff", | ||||
|   "file_handlers": [ | ||||
|     { | ||||
|       "action": "/", | ||||
|       "accept": { | ||||
|         "application/vnd.excalidraw+json": [".excalidraw"] | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
|   | ||||
| @@ -58,9 +58,7 @@ export const actionClearCanvas = register({ | ||||
|       showAriaLabel={useIsMobile()} | ||||
|       onClick={() => { | ||||
|         if (window.confirm(t("alerts.clearReset"))) { | ||||
|           // TODO: Defined globally, since file handles aren't yet serializable. | ||||
|           // Once `FileSystemFileHandle` can be serialized, make this | ||||
|           // part of `AppState`. | ||||
|           // TODO: Make this part of `AppState`. | ||||
|           (window as any).handle = null; | ||||
|           updateData(null); | ||||
|         } | ||||
|   | ||||
| @@ -10,6 +10,7 @@ import App from "./components/App"; | ||||
| import { register as registerServiceWorker } from "./serviceWorker"; | ||||
|  | ||||
| import "./css/styles.scss"; | ||||
| import { loadFromBlob } from "./data"; | ||||
|  | ||||
| // On Apple mobile devices add the proprietary app icon and splashscreen markup. | ||||
| // No one should have to do this manually, and eventually this annoyance will | ||||
| @@ -88,3 +89,16 @@ registerServiceWorker({ | ||||
|     } | ||||
|   }, | ||||
| }); | ||||
|  | ||||
| if ("launchQueue" in window && "LaunchParams" in window) { | ||||
|   (window as any).launchQueue.setConsumer( | ||||
|     async (launchParams: { files: any[] }) => { | ||||
|       if (!launchParams.files.length) { | ||||
|         return; | ||||
|       } | ||||
|       const fileHandle = launchParams.files[0]; | ||||
|       const blob = await fileHandle.getFile(); | ||||
|       loadFromBlob(blob); | ||||
|     }, | ||||
|   ); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Thomas Steiner
					Thomas Steiner