UNPKG

liveperson-functions-cli

Version:
60 lines 2.17 kB
"use strict"; 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