@payburner/keyburner-sidewinder-core
Version:
Core library for Keyburner Sidewinder
77 lines • 5.09 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 });
exports.UpdateTokenAccountTransactionProcessor = void 0;
const npm_1 = require("@payburner/keyburner-sidewinder-model/dist/npm");
const TransactionProcessorBase_1 = require("./TransactionProcessorBase");
const CommonErrorCodes_1 = require("../model/CommonErrorCodes");
class UpdateTokenAccountTransactionProcessor extends TransactionProcessorBase_1.TransactionProcessorBase {
constructor(globalAccountService, tokenService) {
super(globalAccountService, tokenService);
}
doProcess(decodedTransaction) {
const self = this;
return new Promise((resolve, reject) => {
console.log('Processing create token: ' + decodedTransaction.id);
const updateTokenTransaction = decodedTransaction.payload;
self.getTokenService().getToken(updateTokenTransaction.environment, updateTokenTransaction.token_symbol).then((token) => __awaiter(this, void 0, void 0, function* () {
if (token.token_issuer_address !== decodedTransaction.address) {
resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_ACCOUNT_ONLY_ISSUER_CAN_FREEZE);
return;
}
if (token.token_issuer_address === updateTokenTransaction.account_owner_address) {
resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_ACCOUNT_CAN_NOT_FREEZE_ISSUER);
return;
}
try {
const tokenAccount = yield this.getTokenService().getTokenAccount(updateTokenTransaction.environment, updateTokenTransaction.token_symbol, updateTokenTransaction.account_owner_address);
if (tokenAccount === null) {
resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_ACCOUNT_NOT_FOUND);
return;
}
if (typeof updateTokenTransaction.frozen !== 'undefined' && tokenAccount.frozen !== updateTokenTransaction.frozen) {
if (updateTokenTransaction.frozen) {
console.log('Freezing token account: ' + npm_1.AccountUtils.calculateTokenAccountId(updateTokenTransaction.environment, updateTokenTransaction.token_symbol, updateTokenTransaction.account_owner_address));
self.getTokenService().freezeTokenAccount(token.environment, updateTokenTransaction.token_symbol, updateTokenTransaction.account_owner_address)
.then(function (tokenDescriptor) {
resolve({ status: 200, data: tokenDescriptor });
}).catch(function (error) {
resolve(CommonErrorCodes_1.CommonErrorCodes.SYSTEM_PROBLEM_UPDATING_TOKEN_ACCOUNT);
});
}
else {
console.log('Un-Freezing token account: ' + npm_1.AccountUtils.calculateTokenAccountId(updateTokenTransaction.environment, updateTokenTransaction.token_symbol, updateTokenTransaction.account_owner_address));
self.getTokenService().unFreezeTokenAccount(token.environment, updateTokenTransaction.token_symbol, updateTokenTransaction.account_owner_address)
.then(function (tokenDescriptor) {
resolve({ status: 200, data: tokenDescriptor });
}).catch(function (error) {
resolve(CommonErrorCodes_1.CommonErrorCodes.SYSTEM_PROBLEM_UPDATING_TOKEN_ACCOUNT);
});
}
}
else {
resolve({ status: 500, error_code: 3000, error: 'WTF' });
}
}
catch (error) {
resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_ACCOUNT_NOT_FOUND);
}
})).catch((error) => {
resolve(CommonErrorCodes_1.CommonErrorCodes.TOKEN_NOT_FOUND);
});
});
}
getTransactionType() {
return npm_1.TransactionTypes.UpdateTokenAccount;
}
}
exports.UpdateTokenAccountTransactionProcessor = UpdateTokenAccountTransactionProcessor;
//# sourceMappingURL=UpdateTokenAccountTransactionProcessor.js.map