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

Reduce state updates while saving screens

This commit is contained in:
Andrew Kingston 2022-07-14 15:29:06 +01:00
parent bd5d419692
commit 172a5a8c25

View file

@ -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)
} }
// Select the new screen if creating a new one
if (creatingNewScreen) {
state.selectedScreenId = savedScreen._id
state.selectedComponentId = savedScreen.props._id
}
// Update routes
state.routes = routesResponse.routes
return state return state
}) })
// Refresh routes
await store.actions.routing.fetch()
// Select the new screen if creating a new one
if (creatingNewScreen) {
store.actions.screens.select(savedScreen._id)
}
return savedScreen return savedScreen
}, },
delete: async screens => { delete: async screens => {