Browse Source

Reduce state updates while saving screens

pull/6733/head
Andrew Kingston 4 years ago
parent
commit
55fb91a1ae
  1. 29
      packages/builder/src/builderStore/store/frontend.js

29
packages/builder/src/builderStore/store/frontend.js

@ -177,15 +177,6 @@ export const getFrontendStore = () => {
}) })
}, },
}, },
routing: {
fetch: async () => {
const response = await API.fetchAppRoutes()
store.update(state => {
state.routes = response.routes
return state
})
},
},
screens: { screens: {
select: screenId => { select: screenId => {
// Check this screen exists // Check this screen exists
@ -214,23 +205,27 @@ export const getFrontendStore = () => {
save: async screen => { save: async screen => {
const creatingNewScreen = screen._id === undefined const creatingNewScreen = screen._id === undefined
const savedScreen = await API.saveScreen(screen) const savedScreen = await API.saveScreen(screen)
const routesResponse = await API.fetchAppRoutes()
store.update(state => { store.update(state => {
// Update screen object
const idx = state.screens.findIndex(x => x._id === savedScreen._id) const idx = state.screens.findIndex(x => x._id === savedScreen._id)
if (idx !== -1) { if (idx !== -1) {
state.screens.splice(idx, 1, savedScreen) state.screens.splice(idx, 1, savedScreen)
} else { } else {
state.screens.push(savedScreen) state.screens.push(savedScreen)
} }
return state
})
// Refresh routes // Select the new screen if creating a new one
await store.actions.routing.fetch() if (creatingNewScreen) {
state.selectedScreenId = savedScreen._id
state.selectedComponentId = savedScreen.props._id
}
// Select the new screen if creating a new one // Update routes
if (creatingNewScreen) { state.routes = routesResponse.routes
store.actions.screens.select(savedScreen._id)
} return state
})
return savedScreen return savedScreen
}, },
delete: async screens => { delete: async screens => {

Loading…
Cancel
Save