diff --git a/packages/builder/src/stores/builder/componentTreeNodes.ts b/packages/builder/src/stores/builder/componentTreeNodes.ts index 2f34e79d01..17793c9672 100644 --- a/packages/builder/src/stores/builder/componentTreeNodes.ts +++ b/packages/builder/src/stores/builder/componentTreeNodes.ts @@ -1,7 +1,7 @@ import { get } from "svelte/store" import { selectedScreen as selectedScreenStore } from "./screens" import { findComponentPath } from "@/helpers/components" -import { Component } from "@budibase/types" +import { Component, Screen } from "@budibase/types" import { BudiStore, PersistenceType } from "@/stores/BudiStore" interface OpenNodesState { diff --git a/packages/builder/src/stores/builder/screens.ts b/packages/builder/src/stores/builder/screens.ts index 5163c6a3ea..04405feb70 100644 --- a/packages/builder/src/stores/builder/screens.ts +++ b/packages/builder/src/stores/builder/screens.ts @@ -35,7 +35,7 @@ export const initialScreenState: ScreenState = { export class ScreenStore extends BudiStore { history: any delete: any - save: any + save: (screen: Screen) => Promise constructor() { super(initialScreenState) @@ -281,7 +281,10 @@ export class ScreenStore extends BudiStore { * supports deeply mutating the current doc rather than just appending data. */ sequentialScreenPatch = Utils.sequential( - async (patchFn: (screen: Screen) => any, screenId: string) => { + async ( + patchFn: (screen: Screen) => boolean, + screenId: string + ): Promise => { const state = get(this.store) const screen = state.screens.find(screen => screen._id === screenId) if (!screen) { diff --git a/packages/frontend-core/src/utils/utils.ts b/packages/frontend-core/src/utils/utils.ts index 5f7f7063a7..b75ae02d07 100644 --- a/packages/frontend-core/src/utils/utils.ts +++ b/packages/frontend-core/src/utils/utils.ts @@ -17,12 +17,13 @@ export const sequential = < TFunction extends (...args: any[]) => Promise >( fn: TFunction -): ((...args: Parameters) => Promise) => { - let queue: any[] = [] - return (...params: Parameters) => { - return new Promise((resolve, reject) => { +): TFunction => { + let queue: (() => Promise)[] = [] + const result = (...params: Parameters) => { + return new Promise((resolve, reject) => { queue.push(async () => { - let data, error + let data: TReturn | undefined + let error: unknown try { data = await fn(...params) } catch (err) { @@ -35,7 +36,7 @@ export const sequential = < if (error) { reject(error) } else { - resolve(data) + resolve(data!) } }) if (queue.length === 1) { @@ -43,6 +44,7 @@ export const sequential = < } }) } + return result as TFunction } /**