diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index fd862dbc80..a2d7fa78ed 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -21,6 +21,7 @@ import { } from "../componentUtils" import { Helpers } from "@budibase/bbui" import { DefaultAppTheme, LAYOUT_NAMES } from "../../constants" +import { Utils } from "@budibase/frontend-core" const INITIAL_FRONTEND_STATE = { apps: [], @@ -228,14 +229,16 @@ export const getFrontendStore = () => { }) return savedScreen }, - patch: async (screenId, patch) => { + patch: Utils.sequential(async (screenId, patchFn) => { const state = get(store) const screen = state.screens.find(screen => screen._id === screenId) if (!screen) { return } - return store.actions.screens.save({ ...screen, ...patch }) - }, + let clone = cloneDeep(screen) + patchFn(clone) + return await store.actions.screens.save(clone) + }), delete: async screens => { const screensToDelete = Array.isArray(screens) ? screens : [screens] @@ -291,14 +294,16 @@ export const getFrontendStore = () => { ) }) if (existingHomeScreen) { - existingHomeScreen.routing.homeScreen = false - promises.push(store.actions.screens.save(existingHomeScreen)) + const patchFn = screen => (screen.routing.homeScreen = false) + promises.push( + store.actions.screens.patch(existingHomeScreen._id, patchFn) + ) } } // Update the passed in screen - screen.routing.homeScreen = makeHomeScreen - promises.push(store.actions.screens.save(screen)) + const patchFn = screen => (screen.routing.homeScreen = makeHomeScreen) + promises.push(store.actions.screens.patch(screen._id, patchFn)) return await Promise.all(promises) }, removeCustomLayout: async screen => {