Fix(View & Execute): Fixed the bug of being able to open Desktop tools in the web environment

This commit is contained in:
2024-10-31 11:48:36 +08:00
parent 53f6680dfd
commit 550383bfec
3 changed files with 34 additions and 10 deletions

View File

@@ -64,8 +64,9 @@ const Code = () => {
render(response.data!) render(response.data!)
break break
case DATABASE_NO_RECORD_FOUND: case DATABASE_NO_RECORD_FOUND:
void message.error('未找到指定工具') message.error('未找到指定工具').then(() => {
navigateToRepository(navigate) navigateToRepository(navigate)
})
break break
default: default:
void message.error('获取工具信息失败,请稍后重试') void message.error('获取工具信息失败,请稍后重试')

View File

@@ -1,6 +1,6 @@
import useStyles from '@/assets/css/pages/system/tools/execute.style' import useStyles from '@/assets/css/pages/system/tools/execute.style'
import { DATABASE_NO_RECORD_FOUND, DATABASE_SELECT_SUCCESS } from '@/constants/common.constants' import { DATABASE_NO_RECORD_FOUND, DATABASE_SELECT_SUCCESS } from '@/constants/common.constants'
import { message } from '@/util/common' import { checkDesktop, message } from '@/util/common'
import { navigateToTools } from '@/util/navigation' import { navigateToTools } from '@/util/navigation'
import { r_sys_tool_get_one } from '@/services/system' import { r_sys_tool_get_one } from '@/services/system'
import FitFullscreen from '@/components/common/FitFullscreen' import FitFullscreen from '@/components/common/FitFullscreen'
@@ -20,7 +20,18 @@ const Execute = () => {
const render = (toolVo: ToolVo) => { const render = (toolVo: ToolVo) => {
try { try {
setIsMobileMode(toolVo.platform === 'ANDROID') switch (toolVo.platform) {
case 'ANDROID':
setIsMobileMode(true)
break
case 'DESKTOP':
if (!checkDesktop()) {
message.warning('此应用需要桌面端环境,请在桌面端打开').then(() => {
navigateToTools(navigate)
})
return
}
}
const baseDist = base64ToStr(toolVo.base.dist.data!) const baseDist = base64ToStr(toolVo.base.dist.data!)
const files = base64ToFiles(toolVo.source.data!) const files = base64ToFiles(toolVo.source.data!)
@@ -58,8 +69,9 @@ const Execute = () => {
render(response.data!) render(response.data!)
break break
case DATABASE_NO_RECORD_FOUND: case DATABASE_NO_RECORD_FOUND:
void message.error('未找到指定工具') message.error('未找到指定工具').then(() => {
navigateToTools(navigate) navigateToTools(navigate)
})
break break
default: default:
void message.error('获取工具信息失败,请稍后重试') void message.error('获取工具信息失败,请稍后重试')

View File

@@ -1,6 +1,6 @@
import useStyles from '@/assets/css/pages/tools/view.style' import useStyles from '@/assets/css/pages/tools/view.style'
import { DATABASE_NO_RECORD_FOUND, DATABASE_SELECT_SUCCESS } from '@/constants/common.constants' import { DATABASE_NO_RECORD_FOUND, DATABASE_SELECT_SUCCESS } from '@/constants/common.constants'
import { message } from '@/util/common' import { checkDesktop, message } from '@/util/common'
import { getLoginStatus } from '@/util/auth' import { getLoginStatus } from '@/util/auth'
import { navigateToRepository, navigateToRoot, navigateToView } from '@/util/navigation' import { navigateToRepository, navigateToRoot, navigateToView } from '@/util/navigation'
import { r_tool_detail } from '@/services/tool' import { r_tool_detail } from '@/services/tool'
@@ -20,10 +20,21 @@ const View = () => {
}) })
const [isLoading, setIsLoading] = useState(false) const [isLoading, setIsLoading] = useState(false)
const [compiledCode, setCompiledCode] = useState('') const [compiledCode, setCompiledCode] = useState('')
const [isAndroid, setIsAndroid] = useState(false) const [isMobileMode, setIsMobileMode] = useState(false)
const render = (toolVo: ToolVo) => { const render = (toolVo: ToolVo) => {
setIsAndroid(toolVo.platform === 'ANDROID') switch (toolVo.platform) {
case 'ANDROID':
setIsMobileMode(true)
break
case 'DESKTOP':
if (!checkDesktop()) {
message.warning('此应用需要桌面端环境,请在桌面端打开').then(() => {
navigateToRepository(navigate)
})
return
}
}
if (username === '!') { if (username === '!') {
try { try {
const baseDist = base64ToStr(toolVo.base.dist.data!) const baseDist = base64ToStr(toolVo.base.dist.data!)
@@ -122,7 +133,7 @@ const View = () => {
<Playground.Output.Preview.Render <Playground.Output.Preview.Render
iframeKey={`${username}:${toolId}:${ver}`} iframeKey={`${username}:${toolId}:${ver}`}
compiledCode={compiledCode} compiledCode={compiledCode}
mobileMode={isAndroid} mobileMode={isMobileMode}
/> />
</Card> </Card>
</FitFullscreen> </FitFullscreen>