45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import * as vscode from "vscode";
|
|
import Harvest from "../../Entities/Harvest"
|
|
import UserInterface from "../../Entities/Interfaces/UserInterface";
|
|
import User from "../../Entities/User"
|
|
import getUser from "../getUser";
|
|
|
|
function PunchTime (context: vscode.ExtensionContext): vscode.Disposable {
|
|
return vscode.commands.registerCommand('harvest-vscode.punchTime', async () => {
|
|
const harvest = new Harvest()
|
|
let user = new User()
|
|
|
|
const accountId: string = context.globalState.get('accountId') || ''
|
|
const accessToken: string = context.globalState.get('accessToken') || ''
|
|
|
|
if (!accountId || !accessToken) {
|
|
vscode.window.showErrorMessage('Run "Harvest: Login" Command before trying to puch time')
|
|
return
|
|
}
|
|
|
|
harvest.accountId = accountId
|
|
harvest.accessToken = accessToken
|
|
|
|
if (!user.id) {
|
|
let userProps: UserInterface
|
|
try {
|
|
userProps = await getUser()
|
|
} catch (err) {
|
|
console.log(err)
|
|
vscode.window.showErrorMessage('Could not retrieve user data from Harvest')
|
|
return
|
|
}
|
|
if (!userProps.id) {
|
|
vscode.window.showErrorMessage('Could not retrieve user data from Harvest')
|
|
return
|
|
}
|
|
user.destructor()
|
|
user = new User(userProps)
|
|
vscode.window.showInformationMessage('Successfully authenticated with Harvest')
|
|
}
|
|
|
|
console.log(user)
|
|
})
|
|
}
|
|
|
|
export default PunchTime |