src/bll/commands/signout.ts (20 lines of code) (raw):

import {TeamCityStatusBarItem} from "../../view/teamcitystatusbaritem"; import {CredentialsStore} from "../credentialsstore/credentialsstore"; import {inject, injectable} from "inversify"; import {TYPES} from "../utils/constants"; import {PersistentStorageManager} from "../credentialsstore/persistentstoragemanager"; import {Context} from "../../view/Context"; @injectable() export class SignOut implements Command { public constructor(@inject(TYPES.CredentialsStore) private readonly credentialsStore: CredentialsStore, @inject(TYPES.PersistentStorageManager) private readonly storageManager: PersistentStorageManager, @inject(TYPES.TeamCityStatusBarItem) private readonly statusBarItem: TeamCityStatusBarItem, @inject(TYPES.Context) private readonly myContext: Context) { } public async exec(): Promise<void> { this.credentialsStore.removeCredentials(); this.statusBarItem.setLoggedOut(); this.myContext.setSignIn(false); return this.storageManager.removeCredentials(); } }