burst-whale-watch
Version:
An account watcher for Burstcoin
101 lines • 4.13 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const inquirer = require("inquirer");
const core_1 = require("@burstjs/core");
const http_1 = require("@burstjs/http");
const util_1 = require("@burstjs/util");
class ConfigDialog {
constructor() {
this.askPeer = () => __awaiter(this, void 0, void 0, function* () {
const { peer } = yield inquirer
.prompt([
{
type: 'input',
name: 'peer',
message: 'Which peer do you wanna use?',
default: 'https://wallet.burst-alliance.org:8125',
validate: ConfigDialog.validatePeer
}
]);
return peer;
});
this.askAccount = (peer, accounts = []) => __awaiter(this, void 0, void 0, function* () {
const { account, askAgain } = yield inquirer
.prompt([
{
type: 'input',
name: 'account',
message: "Enter an Account to watch (Numeric Id or Burst Address)?",
validate: ConfigDialog.validateAccount.bind(null, peer)
},
{
type: 'confirm',
name: 'askAgain',
message: 'Want to enter another Account (just hit enter for YES)?',
default: true
}
]);
accounts.push(util_1.isBurstAddress(account) ? util_1.convertAddressToNumericId(account) : account);
if (askAgain)
yield this.askAccount(peer, accounts);
return accounts;
});
}
static __getErrorMessage(e) {
if (e instanceof http_1.HttpError) {
return e.message;
}
return typeof e === 'string' ? e : JSON.stringify(e);
}
static validatePeer(peer) {
return __awaiter(this, void 0, void 0, function* () {
const api = core_1.composeApi(new core_1.ApiSettings(peer, '/burst'));
try {
const bottomBar = new inquirer.ui.BottomBar();
bottomBar.updateBottomBar('Contacting peer...');
yield api.network.getBlockchainStatus();
bottomBar.updateBottomBar('ok');
return true;
}
catch (e) {
return ConfigDialog.__getErrorMessage(e);
}
});
}
static validateAccount(peer, accountId) {
return __awaiter(this, void 0, void 0, function* () {
const api = core_1.composeApi(new core_1.ApiSettings(peer, '/burst'));
try {
const bottomBar = new inquirer.ui.BottomBar();
bottomBar.updateBottomBar('Validating Account Id');
yield api.account.getAccount(accountId);
bottomBar.updateBottomBar('Ok');
return true;
}
catch (e) {
return ConfigDialog.__getErrorMessage(e);
}
});
}
run() {
return __awaiter(this, void 0, void 0, function* () {
const peer = yield this.askPeer();
const accounts = yield this.askAccount(peer);
return {
peer,
accounts
};
});
}
}
exports.ConfigDialog = ConfigDialog;
//# sourceMappingURL=configDialog.js.map