From 1605e743f44b835e99b3403cb3cfc5018b697d26 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 19 Mar 2020 23:12:13 +0100 Subject: editor: experiment with Material UI for sprite library implementation --- src/renderer/editor/util.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/renderer/editor/util.ts (limited to 'src/renderer/editor/util.ts') diff --git a/src/renderer/editor/util.ts b/src/renderer/editor/util.ts new file mode 100644 index 0000000..b2331bb --- /dev/null +++ b/src/renderer/editor/util.ts @@ -0,0 +1,31 @@ +import { useCallback, useEffect, useState } from 'react'; + +import * as fs from 'fs'; + +export function usePromise(f: () => Promise): T | null { + const [value, setValue] = useState(null); + + useEffect(() => { + setValue(null); + + let cancelled = false; + + (async (): Promise => { + const v = await f(); + if (!cancelled) { + setValue(v); + } + })(); + + return (): void => { + cancelled = true; + }; + }, [f]); + + return value; +} + +export function useReadFile(path: string, encoding: BufferEncoding): string | null { + const readFile = useCallback(() => fs.promises.readFile(path, encoding), [path, encoding]); + return usePromise(readFile); +} -- cgit v1.2.3