feat(home): get user name from vscode and set user name into vscode
This commit is contained in:
20
src/home.ts
20
src/home.ts
@@ -60,8 +60,6 @@ export default class DSHome {
|
||||
}
|
||||
case 'setUserToken':
|
||||
this.user.setUserTokenToLocal(data.userToken)
|
||||
console.log(data.userToken)
|
||||
console.log(this.user.getUserTokenFromLocal())
|
||||
if (data.userToken === this.user.getUserTokenFromLocal()) {
|
||||
panel.webview.postMessage({ command: 'setUserToken', data: {ok: true}})
|
||||
break;
|
||||
@@ -69,6 +67,24 @@ export default class DSHome {
|
||||
panel.webview.postMessage({ command: 'setUserToken', data: {ok: false}})
|
||||
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':
|
||||
var defaultPublicKey;
|
||||
if (utils.existDefaultPublicKey()) {
|
||||
|
@@ -196,6 +196,7 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
|
||||
// Global variables
|
||||
DEVSTAR_HOME = "https://devstar.cn"
|
||||
var USERTOKEN = null
|
||||
var USERNAME = null
|
||||
var REPOLIST = []
|
||||
var PROJECTLIST = []
|
||||
|
||||
@@ -216,7 +217,15 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
|
||||
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()
|
||||
} else {
|
||||
// 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) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch(DEVSTAR_HOME + '/api/devcontainer/user', {
|
||||
@@ -332,6 +358,8 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
|
||||
.catch(error => {
|
||||
console.error('Error in setting user token to vscode global state:', error)
|
||||
})
|
||||
setUsernameToVSCode(username)
|
||||
|
||||
closeLoginModal()
|
||||
})
|
||||
.catch(error => {
|
||||
@@ -351,7 +379,7 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
|
||||
return name
|
||||
}
|
||||
|
||||
function logout() {
|
||||
async function logout() {
|
||||
// remove token from global variable and vscode global state
|
||||
USERTOKEN = null
|
||||
communicateVSCodeByWebview('setUserToken', { userToken: ''})
|
||||
@@ -365,9 +393,30 @@ header("Allow: GET, POST, OPTIONS, PUT, DELETE");
|
||||
.catch(error => {
|
||||
console.error('Error in removing user token from vscode global state:', error)
|
||||
})
|
||||
await setUsernameToVSCode('')
|
||||
|
||||
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 ===========================
|
||||
function loadRepositories() {
|
||||
// clear old data
|
||||
|
Reference in New Issue
Block a user