-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added a wallet transaction load cancel button
- Loading branch information
Showing
8 changed files
with
378 additions
and
211 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
import { Card, CardBody, Progress } from "@nextui-org/react"; | ||
|
||
import { LoadingItem } from "./loading-status-item"; | ||
|
||
import { type PositionLoadingState } from "@/pages/wallet/[walletAddress]"; | ||
import { MeteoraPosition } from "@/services/MeteoraPosition"; | ||
import { MeteoraPositionTransaction } from "@/services/ParseMeteoraTransactions"; | ||
|
||
export const LoadingSummaryLeft = (props: { | ||
filteredPositions: MeteoraPosition[]; | ||
filteredTransactions: MeteoraPositionTransaction[]; | ||
loading: boolean; | ||
positionLoadingState: PositionLoadingState; | ||
usd: boolean; | ||
updatedUsdValueCount: number; | ||
}) => { | ||
return ( | ||
<Card className="md:m-4 sm:mb-4"> | ||
<CardBody> | ||
<LoadingItem | ||
title="Time Elapsed" | ||
value={props.positionLoadingState.durationString} | ||
/> | ||
<LoadingItem | ||
hidden={props.positionLoadingState.apiDataLoaded} | ||
title="Estimated Completion" | ||
value={ | ||
props.positionLoadingState.estimatedCompletionString == "" | ||
? "Calculating..." | ||
: props.positionLoadingState.estimatedCompletionString | ||
} | ||
/> | ||
<LoadingItem | ||
loading={!props.positionLoadingState.allSignaturesFound} | ||
title="# of Wallet Transactions" | ||
value={props.positionLoadingState.signatureCount} | ||
/> | ||
<LoadingItem | ||
loading={ | ||
!props.positionLoadingState.allPositionsFound && | ||
!props.positionLoadingState.rpcDataLoaded | ||
} | ||
title={"# of Position Transactions"} | ||
value={props.filteredTransactions.length} | ||
/> | ||
<LoadingItem | ||
loading={ | ||
!props.positionLoadingState.allPositionsFound && | ||
!props.positionLoadingState.rpcDataLoaded | ||
} | ||
title={"# of Positions"} | ||
value={props.filteredPositions.length} | ||
/> | ||
<LoadingItem | ||
hidden={ | ||
props.positionLoadingState.openPositionCount == 0 || | ||
!props.positionLoadingState.updatingOpenPositions | ||
} | ||
loading={props.positionLoadingState.updatingOpenPositions} | ||
title="Updating Open Positions" | ||
/> | ||
<LoadingItem | ||
loading={!props.positionLoadingState.apiDataLoaded} | ||
title="# of Pos. updated w/ USD" | ||
value={props.updatedUsdValueCount} | ||
/> | ||
{props.positionLoadingState.apiDataLoaded ? ( | ||
<></> | ||
) : ( | ||
<Progress | ||
aria-label="Loading progress" | ||
isIndeterminate={ | ||
!props.positionLoadingState.apiDataLoaded && | ||
props.positionLoadingState.estimatedCompletionString == "" | ||
} | ||
showValueLabel={true} | ||
value={props.positionLoadingState.updatedUsdPercent} | ||
/> | ||
)} | ||
</CardBody> | ||
</Card> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
import { Button, Card, CardBody } from "@nextui-org/react"; | ||
|
||
import { type PositionLoadingState } from "@/pages/wallet/[walletAddress]"; | ||
|
||
export const LoadingSummaryNoUsd = (props: { | ||
positionLoadingState: PositionLoadingState; | ||
}) => { | ||
const oldestTransaction = | ||
props.positionLoadingState.transactions.length > 0 | ||
? props.positionLoadingState.transactions.sort( | ||
(a, b) => a.timestamp_ms - b.timestamp_ms, | ||
)[0] | ||
: null; | ||
|
||
const oldestTransactionDate = oldestTransaction | ||
? new Date(oldestTransaction.timestamp_ms).toLocaleDateString() + | ||
" " + | ||
new Date(oldestTransaction.timestamp_ms).toLocaleTimeString() | ||
: ""; | ||
|
||
return ( | ||
<Card | ||
className={`md:m-4 sm:mb-4 self-start ${props.positionLoadingState.updatingUsdValues || !oldestTransactionDate ? "hidden" : ""}`} | ||
> | ||
<CardBody> | ||
<p className="mb-4"> | ||
<b>Oldest position transaction:</b> {oldestTransactionDate} | ||
</p> | ||
<p className="mb-4"> | ||
If you know you have no DLMM transactions prior to the date above or | ||
you do not want to analyze on older transactions/positions, you can | ||
safely stop loading more transactions. | ||
</p> | ||
<Button | ||
className="w-half mb-4" | ||
color="danger" | ||
onClick={() => { | ||
if (props.positionLoadingState.cancel) { | ||
props.positionLoadingState.cancel(); | ||
} | ||
}} | ||
> | ||
Stop Loading Wallet Transactions | ||
</Button> | ||
</CardBody> | ||
</Card> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
import { Card, CardBody } from "@nextui-org/react"; | ||
|
||
import { LoadingItem } from "./loading-status-item"; | ||
|
||
import { type PositionLoadingState } from "@/pages/wallet/[walletAddress]"; | ||
|
||
export const LoadingSummaryUsd = (props: { | ||
positionLoadingState: PositionLoadingState; | ||
estimatedPointsFromFeesAndRewards: number; | ||
usdFeesAndRewards: number; | ||
usdDivergenceLoss: number; | ||
usdProfit: number; | ||
positionsWithErrorsCount: number; | ||
}) => { | ||
return ( | ||
<Card | ||
className={`md:m-4 sm:mb-4 self-start ${props.positionLoadingState.updatingUsdValues ? "" : "hidden"}`} | ||
> | ||
<CardBody> | ||
<LoadingItem | ||
loading={!props.positionLoadingState.apiDataLoaded} | ||
title="Estimated Points from Fees" | ||
value={props.estimatedPointsFromFeesAndRewards.toLocaleString( | ||
Intl.NumberFormat().resolvedOptions().locale, | ||
{ | ||
minimumFractionDigits: 2, | ||
maximumFractionDigits: 2, | ||
}, | ||
)} | ||
/> | ||
<LoadingItem | ||
loading={!props.positionLoadingState.apiDataLoaded} | ||
title="Total Fees in USD" | ||
value={props.usdFeesAndRewards.toLocaleString( | ||
Intl.NumberFormat().resolvedOptions().locale, | ||
{ | ||
style: "currency", | ||
currency: "USD", | ||
minimumFractionDigits: 2, | ||
maximumFractionDigits: 2, | ||
}, | ||
)} | ||
/> | ||
<LoadingItem | ||
loading={!props.positionLoadingState.apiDataLoaded} | ||
title="Total Divergence Loss in USD" | ||
value={props.usdDivergenceLoss.toLocaleString( | ||
Intl.NumberFormat().resolvedOptions().locale, | ||
{ | ||
style: "currency", | ||
currency: "USD", | ||
minimumFractionDigits: 2, | ||
maximumFractionDigits: 2, | ||
}, | ||
)} | ||
/> | ||
<LoadingItem | ||
loading={!props.positionLoadingState.apiDataLoaded} | ||
title="Total USD Profit" | ||
value={props.usdProfit.toLocaleString( | ||
Intl.NumberFormat().resolvedOptions().locale, | ||
{ | ||
style: "currency", | ||
currency: "USD", | ||
minimumFractionDigits: 2, | ||
maximumFractionDigits: 2, | ||
}, | ||
)} | ||
/> | ||
<LoadingItem | ||
loading={!props.positionLoadingState.apiDataLoaded} | ||
title="# of Pos. w/ API Errors" | ||
value={props.positionsWithErrorsCount.toLocaleString( | ||
Intl.NumberFormat().resolvedOptions().locale, | ||
{ | ||
minimumFractionDigits: 0, | ||
maximumFractionDigits: 0, | ||
}, | ||
)} | ||
/> | ||
</CardBody> | ||
</Card> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.