liveperson-functions-cli
Version:
LivePerson Functions CLI
60 lines • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogoutController = void 0;
const logout_view_1 = require("../view/logout.view");
const file_service_1 = require("../service/file.service");
class LogoutController {
constructor({ logoutView = new logout_view_1.LogoutView(), fileService = new file_service_1.FileService(), } = {}) {
this.logoutView = logoutView;
this.fileService = fileService;
this.tempFile = {};
}
/**
* Performs the logout with the passed flags.
* @param {ILoginFlags} - passed flags
* @returns {Promise<void>} - logout view
* @memberof LogoutController
*/
async logout(inputFlags = {}) {
this.tempFile = await this.fileService.getTempFile();
if (!this.tempFile) {
this.logoutView.showNoAccountAvailableInfo();
return;
}
const accountIds = Object.keys(this.tempFile);
let selectedAccountId;
if (inputFlags.accountId) {
selectedAccountId = inputFlags.accountId;
}
else {
const answer = await this.logoutView.showAccountIdSelection(accountIds, inputFlags.delete);
selectedAccountId = answer.accountId;
}
if (inputFlags.delete) {
delete this.tempFile[selectedAccountId];
if (Object.keys(this.tempFile).length === 0) {
this.fileService.deleteTempFile();
}
else {
await this.fileService.writeTempFile({
...this.tempFile,
});
}
this.logoutView.showDeleteSuccessMessage();
}
else {
await this.fileService.writeTempFile({
...this.tempFile,
[selectedAccountId]: {
...this.tempFile[selectedAccountId],
token: null,
csrf: null,
sessionId: null,
},
});
this.logoutView.showLogoutSuccessMessage();
}
}
}
exports.LogoutController = LogoutController;
//# sourceMappingURL=logout.controller.js.map