@ -32,7 +32,8 @@ const INITIAL_FRONTEND_STATE = {
screens : [ ] ,
components : [ ] ,
currentFrontEndType : "none" ,
currentAssetId : "" ,
selectedScreenId : "" ,
selectedLayoutId : "" ,
selectedComponentId : "" ,
errors : [ ] ,
hasAppPackage : false ,
@ -89,8 +90,13 @@ export const getFrontendStore = () => {
let screen =
screens . find ( screen => screen . _ id === screenId ) || screens [ 0 ]
if ( ! screen ) return state
// Update role to the screen's role setting so that it will always
// be visible
selectedAccessRole . set ( screen . routing . roleId )
state . currentFrontEndType = FrontendTypes . SCREEN
state . currentAssetId = screen . _ id
state . selectedScreen Id = screen . _ id
state . currentView = "detail"
state . selectedComponentId = screen . props ? . _ id
return state
@ -99,7 +105,7 @@ export const getFrontendStore = () => {
create : async screen => {
screen = await store . actions . screens . save ( screen )
store . update ( state => {
state . currentAsset Id = screen . _ id
state . selectedScreen Id = screen . _ id
state . selectedComponentId = screen . props . _ id
state . currentFrontEndType = FrontendTypes . SCREEN
selectedAccessRole . set ( screen . routing . roleId )
@ -144,8 +150,8 @@ export const getFrontendStore = () => {
` /api/screens/ ${ screenToDelete . _ id } / ${ screenToDelete . _ rev } `
)
)
if ( screenToDelete . _ id === state . currentAsset Id) {
state . currentAssetId = ""
if ( screenToDelete . _ id === state . selectedScreen Id) {
state . selectedScreenId = null
}
}
return state
@ -168,11 +174,12 @@ export const getFrontendStore = () => {
layouts : {
select : layoutId => {
store . update ( state => {
const layout = store . actions . layouts . find ( layoutId )
const layout =
store . actions . layouts . find ( layoutId ) || get ( store ) . layouts [ 0 ]
if ( ! layout ) return
state . currentFrontEndType = FrontendTypes . LAYOUT
state . currentView = "detail"
state . curren tAss etId = layout . _ id
state . sele ctedLayou tId = layout . _ id
state . selectedComponentId = layout . props ? . _ id
return state
} )
@ -215,16 +222,17 @@ export const getFrontendStore = () => {
const response = await api . delete (
` /api/layouts/ ${ layoutToDelete . _ id } / ${ layoutToDelete . _ rev } `
)
if ( response . status !== 200 ) {
const json = await response . json ( )
throw new Error ( json . message )
}
store . update ( state => {
state . layouts = state . layouts . filter (
layout => layout . _ id !== layoutToDelete . _ id
)
if ( layoutToDelete . _ id === state . selectedLayoutId ) {
state . selectedLayoutId = get ( mainLayout ) . _ id
}
return state
} )
} ,