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':
|
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()) {
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user