refactor: change the return value of uploadPublicKey as promise<string>
This commit is contained in:
		@@ -21,40 +21,44 @@ export default class DevstarAPIHandler {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // 上传公钥
 | 
			
		||||
  public async uploadUserPublicKey() {
 | 
			
		||||
    // 获取机器名称
 | 
			
		||||
    const machineName = os.hostname();
 | 
			
		||||
    // 组成公钥名称
 | 
			
		||||
    const timestamp = Date.now();
 | 
			
		||||
    const keyTitle = `${this.user.getUsernameFromLocal()}-${machineName}-${timestamp}`
 | 
			
		||||
    const postData = {
 | 
			
		||||
      "key": this.user.getUserPublicKey(),
 | 
			
		||||
      "title": keyTitle
 | 
			
		||||
    }
 | 
			
		||||
  public async uploadUserPublicKey(): Promise<string> {
 | 
			
		||||
    return new Promise(async (resolve) => {
 | 
			
		||||
      // 获取机器名称
 | 
			
		||||
      const machineName = os.hostname();
 | 
			
		||||
      // 组成公钥名称
 | 
			
		||||
      const timestamp = Date.now();
 | 
			
		||||
      const keyTitle = `${this.user.getUsernameFromLocal()}-${machineName}-${timestamp}`
 | 
			
		||||
      const postData = {
 | 
			
		||||
        "key": this.user.getUserPublicKey(),
 | 
			
		||||
        "title": keyTitle
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    const uploadUrl = this.devstarDomain + `/api/v1/user/keys`
 | 
			
		||||
      const uploadUrl = this.devstarDomain + `/api/v1/user/keys`
 | 
			
		||||
 | 
			
		||||
      // 上传公钥
 | 
			
		||||
      fetch(uploadUrl, {
 | 
			
		||||
        method: 'POST',
 | 
			
		||||
        headers: {
 | 
			
		||||
          'Content-Type': 'application/json',
 | 
			
		||||
          'Authorization': 'token ' + this.user.getUserTokenFromLocal()
 | 
			
		||||
        },
 | 
			
		||||
        body: JSON.stringify(postData)
 | 
			
		||||
      })
 | 
			
		||||
        .then(response => {
 | 
			
		||||
          response.json().then(data => {
 | 
			
		||||
            if (response.ok) {
 | 
			
		||||
              console.log("Successfully upload new created public key.\n", data)
 | 
			
		||||
              resolve("ok")
 | 
			
		||||
            } else {
 | 
			
		||||
              throw new Error(`Failed to upload new created public key!\nError: ${data.message}`)
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        .catch(error => {
 | 
			
		||||
          console.error(error);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    // 上传公钥
 | 
			
		||||
    fetch(uploadUrl, {
 | 
			
		||||
      method: 'POST',
 | 
			
		||||
      headers: {
 | 
			
		||||
        'Content-Type': 'application/json',
 | 
			
		||||
        'Authorization': 'token ' + this.user.getUserTokenFromLocal()
 | 
			
		||||
      },
 | 
			
		||||
      body: JSON.stringify(postData)
 | 
			
		||||
    })
 | 
			
		||||
      .then(response => {
 | 
			
		||||
        response.json().then(data => {
 | 
			
		||||
          if (response.ok) {
 | 
			
		||||
            console.log("Successfully upload new created public key.\n", data)
 | 
			
		||||
          } else {
 | 
			
		||||
            throw new Error(`Failed to upload new created public key!\nError: ${data.message}`)
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
      .catch(error => {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
      });
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								src/main.ts
									
									
									
									
									
								
							@@ -45,12 +45,20 @@ export class DevStarExtension {
 | 
			
		||||
                      // 上传公钥
 | 
			
		||||
                      const devstarAPIHandler = new DevstarAPIHandler(this.user)
 | 
			
		||||
                      await devstarAPIHandler.uploadUserPublicKey()
 | 
			
		||||
                      .then(async (res) => {
 | 
			
		||||
                        if (res === "ok") {
 | 
			
		||||
                          // 打开项目
 | 
			
		||||
                          await this.remoteContainer.firstOpenProject(container_host, container_port, container_username, project_path)
 | 
			
		||||
                        }
 | 
			
		||||
                      })
 | 
			
		||||
                    })
 | 
			
		||||
                } else {
 | 
			
		||||
                  // 直接打开项目
 | 
			
		||||
                  await this.remoteContainer.firstOpenProject(container_host, container_port, container_username, project_path)
 | 
			
		||||
                }
 | 
			
		||||
                await this.remoteContainer.firstOpenProject(container_host, container_port, container_username, project_path)
 | 
			
		||||
              } else if (devstar_username === this.user.getUsernameFromLocal()) {
 | 
			
		||||
                // 如果同用户已经登录,则忽略;
 | 
			
		||||
 | 
			
		||||
                // 直接打开项目
 | 
			
		||||
                await this.remoteContainer.firstOpenProject(container_host, container_port, container_username, project_path)
 | 
			
		||||
              } else {
 | 
			
		||||
                // 如果不是同用户,可以选择切换用户,或者不切换登录用户,直接打开容器
 | 
			
		||||
@@ -67,9 +75,17 @@ export class DevStarExtension {
 | 
			
		||||
                        // 上传公钥
 | 
			
		||||
                        const devstarAPIHandler = new DevstarAPIHandler(this.user)
 | 
			
		||||
                        await devstarAPIHandler.uploadUserPublicKey()
 | 
			
		||||
                        .then(async (res) => {
 | 
			
		||||
                          if (res === "ok") {
 | 
			
		||||
                            // 打开项目
 | 
			
		||||
                            await this.remoteContainer.firstOpenProject(container_host, container_port, container_username, project_path)
 | 
			
		||||
                          }
 | 
			
		||||
                        })
 | 
			
		||||
                      })
 | 
			
		||||
                  } else {
 | 
			
		||||
                    // 直接打开项目
 | 
			
		||||
                    await this.remoteContainer.firstOpenProject(container_host, container_port, container_username, project_path)
 | 
			
		||||
                  }
 | 
			
		||||
                  await this.remoteContainer.firstOpenProject(container_host, container_port, container_username, project_path)
 | 
			
		||||
                } else if (selection === 'No') {
 | 
			
		||||
                  await openProjectWithoutLogging(container_host, container_port, container_username, project_path);
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user