Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions packages/common/component/MetaBindVariable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -395,8 +395,9 @@ export default {

// 如果新旧值不一样就显示未保存状态
if (oldValue !== variableContent) {
const { pageState } = useCanvas()
pageState.isSaved = false
const { setSaved } = useCanvas()

setSaved(false)
variableContent = formatString(variableContent, 'javascript')
}

Expand Down
4 changes: 2 additions & 2 deletions packages/controller/src/useSaveLocal.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { getGlobalConfig } from './globalConfig'
const bridge = window.vscodeBridge

const confirmSaveLocal = async () => {
const { pageState } = useCanvas()
const { pageState, setSaved } = useCanvas()
const currentPageId = pageState.currentPageId || pageState.currentPage.id
const currentPageName = pageState.currentPageName || pageState.currentPage.name

Expand All @@ -42,7 +42,7 @@ const confirmSaveLocal = async () => {

const message = savePage.data.isSuccess ? '保存文件到本地成功' : errorMsg

savePage.data.isSuccess && (pageState.isSaved = true)
savePage.data.isSuccess && setSaved(true)

Modal.message({ message, status: 'error', duration: '5000', top: 60 })
}
Expand Down
2 changes: 1 addition & 1 deletion packages/plugins/data/src/Main.vue
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ export default {
// 保存数据
add(name, variable)
isPanelShow.value = false
useCanvas().pageState.isSaved = false
setSaved(false)

// 触发画布渲染
setState({ [name]: variable })
Expand Down
2 changes: 1 addition & 1 deletion packages/plugins/script/src/js/method.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ const saveMethods = () => {

saveMethod({ name, content })
})
useCanvas().pageState.isSaved = false
useCanvas().setSaved(false)
state.isChanged = false
useNotify({
type: 'success',
Expand Down
39 changes: 17 additions & 22 deletions packages/toolbars/save/src/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
*
*/

import { reactive, ref } from 'vue'
import { useBlock, useCanvas, useLayout, useNotify, usePage } from '@opentiny/tiny-engine-controller'
import { getSchema, setSchema } from '@opentiny/tiny-engine-canvas'
import { constants } from '@opentiny/tiny-engine-utils'
import { reactive, ref, watch } from 'vue'
import { Loading } from '@opentiny/vue'
const { pageState, isSaved, isBlock } = useCanvas()
import { handlePageUpdate } from '@opentiny/tiny-engine-common/js/http'

const { pageState, isSaved, isBlock } = useCanvas()
const { PLUGIN_NAME, getPluginApi } = useLayout()
const { getCurrentBlock } = useBlock()
const { PAGE_STATUS } = constants
Expand All @@ -27,7 +27,9 @@ const state = reactive({
originalCode: '',
disabled: false
})

export const isLoading = ref(false)

// 保存或新建区块
const saveBlock = async (pageSchema) => {
const api = getPluginApi(PLUGIN_NAME.BlockManage)
Expand All @@ -48,36 +50,43 @@ const savePage = async (pageSchema) => {
const params = {
page_content: pageSchema
}

isLoading.value = true
await handlePageUpdate(currentPage.id, { ...currentPage, ...params })
isLoading.value = false
}

export const saveCommon = (value) => {
const pageSchema = JSON.parse(value)

pageState.pageSchema = pageSchema
// setSchema 是异步,保存直接传递当前 schema
setSchema(pageSchema)

if (pageSettingState?.isAIPage) {
if (isTemporaryPage.saved) {
isTemporaryPage.saved = false
}

// 如果当前页面没有ID,为临时生成的页面,则打开新建页面面板
isTemporaryPage.saved = true
const pageContent = 'page_content'

pageSettingState.currentPageData[pageContent] = pageSchema

return
}
isBlock() ? saveBlock(pageSchema) : savePage(pageSchema)

return isBlock() ? saveBlock(pageSchema) : savePage(pageSchema)
}
export const openCommon = async () => {
if (isSaved() || state.disabled) {
return
}

const pageStatus = useLayout().layoutState?.pageStatus
const curPageState = pageStatus?.state
const pageInfo = pageStatus?.data

const ERR_MSG = {
[PAGE_STATUS.Release]: '当前页面未锁定,请先锁定再保存',
[PAGE_STATUS.Empty]: '当前应用无页面,请先新建页面再保存',
Expand All @@ -96,13 +105,9 @@ export const openCommon = async () => {
}

state.disabled = true
let loadingInstance = Loading.service({
lock: true,
text: '保存中',
background: 'rgba(0, 0, 0, 0.5)'
})

const pageSchema = getSchema()

state.code = JSON.stringify(pageSchema || {}, null, 2)

// 获取请求前schema代码,暂时先屏蔽
Expand All @@ -119,17 +124,7 @@ export const openCommon = async () => {
}
*/

saveCommon(state.code)

if (isLoading.value) {
saveCommon(state.code).finally(() => {
state.disabled = false
}
watch(
() => pageState.isSaved,
(value) => {
if (value) {
loadingInstance.close()
}
}
)
})
}