upload home and index page

This commit is contained in:
Levi Yan
2024-10-12 11:38:28 +08:00
parent 535ede85ee
commit 8cc15e7cbd
2 changed files with 802 additions and 12 deletions

View File

@@ -14,19 +14,24 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
</head>
<body>
<iframe src="http://localhost:8080/test/embedded.html"
<iframe
id="embedded-devstar"
src="http://localhost:8080/test/home.html"
width="100%"
height="50%"
height="100%"
frameborder="0"
style="border: 0; left: 0; right: 0; bottom: 0; top: 0; position:absolute;">
</iframe>
<!-- <iframe src="http://www.devstar.cn"
<!-- <iframe
id="embedded-devstar"
src="https://www.devstar.cn/spa.html"
width="100%"
height="100%"
frameborder="0"
style="border: 0; left: 0; right: 0; bottom: 0; top: 0; position:absolute;">
</iframe> -->
<script>
const vscode = acquireVsCodeApi();
@@ -46,21 +51,69 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
vscode.postMessage({ command: 'openRemoteFolder', host: host, path: path });
}
async function biCommunication2Vscode(command, data) {
return new Promise((resolve, reject) => {
// request to vscode
vscode.postMessage({ command: command, data: data })
function handleResponse(event) {
const jsonData = event.data;
if (jsonData.command === command) {
// return vscode response
console.log("biCommunication2Vscode", jsonData.data)
window.removeEventListener('message', handleResponse) // 清理监听器
resolve(jsonData.data)
}
}
window.addEventListener('message', handleResponse)
setTimeout(() => {
window.removeEventListener('message', handleResponse)
reject('timeout')
}, 5000); // 5秒超时
})
}
// 监听子页面的消息
window.addEventListener('message', (event) => {
window.addEventListener('message', async (event) => {
// 出于安全考虑,检查 event.origin 是否是你预期的源
// if (event.origin !== "http://expected-origin.com") {
// return;
// }
try {
const data = JSON.parse(event.data);
if (data.action === 'firstOpenRemoteFolder') {
console.log('Received message:', data);
firstOpenRemoteFolderWithData(data.host, data.username, data.password, data.port, data.path);
} else if (data.action === 'openRemoteFolder') {
console.log('Received message:', data);
openRemoteFolderWithData(data.host, data.path);
const jsonData = event.data;
if (jsonData.action === 'firstOpenRemoteFolder') {
console.log('Received message:', jsonData);
firstOpenRemoteFolderWithData(jsonData.host, jsonData.username, jsonData.password, jsonData.port, jsonData.path);
} else if (jsonData.action === 'openRemoteFolder') {
console.log('Received message:', jsonData);
openRemoteFolderWithData(jsonData.host, jsonData.path);
} else if (jsonData.action === 'getUserToken') {
// request user token from vscode global state
const data = await biCommunication2Vscode('getUserToken', {})
var iframe = document.getElementById('embedded-devstar');
if (iframe && iframe.contentWindow) {
iframe.contentWindow.postMessage({ action: 'getUserToken', data: data}, '*');
}
} else if (jsonData.action === 'setUserToken') {
// set user token to vscode global state
await biCommunication2Vscode('setUserToken', jsonData.data)
.then((data) => {
console.log(data)
var iframe = document.getElementById('embedded-devstar');
if (iframe && iframe.contentWindow) {
iframe.contentWindow.postMessage({ action: 'setUserToken', data: data}, '*');
}
})
.catch((err) => {
if (iframe && iframe.contentWindow) {
iframe.contentWindow.postMessage({ action: 'setUserToken', data: {ok: false}}, '*');
}
});
}
} catch (error) {
console.error('Error parsing message:', error);