import TransactionBase from '../TransactionBase' import { QORT_DECIMALS } from '../../constants' export default class CreatePollTransaction extends TransactionBase { constructor() { super() this.type = 8 this._options = [] } render(html) { return html` ${this._votedialog3}
${this._rPollName}
${this._votedialog4}
${this._rPollDesc}
${this._votedialog5}
${this._pollOptions.join(', ')}
${this._votedialog6}
${this._feeDialog}: ${this._feeDisplay}
` } 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 feeDialog(feeDialog) { this._feeDialog = feeDialog } set votedialog3(votedialog3) { this._votedialog3 = votedialog3 } set votedialog4(votedialog4) { this._votedialog4 = votedialog4 } set votedialog5(votedialog5) { this._votedialog5 = votedialog5 } set votedialog6(votedialog6) { this._votedialog6 = votedialog6 } set fee(fee) { this._feeDisplay = 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 } }