feat: add communication method without return value that communicate with devstar-home
This commit is contained in:
14
src/home.ts
14
src/home.ts
@@ -9,7 +9,7 @@ export default class DSHome {
|
|||||||
private remoteContainer: RemoteContainer;
|
private remoteContainer: RemoteContainer;
|
||||||
private user: User;
|
private user: User;
|
||||||
private devstarHomePageUrl: string;
|
private devstarHomePageUrl: string;
|
||||||
private devstarDomain: string|undefined
|
private devstarDomain: string | undefined
|
||||||
|
|
||||||
constructor(context: vscode.ExtensionContext) {
|
constructor(context: vscode.ExtensionContext) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
@@ -40,6 +40,11 @@ export default class DSHome {
|
|||||||
panel.webview.onDidReceiveMessage(
|
panel.webview.onDidReceiveMessage(
|
||||||
async (message) => {
|
async (message) => {
|
||||||
const data = message.data
|
const data = message.data
|
||||||
|
const need_return = message.need_return
|
||||||
|
if (!need_return) {
|
||||||
|
// ================= don't need return ==============
|
||||||
|
} else {
|
||||||
|
// ================= need return ====================
|
||||||
switch (message.command) {
|
switch (message.command) {
|
||||||
// ----------------- frequent -----------------------
|
// ----------------- frequent -----------------------
|
||||||
case 'getUserToken':
|
case 'getUserToken':
|
||||||
@@ -75,7 +80,7 @@ export default class DSHome {
|
|||||||
this.remoteContainer.openRemoteFolder(data.host, data.username, data.port, data.path);
|
this.remoteContainer.openRemoteFolder(data.host, data.username, data.port, data.path);
|
||||||
break;
|
break;
|
||||||
case 'getDevstarDomain':
|
case 'getDevstarDomain':
|
||||||
panel.webview.postMessage({command: 'getDevstarDomain', data:{ devstarDomain: this.devstarDomain}})
|
panel.webview.postMessage({ command: 'getDevstarDomain', data: { devstarDomain: this.devstarDomain } })
|
||||||
break;
|
break;
|
||||||
// ----------------- not frequent -----------------------
|
// ----------------- not frequent -----------------------
|
||||||
case 'setUserToken':
|
case 'setUserToken':
|
||||||
@@ -129,6 +134,7 @@ export default class DSHome {
|
|||||||
}
|
}
|
||||||
panel.webview.postMessage({ command: 'getDefaultPublicKey', data: { defaultPublicKey: defaultPublicKey } })
|
panel.webview.postMessage({ command: 'getDefaultPublicKey', data: { defaultPublicKey: defaultPublicKey } })
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
undefined,
|
undefined,
|
||||||
this.context.subscriptions
|
this.context.subscriptions
|
||||||
@@ -183,7 +189,7 @@ export default class DSHome {
|
|||||||
async function communicateVSCode(command, data) {
|
async function communicateVSCode(command, data) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
// request to vscode
|
// request to vscode
|
||||||
vscode.postMessage({ command: command, data: data })
|
vscode.postMessage({ command: command, need_return: true, data: data })
|
||||||
|
|
||||||
function handleResponse(event) {
|
function handleResponse(event) {
|
||||||
const jsonData = event.data;
|
const jsonData = event.data;
|
||||||
@@ -223,6 +229,8 @@ export default class DSHome {
|
|||||||
if (iframe && iframe.contentWindow) {
|
if (iframe && iframe.contentWindow) {
|
||||||
iframe.contentWindow.postMessage({ action: actionFromHome, data: dataFromVSCodeResponse }, '*')
|
iframe.contentWindow.postMessage({ action: actionFromHome, data: dataFromVSCodeResponse }, '*')
|
||||||
}
|
}
|
||||||
|
} else if (jsonData.target === 'vscode_no_return') {
|
||||||
|
vscode.postMessage({ command: jsonData.action, need_return: false, data: jsonData.data })
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error parsing message:', error);
|
console.error('Error parsing message:', error);
|
||||||
|
Reference in New Issue
Block a user