* Copyright (c) 2023 - present TinyEngine Authors.
* Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.
*
* Use of this source code is governed by an MIT-style license.
*
* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
*
*/
import { Modal } from '@opentiny/vue'
import { useCanvas, getMergeMeta, useEnv } from '@opentiny/tiny-engine-meta-register'
const bridge = window.vscodeBridge
const confirmSaveLocal = async () => {
const { pageState, setSaved } = useCanvas()
const currentPageId = pageState.currentPageId || pageState.currentPage?.id
const currentPageName = pageState.currentPageName || pageState.currentPage?.name
const { VITE_ORIGIN } = useEnv()
const savePage = await bridge.callHandler('save-page', {
api: `${VITE_ORIGIN}/app-service/api/pages/code/${currentPageId}`,
pageName: currentPageName,
pageId: currentPageId,
platformId: getMergeMeta('engine.config')?.platformId
})
if (savePage.error) {
Modal.message({ message: savePage.error.message, status: 'error', duration: '5000', top: 60 })
return
}
const errorMsg = savePage.data.reason
? `保存文件到本地失败!失败原因:${savePage.data.reason}`
: '保存文件到本地失败!'
const message = savePage.data.isSuccess ? '保存文件到本地成功' : errorMsg
if (savePage.data.isSuccess) {
setSaved(true)
}
Modal.message({ message, status: 'error', duration: '5000', top: 60 })
}
const savePageLocal = async () => {
const { currentPageId, currentPageName, currentPage } = useCanvas().pageState
const fileExistRes = await bridge.callHandler('page-is-exist', {
pageName: currentPageName || currentPage?.name,
pageId: currentPageId || currentPage?.id,
platformId: getMergeMeta('engine.config')?.platformId
})
if (fileExistRes.error) {
Modal.message({ message: fileExistRes.error.message, status: 'error', duration: '5000', top: 60 })
return
}
if (!fileExistRes.data.isExist) {
confirmSaveLocal()
return
}
Modal.confirm({
title: '查询本地文件',
message: '本地已经存在同名文件,是否覆盖?'
}).then((res: string) => {
if (res === 'confirm') {
confirmSaveLocal()
}
})
}
export default () => {
return {
confirmSaveLocal,
savePageLocal
}
}