Skip to content

Commit

Permalink
Fix conversion rate and properly format it
Browse files Browse the repository at this point in the history
  • Loading branch information
rileystephens28 committed Oct 22, 2024
1 parent 2dbc11b commit cde8408
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 11 deletions.
20 changes: 15 additions & 5 deletions background/redux-slices/convertAssets.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { createSlice } from "@reduxjs/toolkit"
import { isUtxoAccountTypeGuard } from "@pelagus/pelagus-ui/utils/accounts"
import { toBigInt } from "quais"
import { Zone, parseQi, parseQuai } from "quais"
import { AccountTotal } from "./selectors"
import { createBackgroundAsyncThunk } from "./utils"
import { RootState } from "./index"
Expand Down Expand Up @@ -77,12 +77,22 @@ export const setConvertRateHandle = createBackgroundAsyncThunk(
"convertAssets/setConvertRateHandle",
async (_, { getState, dispatch }) => {
const { convertAssets } = getState() as RootState

if (convertAssets?.from && isUtxoAccountTypeGuard(convertAssets?.from)) {
dispatch(setConvertRate(3000))
const { jsonRpcProvider } = globalThis.main.chainService
let rate = 0n
const convertingFromUtxoAccount =
convertAssets?.from && isUtxoAccountTypeGuard(convertAssets?.from)
if (convertingFromUtxoAccount) {
rate = await jsonRpcProvider.getLatestQiRate(Zone.Cyprus1, parseQi("100"))
dispatch(setConvertRate(Number(rate) / 10e18))
return
}
dispatch(setConvertRate(0.0003))

// console.log("10 Quai", parseQuai("10"))
rate = await jsonRpcProvider.getLatestQuaiRate(
Zone.Cyprus1,
parseQuai("10")
)
dispatch(setConvertRate(Number(rate) / 10e3))
}
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const ConvertFromAmount = () => {
formatQi(
convertFromAccount?.balances[Zone.Cyprus1]?.assetAmount?.amount
)
)?.toFixed(4)}`
)?.toFixed(3)}`

setInputValue(qiMaxamount)
await dispatch(setConvertAmount(qiMaxamount))
Expand Down
26 changes: 23 additions & 3 deletions ui/components/_NewDesign/ConvertAsset/ConvertRate/ConvertRate.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import React, { useEffect } from "react"
import React, { useEffect, useState } from "react"
import { setConvertRateHandle } from "@pelagus/pelagus-background/redux-slices/convertAssets"
import { useBackgroundDispatch, useBackgroundSelector } from "../../../../hooks"
import { isUtxoAccountTypeGuard } from "../../../../utils/accounts"
import { formatQuai, formatQi, parseQi, parseQuai } from "quais"

const ConvertRate = () => {
const dispatch = useBackgroundDispatch()
Expand All @@ -10,17 +11,36 @@ const ConvertRate = () => {
(state) => state.convertAssets.from
)

const [formattedRate, setFormattedRate] = useState("")
const [fromAsset, setFromAsset] = useState("")
const [toAsset, setToAsset] = useState("")

useEffect(() => {
dispatch(setConvertRateHandle())
}, [])

useEffect(() => {
if (!convertFromAccount) return
const convertingFromUtxoAccount = isUtxoAccountTypeGuard(convertFromAccount)
if (convertingFromUtxoAccount) {
setFromAsset("QI")
setToAsset("QUAI")
setFormattedRate(rate.toFixed(4))
return
} else {
setFromAsset("QUAI")
setToAsset("QI")
setFormattedRate(rate.toFixed(3))
}
}, [rate])

if (!convertFromAccount) return <></>


return (
<>
<h5 className="rate">
1 {isUtxoAccountTypeGuard(convertFromAccount) ? "QI" : "QUAI"}{rate}{" "}
{isUtxoAccountTypeGuard(convertFromAccount) ? "QUAI" : "QI"}
1 {fromAsset}{formattedRate} {toAsset}
</h5>
<style jsx>{`
.rate {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ const ConvertToAmount = () => {
const rate = useBackgroundSelector((state) => state.convertAssets.rate)

const tokenLabelHandle = () => {
if (convertToAccount && isUtxoAccountTypeGuard(convertToAccount)) {
const convertingToUtxoAccount = convertToAccount && isUtxoAccountTypeGuard(convertToAccount)
if (convertingToUtxoAccount) {
return "QI"
}

return "QUAI"
}

Expand All @@ -24,6 +24,10 @@ const ConvertToAmount = () => {
return <SharedLoadingSpinner size="small" />
}

const convertingToUtxoAccount = convertToAccount && isUtxoAccountTypeGuard(convertToAccount)
if (convertingToUtxoAccount) {
return (Number(amount) * rate).toFixed(3)
}
return (Number(amount) * rate).toFixed(4)
}

Expand Down

0 comments on commit cde8408

Please sign in to comment.