From c995b801ce28d45fa90d5b83f80a8ba6afb04790 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 12 Dec 2023 19:08:19 +0100 Subject: [PATCH] refactor(core): return promise from `fromObject` --- packages/core/src/store/actions.ts | 48 +++++++++++++++++------------- packages/core/src/types/store.ts | 2 +- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/packages/core/src/store/actions.ts b/packages/core/src/store/actions.ts index 9068eabb..c080c77c 100644 --- a/packages/core/src/store/actions.ts +++ b/packages/core/src/store/actions.ts @@ -830,31 +830,39 @@ export function useActions( } const fromObject: Actions['fromObject'] = (obj) => { - const { nodes, edges, position, zoom, viewport } = obj + return new Promise((resolve) => { + const { nodes, edges, position, zoom, viewport } = obj - if (nodes) { - setNodes(nodes) - } + if (nodes) { + setNodes(nodes) + } - if (edges) { - setEdges(edges) - } + if (edges) { + setEdges(edges) + } - if ((viewport?.x && viewport?.y) || position) { - const x = viewport?.x || position[0] - const y = viewport?.y || position[1] - const nextZoom = viewport?.zoom || zoom || state.viewport.zoom + if ((viewport?.x && viewport?.y) || position) { + const x = viewport?.x || position[0] + const y = viewport?.y || position[1] + const nextZoom = viewport?.zoom || zoom || state.viewport.zoom - until(() => viewportHelper.value.initialized) - .toBe(true) - .then(() => { - viewportHelper.value.setViewport({ - x, - y, - zoom: nextZoom, + return until(() => viewportHelper.value.initialized) + .toBe(true) + .then(() => { + viewportHelper.value + .setViewport({ + x, + y, + zoom: nextZoom, + }) + .then(() => { + resolve(true) + }) }) - }) - } + } else { + resolve(true) + } + }) } const $reset: Actions['$reset'] = () => { diff --git a/packages/core/src/types/store.ts b/packages/core/src/types/store.ts index 3f766470..d93ccfbb 100644 --- a/packages/core/src/types/store.ts +++ b/packages/core/src/types/store.ts @@ -252,7 +252,7 @@ export interface Actions extends ViewportFunctions { /** return an object of graph values (elements, viewport transform) for storage and re-loading a graph */ toObject: () => FlowExportObject /** load graph from export obj */ - fromObject: (obj: FlowExportObject) => void + fromObject: (obj: FlowExportObject) => Promise /** force update node internal data, if handle bounds are incorrect, you might want to use this */ updateNodeInternals: UpdateNodeInternals /** start a connection */