mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-06-03 06:56:59 +00:00
85 lines
2.2 KiB
TypeScript
85 lines
2.2 KiB
TypeScript
// @ts-nocheck
|
|
import { QORT_DECIMALS } from '../constants/constants';
|
|
import TransactionBase from './TransactionBase';
|
|
export default class CreatePollTransaction extends TransactionBase {
|
|
constructor() {
|
|
super();
|
|
this.type = 8;
|
|
this._options = [];
|
|
}
|
|
|
|
addOption(option) {
|
|
const optionBytes = this.constructor.utils.stringtoUTF8Array(option);
|
|
const optionLength = this.constructor.utils.int32ToBytes(
|
|
optionBytes.length
|
|
);
|
|
this._options.push({ length: optionLength, bytes: optionBytes });
|
|
}
|
|
|
|
set fee(fee) {
|
|
this._fee = fee * QORT_DECIMALS;
|
|
this._feeBytes = this.constructor.utils.int64ToBytes(this._fee);
|
|
}
|
|
|
|
set ownerAddress(ownerAddress) {
|
|
this._ownerAddress =
|
|
ownerAddress instanceof Uint8Array
|
|
? ownerAddress
|
|
: this.constructor.Base58.decode(ownerAddress);
|
|
}
|
|
|
|
set rPollName(rPollName) {
|
|
this._rPollName = rPollName;
|
|
this._rPollNameBytes = this.constructor.utils.stringtoUTF8Array(
|
|
this._rPollName
|
|
);
|
|
this._rPollNameLength = this.constructor.utils.int32ToBytes(
|
|
this._rPollNameBytes.length
|
|
);
|
|
}
|
|
|
|
set rPollDesc(rPollDesc) {
|
|
this._rPollDesc = rPollDesc;
|
|
this._rPollDescBytes = this.constructor.utils.stringtoUTF8Array(
|
|
this._rPollDesc
|
|
);
|
|
this._rPollDescLength = this.constructor.utils.int32ToBytes(
|
|
this._rPollDescBytes.length
|
|
);
|
|
}
|
|
|
|
set rOptions(rOptions) {
|
|
const optionsArray = rOptions[0].split(', ').map((opt) => opt.trim());
|
|
this._pollOptions = optionsArray;
|
|
|
|
for (let i = 0; i < optionsArray.length; i++) {
|
|
this.addOption(optionsArray[i]);
|
|
}
|
|
|
|
this._rNumberOfOptionsBytes = this.constructor.utils.int32ToBytes(
|
|
optionsArray.length
|
|
);
|
|
}
|
|
|
|
get params() {
|
|
const params = super.params;
|
|
params.push(
|
|
this._ownerAddress,
|
|
this._rPollNameLength,
|
|
this._rPollNameBytes,
|
|
this._rPollDescLength,
|
|
this._rPollDescBytes,
|
|
this._rNumberOfOptionsBytes
|
|
);
|
|
|
|
// Push the dynamic options
|
|
for (let i = 0; i < this._options.length; i++) {
|
|
params.push(this._options[i].length, this._options[i].bytes);
|
|
}
|
|
|
|
params.push(this._feeBytes);
|
|
|
|
return params;
|
|
}
|
|
}
|