feat(home): get user name from vscode and set user name into vscode

This commit is contained in:
Levi Yan
2024-10-23 16:22:50 +08:00
parent f8544e5282
commit 1cf46c0597
2 changed files with 69 additions and 4 deletions

View File

@@ -60,8 +60,6 @@ export default class DSHome {
} }
case 'setUserToken': case 'setUserToken':
this.user.setUserTokenToLocal(data.userToken) this.user.setUserTokenToLocal(data.userToken)
console.log(data.userToken)
console.log(this.user.getUserTokenFromLocal())
if (data.userToken === this.user.getUserTokenFromLocal()) { if (data.userToken === this.user.getUserTokenFromLocal()) {
panel.webview.postMessage({ command: 'setUserToken', data: {ok: true}}) panel.webview.postMessage({ command: 'setUserToken', data: {ok: true}})
break; break;
@@ -69,6 +67,24 @@ export default class DSHome {
panel.webview.postMessage({ command: 'setUserToken', data: {ok: false}}) panel.webview.postMessage({ command: 'setUserToken', data: {ok: false}})
break; break;
} }
case 'getUsername':
const username = this.user.getUsernameFromLocal()
if (username === undefined) {
panel.webview.postMessage({command: 'getUsername', data: {username: ''}})
break;
} else {
panel.webview.postMessage({command: 'getUsername', data: {username: username}})
break;
}
case 'setUsername':
this.user.setUsernameToLocal(data.username);
if (data.username === this.user.getUsernameFromLocal()) {
panel.webview.postMessage({command: 'setUsername', data: {ok: true}});
break;
} else {
panel.webview.postMessage({command: 'setUsername', data: {ok: false}});
break;
}
case 'getDefaultPublicKey': case 'getDefaultPublicKey':
var defaultPublicKey; var defaultPublicKey;
if (utils.existDefaultPublicKey()) { if (utils.existDefaultPublicKey()) {

View File

@@ -196,6 +196,7 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
// Global variables // Global variables
DEVSTAR_HOME = "https://devstar.cn" DEVSTAR_HOME = "https://devstar.cn"
var USERTOKEN = null var USERTOKEN = null
var USERNAME = null
var REPOLIST = [] var REPOLIST = []
var PROJECTLIST = [] var PROJECTLIST = []
@@ -216,7 +217,15 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
console.error("Failed to get user token from vscode: ", error) console.error("Failed to get user token from vscode: ", error)
}) })
if (USERTOKEN) { await getUsernameFromVSCode()
.then(async username => {
USERNAME = username
})
.catch(error => {
console.error('Failed to get user name from vscode: ', error)
})
if (USERTOKEN && USERNAME) {
loadPageModules() loadPageModules()
} else { } else {
// TODO : do nothing or remind user to login // TODO : do nothing or remind user to login
@@ -245,6 +254,23 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
}) })
} }
async function getUsernameFromVSCode() {
return new Promise(async (resolve, reject) => {
await communicateVSCodeByWebview('getUsername', null)
.then(async data=> {
const username = data.username
if (username === undefined) {
reject('username is undefined')
}
resolve(username)
})
.catch(error => {
reject(error)
})
})
}
function verifyToken(token) { function verifyToken(token) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
fetch(DEVSTAR_HOME + '/api/devcontainer/user', { fetch(DEVSTAR_HOME + '/api/devcontainer/user', {
@@ -332,6 +358,8 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
.catch(error => { .catch(error => {
console.error('Error in setting user token to vscode global state:', error) console.error('Error in setting user token to vscode global state:', error)
}) })
setUsernameToVSCode(username)
closeLoginModal() closeLoginModal()
}) })
.catch(error => { .catch(error => {
@@ -351,7 +379,7 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
return name return name
} }
function logout() { async function logout() {
// remove token from global variable and vscode global state // remove token from global variable and vscode global state
USERTOKEN = null USERTOKEN = null
communicateVSCodeByWebview('setUserToken', { userToken: ''}) communicateVSCodeByWebview('setUserToken', { userToken: ''})
@@ -365,9 +393,30 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
.catch(error => { .catch(error => {
console.error('Error in removing user token from vscode global state:', error) console.error('Error in removing user token from vscode global state:', error)
}) })
await setUsernameToVSCode('')
location.reload() location.reload()
} }
async function setUsernameToVSCode(username) {
var removeUsername = false;
if (username == '') {
removeUsername = true;
}
await communicateVSCodeByWebview('setUsername', {username: username})
.then(result => {
if (result.ok) {
console.log(removeUsername ? 'User name has been removed from vscode': 'User name has been stored in vscode')
} else {
console.error(removeUsername ? 'Failed to removing user name from vscode': 'Failed to store user name in vscode')
}
})
.catch(error => {
console.error("Error happened when setting user name: ", error)
})
}
// ===================================== Repo =========================== // ===================================== Repo ===========================
function loadRepositories() { function loadRepositories() {
// clear old data // clear old data