Skip to content

Commit 0e8640c

Browse files
committed
Fixes
1 parent 85b3098 commit 0e8640c

File tree

1 file changed

+40
-5
lines changed

1 file changed

+40
-5
lines changed

server/internal/interface/grpc/handlers/indexer.go

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"encoding/hex"
66
"fmt"
7+
"strings"
78

89
arkv1 "github.com/ark-network/ark/api-spec/protobuf/gen/ark/v1"
910
"github.com/ark-network/ark/server/internal/core/application"
@@ -191,17 +192,27 @@ func (e indexerService) GetSpendableVtxos(ctx context.Context, request *arkv1.Ge
191192
}, nil
192193
}
193194

194-
func (e indexerService) GetTransactionHistory(ctx context.Context, request *arkv1.GetTransactionHistoryRequest) (*arkv1.GetTransactionHistoryResponse, error) {
195-
address, err := parseArkAddress(request.GetAddress())
195+
func (e indexerService) GetTransactionHistory(
196+
ctx context.Context, request *arkv1.GetTransactionHistoryRequest,
197+
) (*arkv1.GetTransactionHistoryResponse, error) {
198+
pubkey, err := parseArkAddress(request.GetAddress())
196199
if err != nil {
197200
return nil, status.Error(codes.InvalidArgument, err.Error())
198201
}
199202
page, err := parsePage(request.GetPage())
200203
if err != nil {
201204
return nil, status.Error(codes.InvalidArgument, err.Error())
202205
}
206+
startTime, err := parseTimestamp(request.GetStartTime())
207+
if err != nil {
208+
return nil, status.Error(codes.InvalidArgument, err.Error())
209+
}
210+
endTime, err := parseTimestamp(request.GetEndTime())
211+
if err != nil {
212+
return nil, status.Error(codes.InvalidArgument, err.Error())
213+
}
203214

204-
resp, err := e.indexerSvc.GetTransactionHistory(ctx, address, request.StartTime, request.EndTime, page)
215+
resp, err := e.indexerSvc.GetTransactionHistory(ctx, pubkey, startTime, endTime, page)
205216
if err != nil {
206217
return nil, status.Errorf(codes.Internal, "failed to get transaction history: %v", err)
207218
}
@@ -243,9 +254,26 @@ func (e indexerService) GetVtxoChain(ctx context.Context, request *arkv1.GetVtxo
243254
}
244255

245256
graph := make(map[string]*arkv1.IndexerTransactions)
246-
for key, value := range resp.Transactions {
257+
for key, chain := range resp.Transactions {
258+
txs := make([]*arkv1.IndexerChain, 0, len(chain.Txs))
259+
for _, tx := range chain.Txs {
260+
var txType arkv1.IndexerChainedTxType
261+
switch strings.ToLower(tx.Type) {
262+
case "commitment":
263+
txType = arkv1.IndexerChainedTxType_INDEXER_CHAINED_TX_TYPE_COMMITMENT
264+
case "virtual":
265+
txType = arkv1.IndexerChainedTxType_INDEXER_CHAINED_TX_TYPE_VIRTUAL
266+
default:
267+
txType = arkv1.IndexerChainedTxType_INDEXER_CHAINED_TX_TYPE_UNSPECIFIED
268+
}
269+
txs = append(txs, &arkv1.IndexerChain{
270+
Txid: tx.Txid,
271+
Type: txType,
272+
})
273+
}
247274
graph[key] = &arkv1.IndexerTransactions{
248-
Txs: value,
275+
Txs: txs,
276+
ExpiresAt: chain.ExpiresAt,
249277
}
250278
}
251279

@@ -355,3 +383,10 @@ func parseTxids(txids []string) ([]string, error) {
355383
}
356384
return txids, nil
357385
}
386+
387+
func parseTimestamp(timestamp int64) (int64, error) {
388+
if timestamp <= 0 {
389+
return 0, nil
390+
}
391+
return timestamp, nil
392+
}

0 commit comments

Comments
 (0)