Commit 6c6d603e authored by vicotor's avatar vicotor

update tx status string.

parent 42827c44
...@@ -84,6 +84,19 @@ func (s *ChainSync) GetOutConfig(token common.Address, toChainId int64) (outConf ...@@ -84,6 +84,19 @@ func (s *ChainSync) GetOutConfig(token common.Address, toChainId int64) (outConf
return outConfig, nil return outConfig, nil
} }
func (s *ChainSync) GetRequiredConfirmations() (int64, error) {
callOpt := &bind.CallOpts{
BlockNumber: nil,
From: common.HexToAddress(s.chain.BridgeContract),
Context: context.TODO(),
}
num, err := s.bridgeCa.ValidRequired(callOpt)
if err != nil {
return 0, err
}
return num.Int64(), nil
}
func NewChainSync(_chain *config.ChainConfig, _d *dao.Dao) (sync *ChainSync) { func NewChainSync(_chain *config.ChainConfig, _d *dao.Dao) (sync *ChainSync) {
bridgeCa, err := bridge.NewBridgeContract(common.HexToAddress(_chain.BridgeContract), _d.ChainClient(_chain.ChainId)) bridgeCa, err := bridge.NewBridgeContract(common.HexToAddress(_chain.BridgeContract), _d.ChainClient(_chain.ChainId))
if err != nil { if err != nil {
......
package constant package constant
import "fmt"
const JwtSecret = "uEj7AgDNCREwsvnTaCEtzDXt0I5eFDl8" const JwtSecret = "uEj7AgDNCREwsvnTaCEtzDXt0I5eFDl8"
const ( const (
...@@ -32,6 +34,22 @@ func (ts TransferStatus) String() string { ...@@ -32,6 +34,22 @@ func (ts TransferStatus) String() string {
} }
} }
func (ts TransferStatus) FriendlyString(confirmed int, required int) string {
switch ts {
case TransferChainNoProcess:
return "Awaiting Processing"
case TransferChainWaitConfirm:
return fmt.Sprintf("Awaiting Confirmation (%d/%d)", confirmed, required)
case TransferChainExecuted:
return "Executed"
case TransferChainRejected:
return "Rejected"
default:
return "Unknown"
}
}
const ( const (
ValidatorStatusNoPrecess = 0 ValidatorStatusNoPrecess = 0
ValidatorStatusConfirmation = 1 ValidatorStatusConfirmation = 1
......
...@@ -26,6 +26,7 @@ type ChainInterface interface { ...@@ -26,6 +26,7 @@ type ChainInterface interface {
ParseSwapConfigChanged(log *types.Log) (*bridge.BridgeContractSwapConfigChanged, error) ParseSwapConfigChanged(log *types.Log) (*bridge.BridgeContractSwapConfigChanged, error)
GetReceiveToken(token common.Address, toChainId int64) (string, error) GetReceiveToken(token common.Address, toChainId int64) (string, error)
GetOutConfig(token common.Address, toChainId int64) (outConfig bridge.BridgeOutConfig, err error) GetOutConfig(token common.Address, toChainId int64) (outConfig bridge.BridgeOutConfig, err error)
GetRequiredConfirmations() (int64, error)
} }
var ( var (
......
...@@ -132,3 +132,11 @@ func (d *Dao) GetChainConfig(chainId int64) (ChainInfo, error) { ...@@ -132,3 +132,11 @@ func (d *Dao) GetChainConfig(chainId int64) (ChainInfo, error) {
} }
return chainInfo, nil return chainInfo, nil
} }
func (d *Dao) GetRequireConfirmations(chainId int64) (int64, error) {
syncer, ok := d.GetSyncer(chainId)
if !ok {
return 3, fmt.Errorf("chain %d syncer not found", chainId)
}
return syncer.GetRequiredConfirmations()
}
...@@ -221,7 +221,7 @@ func (d *Dao) GetTxStatus(tx string) (result apiModel.TxStatusResult, err error) ...@@ -221,7 +221,7 @@ func (d *Dao) GetTxStatus(tx string) (result apiModel.TxStatusResult, err error)
defer cancel() defer cancel()
result = apiModel.TxStatusResult{ result = apiModel.TxStatusResult{
Status: constant.TransferChainNoProcess.String(), Status: constant.TransferChainWaitConfirm.FriendlyString(0, 0),
} }
cursor, err := collection.Find(ctx, bson.M{"from_chain_tx_hash": tx}) cursor, err := collection.Find(ctx, bson.M{"from_chain_tx_hash": tx})
...@@ -240,7 +240,8 @@ func (d *Dao) GetTxStatus(tx string) (result apiModel.TxStatusResult, err error) ...@@ -240,7 +240,8 @@ func (d *Dao) GetTxStatus(tx string) (result apiModel.TxStatusResult, err error)
return result, nil return result, nil
} }
event := events[0] event := events[0]
result.Status = constant.TransferStatus(event.ToChainStatus).String() required, _ := d.GetRequireConfirmations(event.FromChain)
result.Status = constant.TransferStatus(event.ToChainStatus).FriendlyString(len(event.ConfirmedValidators), int(required))
return result, nil return result, nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment