import * as vscode from 'vscode'; import RemoteContainer from './remote-container'; import fetch from './fetch' export default class DSHome { private context: vscode.ExtensionContext; private remoteContainer: RemoteContainer; static defaultUrl = 'http://localhost:8080/tmp/index.html'; constructor(context: vscode.ExtensionContext) { this.context = context; this.remoteContainer = new RemoteContainer() } async toggle(url: string = DSHome.defaultUrl) { console.log(url); const panel = vscode.window.createWebviewPanel( 'myWebview', 'My Webview', vscode.ViewColumn.One, { enableScripts: true, } ); fetch(url).then(async (content) => { panel.webview.html = await this.getWebviewContent(content); }) panel.webview.onDidReceiveMessage( async (message) => { switch (message.command) { case 'firstOpenRemoteFolder': await this.remoteContainer.firstConnect(message.host, message.username, message.password, message.port) .then((result) => { if (result === 'success') { // only success then open folder this.remoteContainer.openRemoteFolder(message.host, message.path); } }) return; case 'openRemoteFolder': this.remoteContainer.openRemoteFolder(message.host, message.path); return; } }, undefined, this.context.subscriptions ); this.context.subscriptions.push(panel) } async getWebviewContent(content: string): Promise { return `${content}` } }