Set and display ticket purchase height (#250)
* Ensure purchase height set for confirmed tickets. * Show purchase height in admin screen. Only show purchase height when the ticket is confirmed, because if a ticket is not confirmed, its purchase height is not yet known.
This commit is contained in:
parent
08fafdaf31
commit
b050fc3100
@ -1,16 +1,25 @@
|
|||||||
package webapi
|
package webapi
|
||||||
|
|
||||||
import "time"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
func addressURL(blockExplorerURL string) func(string) string {
|
func addressURL(blockExplorerURL string) func(string) string {
|
||||||
return func(addr string) string {
|
return func(addr string) string {
|
||||||
return blockExplorerURL + "/address/" + addr
|
return fmt.Sprintf("%s/address/%s", blockExplorerURL, addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func txURL(blockExplorerURL string) func(string) string {
|
func txURL(blockExplorerURL string) func(string) string {
|
||||||
return func(txID string) string {
|
return func(txID string) string {
|
||||||
return blockExplorerURL + "/tx/" + txID
|
return fmt.Sprintf("%s/tx/%s", blockExplorerURL, txID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func blockURL(blockExplorerURL string) func(int64) string {
|
||||||
|
return func(height int64) string {
|
||||||
|
return fmt.Sprintf("%s/block/%d", blockExplorerURL, height)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -176,10 +176,18 @@ func feeAddress(c *gin.Context) {
|
|||||||
now := time.Now()
|
now := time.Now()
|
||||||
expire := now.Add(feeAddressExpiration).Unix()
|
expire := now.Add(feeAddressExpiration).Unix()
|
||||||
|
|
||||||
confirmed := rawTicket.Confirmations >= requiredConfs
|
// Only set purchase height if the ticket already has 6 confs, otherwise its
|
||||||
|
// purchase height may change due to reorgs.
|
||||||
|
confirmed := false
|
||||||
|
purchaseHeight := int64(0)
|
||||||
|
if rawTicket.Confirmations >= requiredConfs {
|
||||||
|
confirmed = true
|
||||||
|
purchaseHeight = rawTicket.BlockHeight
|
||||||
|
}
|
||||||
|
|
||||||
dbTicket := database.Ticket{
|
dbTicket := database.Ticket{
|
||||||
Hash: ticketHash,
|
Hash: ticketHash,
|
||||||
|
PurchaseHeight: purchaseHeight,
|
||||||
CommitmentAddress: commitmentAddress,
|
CommitmentAddress: commitmentAddress,
|
||||||
FeeAddressIndex: newAddressIdx,
|
FeeAddressIndex: newAddressIdx,
|
||||||
FeeAddress: newAddress,
|
FeeAddress: newAddress,
|
||||||
|
|||||||
@ -214,7 +214,7 @@ findAddress:
|
|||||||
|
|
||||||
// At this point we are satisfied that the request is valid and the fee tx
|
// At this point we are satisfied that the request is valid and the fee tx
|
||||||
// pays sufficient fees to the expected address. Proceed to update the
|
// pays sufficient fees to the expected address. Proceed to update the
|
||||||
// database, and if the ticket is confirmed broadcast the transaction.
|
// database, and if the ticket is confirmed broadcast the fee transaction.
|
||||||
|
|
||||||
ticket.VotingWIF = votingWIF.String()
|
ticket.VotingWIF = votingWIF.String()
|
||||||
ticket.FeeTxHex = request.FeeTx
|
ticket.FeeTxHex = request.FeeTx
|
||||||
|
|||||||
@ -103,6 +103,17 @@
|
|||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Status</th>
|
||||||
|
{{ if .Ticket.Confirmed }}
|
||||||
|
<td>
|
||||||
|
Confirmed (purchase height:
|
||||||
|
<a href="{{ blockURL .Ticket.PurchaseHeight }}">{{ .Ticket.PurchaseHeight }}</a>)
|
||||||
|
</td>
|
||||||
|
{{ else }}
|
||||||
|
<td>Not confirmed</td>
|
||||||
|
{{ end }}
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Commitment Address</th>
|
<th>Commitment Address</th>
|
||||||
<td>{{ .Ticket.CommitmentAddress }}</td>
|
<td>{{ .Ticket.CommitmentAddress }}</td>
|
||||||
@ -127,10 +138,6 @@
|
|||||||
<th>Fee Expiration</th>
|
<th>Fee Expiration</th>
|
||||||
<td>{{ .Ticket.FeeExpiration }} ({{ dateTime .Ticket.FeeExpiration }}) </td>
|
<td>{{ .Ticket.FeeExpiration }} ({{ dateTime .Ticket.FeeExpiration }}) </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<th>Confirmed</th>
|
|
||||||
<td>{{ .Ticket.Confirmed }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<th>Current Vote Choices</th>
|
<th>Current Vote Choices</th>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@ -179,6 +179,7 @@ func router(debugMode bool, cookieSecret []byte, dcrd rpc.DcrdConnect, wallets r
|
|||||||
router.SetFuncMap(template.FuncMap{
|
router.SetFuncMap(template.FuncMap{
|
||||||
"txURL": txURL(cfg.BlockExplorerURL),
|
"txURL": txURL(cfg.BlockExplorerURL),
|
||||||
"addressURL": addressURL(cfg.BlockExplorerURL),
|
"addressURL": addressURL(cfg.BlockExplorerURL),
|
||||||
|
"blockURL": blockURL(cfg.BlockExplorerURL),
|
||||||
"dateTime": dateTime,
|
"dateTime": dateTime,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user