Browse Source

Fix state when deleting frontend screens

master
Andrew Kingston 6 years ago
parent
commit
6307e9028c
  1. 25
      packages/builder/src/components/userInterface/ScreenDropdownMenu.svelte

25
packages/builder/src/components/userInterface/ScreenDropdownMenu.svelte

@ -1,4 +1,5 @@
<script> <script>
import { goto } from "@sveltech/routify"
import { store } from "builderStore" import { store } from "builderStore"
import ConfirmDialog from "components/common/ConfirmDialog.svelte" import ConfirmDialog from "components/common/ConfirmDialog.svelte"
import api from "builderStore/api" import api from "builderStore/api"
@ -16,19 +17,27 @@
} }
const deleteScreen = () => { const deleteScreen = () => {
store.update(s => { store.update(state => {
const screens = s.screens.filter(c => c.name !== screen.name) // Remove screen from screens
s.screens = screens const screens = state.screens.filter(c => c.name !== screen.name)
if (s.currentPreviewItem.name === screen.name) { state.screens = screens
s.currentPreviewItem = s.pages[s.currentPageName]
s.currentFrontEndType = "page" // Remove screen from current page as well
const pageScreens = state.pages[state.currentPageName]._screens.filter(
scr => scr.name !== screen.name
)
state.pages[state.currentPageName]._screens = pageScreens
if (state.currentPreviewItem.name === screen.name) {
store.setCurrentPage($store.currentPageName)
$goto(`./:page/page-layout`)
} }
api.delete( api.delete(
`/_builder/api/pages/${s.currentPageName}/screens/${screen.name}` `/_builder/api/pages/${state.currentPageName}/screens/${screen.name}`
) )
return s return state
}) })
} }
</script> </script>

Loading…
Cancel
Save