1
0
Fork 0
mirror of synced 2024-09-10 22:46:09 +12:00

Use patches when updating homescreens

This commit is contained in:
Andrew Kingston 2022-07-14 16:17:40 +01:00
parent 0d2509a7f6
commit 099bddab91

View file

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