refactor(remote-container): bring devstarDomain param for /openProjectSkippingLoginCheck only when devstarDomain_sessionId exists and isn't null
This commit is contained in:
		
							
								
								
									
										29
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								src/main.ts
									
									
									
									
									
								
							@@ -122,27 +122,30 @@ export class DevStarExtension {
 | 
			
		||||
          const path = params.get('path');
 | 
			
		||||
          const devstarDomain = params.get('devstar_domain')
 | 
			
		||||
 | 
			
		||||
          if (host && hostname && port && username && path && devstarDomain) {
 | 
			
		||||
          if (host && hostname && port && username && path) {
 | 
			
		||||
            const container_host = host;
 | 
			
		||||
            const container_hostname = hostname
 | 
			
		||||
            const container_port = parseInt(port, 10);
 | 
			
		||||
            const container_username = username;
 | 
			
		||||
            const project_path = decodeURIComponent(path);
 | 
			
		||||
 | 
			
		||||
            // 修改user、remote-container、home中的devstar domain和hostname
 | 
			
		||||
            this.user.setDevstarDomainAndHostname(devstarDomain)
 | 
			
		||||
            this.remoteContainer.setUser(this.user)
 | 
			
		||||
            this.dsHome.setDevstarDomain(devstarDomain)
 | 
			
		||||
            this.dsHome.setUser(this.user)
 | 
			
		||||
            this.dsHome.setRemoteContainer(this.remoteContainer)
 | 
			
		||||
            vscode.commands.executeCommand('devstar.showHome');
 | 
			
		||||
            if (devstarDomain != undefined && devstarDomain != "") {
 | 
			
		||||
              // 修改user、remote-container、home中的devstar domain和hostname
 | 
			
		||||
              this.user.setDevstarDomain(devstarDomain)
 | 
			
		||||
              this.remoteContainer.setUser(this.user)
 | 
			
		||||
              this.dsHome.setDevstarDomainAndHomePageURL(devstarDomain)
 | 
			
		||||
              this.dsHome.setUser(this.user)
 | 
			
		||||
              this.dsHome.setRemoteContainer(this.remoteContainer)
 | 
			
		||||
              vscode.commands.executeCommand('devstar.showHome');
 | 
			
		||||
 | 
			
		||||
            // 如果devstarDomain的值不为空,将其存储在global state中
 | 
			
		||||
            if (devstarDomain != "") {
 | 
			
		||||
              this.context.globalState.update("devstarDomain", devstarDomain)
 | 
			
		||||
              // 将devstar domain存在global state中
 | 
			
		||||
              context.globalState.update('devstarDomain', devstarDomain)
 | 
			
		||||
 | 
			
		||||
              await this.remoteContainer.firstOpenProject(container_host, container_hostname, container_port, container_username, project_path, this.context)
 | 
			
		||||
            } else {
 | 
			
		||||
              // devstarDomain参数不存在,则不存储,使用默认用户配置
 | 
			
		||||
              await this.remoteContainer.firstOpenProject(container_host, container_hostname, container_port, container_username, project_path, this.context)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            await this.remoteContainer.firstOpenProject(container_host, container_hostname, container_port, container_username, project_path, this.context)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -37,28 +37,37 @@ export default class RemoteContainer {
 | 
			
		||||
      vscode.commands.executeCommand('workbench.action.terminal.newLocal').then(() => {
 | 
			
		||||
        const terminal = vscode.window.terminals[vscode.window.terminals.length - 1];
 | 
			
		||||
        if (terminal) {
 | 
			
		||||
          let devstarDomain: string|undefined = context.globalState.get("devstarDomain_"+vscode.env.sessionId)
 | 
			
		||||
          if (devstarDomain !=undefined && devstarDomain != "") {
 | 
			
		||||
            // 使用global state中devstarDomain_<sessionId>存储的domain
 | 
			
		||||
            // 清理键值对
 | 
			
		||||
            context.globalState.update("devstarDomain_"+vscode.env.sessionId, undefined)
 | 
			
		||||
          } else {
 | 
			
		||||
            devstarDomain = ""
 | 
			
		||||
          }
 | 
			
		||||
          let devstarDomain: string | undefined = context.globalState.get("devstarDomain_" + vscode.env.sessionId)
 | 
			
		||||
          if (devstarDomain == undefined || devstarDomain == "")
 | 
			
		||||
            devstarDomain = undefined
 | 
			
		||||
 | 
			
		||||
          // vscode协议
 | 
			
		||||
          // 根据系统+命令行版本确定命令
 | 
			
		||||
          const semver = require('semver')
 | 
			
		||||
          const powershellVersion = context.globalState.get('powershellVersion')
 | 
			
		||||
          const powershell_semver_compatible_version = semver.coerce(powershellVersion)
 | 
			
		||||
          if (powershellVersion === undefined)
 | 
			
		||||
            terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`)
 | 
			
		||||
          else if (semver.satisfies(powershell_semver_compatible_version, ">=5.1.26100")) {
 | 
			
		||||
            // win & powershell >= 5.1.26100.0
 | 
			
		||||
            terminal.sendText(`code --new-window ; code --% --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`)
 | 
			
		||||
 | 
			
		||||
          if (devstarDomain === undefined) {
 | 
			
		||||
            // 不传递devstarDomain
 | 
			
		||||
            if (powershellVersion === undefined)
 | 
			
		||||
              terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}"`)
 | 
			
		||||
            else if (semver.satisfies(powershell_semver_compatible_version, ">=5.1.26100")) {
 | 
			
		||||
              // win & powershell >= 5.1.26100.0
 | 
			
		||||
              terminal.sendText(`code --new-window ; code --% --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}"`)
 | 
			
		||||
            } else {
 | 
			
		||||
              // win & powershell < 5.1.26100.0
 | 
			
		||||
              terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}"`)
 | 
			
		||||
            }
 | 
			
		||||
          } else {
 | 
			
		||||
            // win & powershell < 5.1.26100.0
 | 
			
		||||
            terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`)
 | 
			
		||||
            if (powershellVersion === undefined)
 | 
			
		||||
              terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`)
 | 
			
		||||
            else if (semver.satisfies(powershell_semver_compatible_version, ">=5.1.26100")) {
 | 
			
		||||
              // win & powershell >= 5.1.26100.0
 | 
			
		||||
              terminal.sendText(`code --new-window ; code --% --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`)
 | 
			
		||||
            } else {
 | 
			
		||||
              // win & powershell < 5.1.26100.0
 | 
			
		||||
              terminal.sendText(`code --new-window && code --open-url "vscode://mengning.devstar/openProjectSkippingLoginCheck?host=${host}&hostname=${hostname}&port=${port}&username=${username}&path=${path}&devstar_domain=${devstarDomain}"`)
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user