refactor: no longer set username and userToken as member variables in user class and get them only by global state

This commit is contained in:
Levi Yan
2025-06-22 16:00:29 +08:00
parent 4ab517bc44
commit 12e950bf3e

View File

@@ -12,12 +12,11 @@ const sshpk = require('sshpk');
export default class User {
private context: vscode.ExtensionContext;
private username: string | undefined;
private userToken: string | undefined;
private usernameKey: string = 'devstarUsername'
private userTokenKey: string = 'devstarUserToken'
// 修改devstarDomain会影响hostname, username key, user token key
private devstarDomain: string;
private devstarHostname: string;
private usernameKey: string; // devstarUsername_<devstarDomain>
private userTokenKey: string; // devstarUserToken_<devstarDomain>
/**
* devstarDomain由配置项提供
@@ -34,8 +33,6 @@ export default class User {
constructor(context: vscode.ExtensionContext, devstarDomain?: string) {
this.context = context;
this.username = this.context.globalState.get(this.usernameKey);
this.userToken = this.context.globalState.get(this.userTokenKey);
// 提取devstar domain的主域名用于本地ssh key的命名
if (devstarDomain != undefined && devstarDomain != "") {
@@ -66,6 +63,8 @@ export default class User {
this.devstarDomain = devstarDomain.endsWith('/') ? devstarDomain.slice(0, -1) : devstarDomain
const parsedUrl = new URL(devstarDomain)
this.devstarHostname = parsedUrl.hostname.replace(/\./g, '_');
this.usernameKey = "devstarUsername_" + this.devstarDomain
this.userTokenKey = "devstarUserToken_" + this.devstarDomain
} else {
console.error(vscode.l10n.t("devstar domain is null"))
}
@@ -133,16 +132,15 @@ export default class User {
}
public getUsernameFromLocal(): string | undefined {
return this.username;
return this.context.globalState.get(this.usernameKey);
}
public getUserTokenFromLocal(): string | undefined {
return this.userToken;
return this.context.globalState.get(this.userTokenKey);
}
public setUsernameToLocal(username: string) {
this.context.globalState.update(this.usernameKey, username);
this.username = username;
if (username !== "") {
console.log('Username has been stored.')
} else {
@@ -152,7 +150,6 @@ export default class User {
public setUserTokenToLocal(userToken: string) {
this.context.globalState.update(this.userTokenKey, userToken)
this.userToken = userToken
if (userToken !== "") {
console.log('Token has been stored.');
} else {
@@ -169,19 +166,23 @@ export default class User {
}
public getUserPrivateKeyPath(): string {
if (!this.isLogged) {
if (!this.isLogged()) {
return '';
} else {
const username: string|undefined = this.context.globalState.get(this.usernameKey)
// islogged为trueusername不为空
return path.join(os.homedir(), '.ssh', `id_rsa_${username}_${this.devstarHostname}`)
}
return path.join(os.homedir(), '.ssh', `id_rsa_${this.username}_${this.devstarHostname}`)
}
public getUserPublicKeyPath(): string {
if (!this.isLogged) {
if (!this.isLogged()) {
return '';
} else {
const username: string|undefined = this.context.globalState.get(this.usernameKey)
// islogged为trueusername不为空
return path.join(os.homedir(), '.ssh', `id_rsa_${username}_${this.devstarHostname}.pub`)
}
return path.join(os.homedir(), '.ssh', `id_rsa_${this.username}_${this.devstarHostname}.pub`)
}
public existUserPublicKey(): boolean {
@@ -249,7 +250,8 @@ export default class User {
this.updateLocalUserPrivateKeyPath(this.getUserPrivateKeyPath())
console.log(`Update local user private key path.`)
} catch (error) {
console.error(`Failed to write public/private key into the user(${this.username}) ssh public/key file: `, error);
const username: string|undefined = this.context.globalState.get(this.usernameKey)
console.error(`Failed to write public/private key into the user(${username}) ssh public/key file: `, error);
}
}
}