Skip to content

Commit

Permalink
fix:loading can't be closed when state is saved (opentiny#87)
Browse files Browse the repository at this point in the history
* fix:loading can't be closed when state is saved

* fix: remove global loading
  • Loading branch information
yaoyun8 authored Nov 16, 2023
1 parent 9911abe commit ac4b52c
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 28 deletions.
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()
}
}
)
})
}

0 comments on commit ac4b52c

Please sign in to comment.