Skip to content

Commit

Permalink
Merge pull request #209 from shutter-network/fix/206-executed-transac…
Browse files Browse the repository at this point in the history
…tions

fix: backend api and frontend handling for `inclusion_time/executed_transactions` api
  • Loading branch information
blockchainluffy authored Oct 30, 2024
2 parents 3038ce3 + 4d70acc commit 0f1c2bf
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 19 deletions.
27 changes: 21 additions & 6 deletions backend/internal/usecase/inclusion_time.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,13 @@ import (
)

type QueryExectuedTransactionStatsResp struct {
Successful int64
Failed int64
Shielded int64
Unshielded int64
NotIncluded int64
Pending int64
Invalid int64
NotDecrypted int64
Total int64
}

type InclusionTimeUsecase struct {
Expand Down Expand Up @@ -84,10 +89,20 @@ func (uc *InclusionTimeUsecase) QueryExecutedTransactionStats(ctx context.Contex

resp := &QueryExectuedTransactionStatsResp{}
for i := 0; i < len(stats); i++ {
if stats[i].TxStatus == data.TxStatusValShieldedinclusion {
resp.Successful = stats[i].Count
} else if stats[i].TxStatus == data.TxStatusValNotincluded {
resp.Failed = stats[i].Count
resp.Total += stats[i].Count
switch stats[i].TxStatus {
case data.TxStatusValInvalid:
resp.Invalid = stats[i].Count
case data.TxStatusValNotdecrypted:
resp.NotDecrypted = stats[i].Count
case data.TxStatusValNotincluded:
resp.NotIncluded = stats[i].Count
case data.TxStatusValPending:
resp.Pending = stats[i].Count
case data.TxStatusValShieldedinclusion:
resp.Shielded = stats[i].Count
case data.TxStatusValUnshieldedinclusion:
resp.Unshielded = stats[i].Count
}
}

Expand Down
5 changes: 3 additions & 2 deletions frontend/cypress/components/InclusionTime.cy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ describe('<InclusionTime />', () => {
cy.intercept('GET', '/api/inclusion_time/estimated_inclusion_time', { message: 10 }).as('getEstimatedInclusionTime');
cy.intercept('GET', '/api/inclusion_time/executed_transactions', {
message:{
Successful: 25,
Failed: 5
Shielded: 25,
Unshielded: 5,
Total: 30
}
}).as('getExecutedTransactions');
cy.intercept('GET', '/api/inclusion_time/historical_inclusion_time', {
Expand Down
5 changes: 3 additions & 2 deletions frontend/cypress/components/TransactionGauge.cy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ describe('<TransactionGauge />', () => {
statusCode: 200,
body: {
message: {
Successful: 25,
Failed: 5,
Shielded: 25,
Unshielded: 5,
Total: 30
}
},
}).as('getExecutedTransactions');
Expand Down
19 changes: 10 additions & 9 deletions frontend/src/modules/TransactionGauge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import useFetch from '../hooks/useFetch';

const TransactionGauge = () => {
const { data: transactionStatsData, loading: loadingTransactionStats, error: errorTransactionStats } = useFetch('/api/inclusion_time/executed_transactions');
const [successfulTransactions, setSuccessfulTransactions] = useState<number>(transactionStatsData?.message?.Successful || 0);
const [failedTransactions, setFailedTransactions] = useState<number>(transactionStatsData?.message?.Failed || 0);
const [successfulTransactions, setSuccessfulTransactions] = useState<number>(transactionStatsData?.message?.Shielded || 0);
const [failedTransactions, setFailedTransactions] = useState<number>(transactionStatsData?.message?.Unshielded || 0);
const [totalTransactions, setTotalTransactions] = useState<number>(transactionStatsData?.message?.Total || 0);
const [, setWebSocketError] = useState<string | null>(null);

const { socket } = useWebSocket()!;
Expand All @@ -22,9 +23,10 @@ const TransactionGauge = () => {
} else if (websocketEvent.data) {
setWebSocketError(null);
if (websocketEvent.type === 'executed_transactions_updated') {
if ('Successful' in websocketEvent.data.message && 'Failed' in websocketEvent.data.message) {
setSuccessfulTransactions(websocketEvent.data.message.Successful);
setFailedTransactions(websocketEvent.data.message.Failed);
if ('Shielded' in websocketEvent.data.message && 'Unshielded' in websocketEvent.data.message && 'Total' in websocketEvent.data.message) {
setSuccessfulTransactions(websocketEvent.data.message.Shielded);
setFailedTransactions(websocketEvent.data.message.Unshielded);
setTotalTransactions(websocketEvent.data.message.Total);
}
}
}
Expand All @@ -44,12 +46,11 @@ const TransactionGauge = () => {
}, [socket]);

useEffect(() => {
if (transactionStatsData?.message?.Successful) setSuccessfulTransactions(transactionStatsData.message.Successful);
if (transactionStatsData?.message?.Failed) setFailedTransactions(transactionStatsData.message.Failed);
if (transactionStatsData?.message?.Shielded) setSuccessfulTransactions(transactionStatsData.message.Shielded);
if (transactionStatsData?.message?.Unshielded) setFailedTransactions(transactionStatsData.message.Unshielded);
if (transactionStatsData?.message?.Total) setTotalTransactions(transactionStatsData.message.Total);
}, [transactionStatsData]);

const totalTransactions = successfulTransactions + failedTransactions;

return (
<Box sx={{ flexGrow: 1, marginTop: 4 }}>
<OverviewCard title="Shielded Transactions" centerTitle>
Expand Down

0 comments on commit 0f1c2bf

Please sign in to comment.