feat(remote): 添加 OpenCode 和 OpenClaw 按钮到设备控制面板
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import React, { useState, useEffect, useCallback, useRef } from 'react'
|
import React, { useState, useEffect, useCallback, useRef } from 'react'
|
||||||
import { Monitor, GitBranch, Settings, Plus, Trash2, GripVertical, Folder } from 'lucide-react'
|
import { Monitor, GitBranch, Settings, Plus, Trash2, GripVertical, Folder, Code, Sparkles } from 'lucide-react'
|
||||||
import { ConfigDialog } from './components/ConfigDialog'
|
import { ConfigDialog } from './components/ConfigDialog'
|
||||||
import { DeleteConfirmDialog } from '@/components/dialogs/DeleteConfirmDialog'
|
import { DeleteConfirmDialog } from '@/components/dialogs/DeleteConfirmDialog'
|
||||||
import type { DeviceInfo, RemoteConfig, RemoteDevice } from './types'
|
import type { DeviceInfo, RemoteConfig, RemoteDevice } from './types'
|
||||||
@@ -193,6 +193,28 @@ export const RemotePage: React.FC = () => {
|
|||||||
selectFile(fileItem)
|
selectFile(fileItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleOpenCode = () => {
|
||||||
|
if (!selectedConfig?.serverHost) {
|
||||||
|
setShowConfig(true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const url = `http://${selectedConfig.serverHost}:${selectedConfig.desktopPort}/opencode`
|
||||||
|
const deviceName = selectedConfig.deviceName ? ` - ${selectedConfig.deviceName}` : ''
|
||||||
|
const fileItem = createRemoteDesktopFileItem(url, `OpenCode${deviceName}`, selectedConfig.deviceName)
|
||||||
|
selectFile(fileItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleOpenClaw = () => {
|
||||||
|
if (!selectedConfig?.serverHost) {
|
||||||
|
setShowConfig(true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const url = `http://${selectedConfig.serverHost}:${selectedConfig.desktopPort}/openclaw`
|
||||||
|
const deviceName = selectedConfig.deviceName ? ` - ${selectedConfig.deviceName}` : ''
|
||||||
|
const fileItem = createRemoteDesktopFileItem(url, `OpenClaw${deviceName}`, selectedConfig.deviceName)
|
||||||
|
selectFile(fileItem)
|
||||||
|
}
|
||||||
|
|
||||||
const handleOpenConfig = () => {
|
const handleOpenConfig = () => {
|
||||||
if (selectedConfig) {
|
if (selectedConfig) {
|
||||||
setEditingDevice(selectedConfig)
|
setEditingDevice(selectedConfig)
|
||||||
@@ -536,7 +558,7 @@ export const RemotePage: React.FC = () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-6 mb-4">
|
<div className="mt-6 mb-4">
|
||||||
<div className="grid grid-cols-1 md:grid-cols-[2fr_1fr] gap-8">
|
<div className="grid grid-cols-[2fr_1fr_1fr] gap-8">
|
||||||
<button
|
<button
|
||||||
onClick={handleOpenRemoteDesktop}
|
onClick={handleOpenRemoteDesktop}
|
||||||
className="rounded-lg overflow-hidden border border-gray-300/40 dark:border-gray-500/50 bg-gray-100/30 dark:bg-gray-800/30 hover:opacity-80 transition-opacity cursor-pointer"
|
className="rounded-lg overflow-hidden border border-gray-300/40 dark:border-gray-500/50 bg-gray-100/30 dark:bg-gray-800/30 hover:opacity-80 transition-opacity cursor-pointer"
|
||||||
@@ -565,6 +587,24 @@ export const RemotePage: React.FC = () => {
|
|||||||
文件传输
|
文件传输
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="grid grid-rows-2 gap-6">
|
||||||
|
<button
|
||||||
|
onClick={handleOpenCode}
|
||||||
|
className="flex items-center justify-center gap-2 text-2xl bg-gray-100/50 dark:bg-gray-700/40 hover:bg-gray-200/60 dark:hover:bg-gray-600/50 rounded-2xl shadow-md hover:shadow-xl transition-all font-medium text-gray-700 dark:text-gray-200 whitespace-nowrap"
|
||||||
|
>
|
||||||
|
<Code size={24} />
|
||||||
|
OpenCode
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
onClick={handleOpenClaw}
|
||||||
|
className="flex items-center justify-center gap-2 text-2xl bg-gray-100/50 dark:bg-gray-700/40 hover:bg-gray-200/60 dark:hover:bg-gray-600/50 rounded-2xl shadow-md hover:shadow-xl transition-all font-medium text-gray-700 dark:text-gray-200 whitespace-nowrap"
|
||||||
|
>
|
||||||
|
<Sparkles size={24} />
|
||||||
|
OpenClaw
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user