diff --git a/build/_raw/images/icons/circle-question.svg b/build/_raw/images/icons/circle-question.svg
new file mode 100644
index 00000000..c4163a9a
--- /dev/null
+++ b/build/_raw/images/icons/circle-question.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/background/service/openapi.ts b/src/background/service/openapi.ts
index ac1ddad8..25384719 100644
--- a/src/background/service/openapi.ts
+++ b/src/background/service/openapi.ts
@@ -255,7 +255,7 @@ export class OpenApiService {
}
async getAddressTokenSummary(address: string, ticker: string): Promise {
- const data = await this.httpGet('/v3/brc20/token-summary', { address, ticker });
+ const data = await this.httpGet('/v3/brc20/token-summary', { address, ticker: encodeURIComponent(ticker) });
if (data.status == API_STATUS.FAILED) {
throw new Error(data.message);
}
@@ -268,7 +268,12 @@ export class OpenApiService {
cursor: number,
size: number
): Promise<{ list: TokenTransfer[]; total: number }> {
- const data = await this.httpGet('/v3/brc20/transferable-list', { address, ticker, cursor, size });
+ const data = await this.httpGet('/v3/brc20/transferable-list', {
+ address,
+ ticker: encodeURIComponent(ticker),
+ cursor,
+ size
+ });
if (data.status == API_STATUS.FAILED) {
throw new Error(data.message);
}
diff --git a/src/ui/components/Icon/index.tsx b/src/ui/components/Icon/index.tsx
index 380357af..0b1ebfbb 100644
--- a/src/ui/components/Icon/index.tsx
+++ b/src/ui/components/Icon/index.tsx
@@ -35,7 +35,8 @@ export const svgRegistry = {
'circle-check': '/images/icons/circle-check.svg',
pencil: '/images/icons/pencil.svg',
- 'circle-info': '/images/icons/circle-info.svg'
+ 'circle-info': '/images/icons/circle-info.svg',
+ 'circle-question': '/images/icons/circle-question.svg'
};
const iconImgList: Array = ['success', 'delete', 'btc'];
diff --git a/src/ui/pages/Approval/components/InscribeTransfer.tsx b/src/ui/pages/Approval/components/InscribeTransfer.tsx
index 5ae8a9a3..52cc2697 100644
--- a/src/ui/pages/Approval/components/InscribeTransfer.tsx
+++ b/src/ui/pages/Approval/components/InscribeTransfer.tsx
@@ -1,7 +1,8 @@
+import { Tooltip } from 'antd';
import { useCallback, useEffect, useMemo, useState } from 'react';
import { InscribeOrder, RawTxInfo, TokenBalance } from '@/shared/types';
-import { Button, Card, Column, Content, Footer, Header, Input, Layout, Row, Text } from '@/ui/components';
+import { Button, Card, Column, Content, Footer, Header, Icon, Input, Layout, Row, Text } from '@/ui/components';
import { useTools } from '@/ui/components/ActionComponent';
import { Empty } from '@/ui/components/Empty';
import { FeeRateBar } from '@/ui/components/FeeRateBar';
@@ -13,6 +14,7 @@ import {
useFetchUtxosCallback,
usePushBitcoinTxCallback
} from '@/ui/state/transactions/hooks';
+import { fontSizes } from '@/ui/theme/font';
import { satoshisToAmount, useApproval, useLocationState, useWallet } from '@/ui/utils';
import { useNavigate } from '../../MainRoute';
@@ -135,11 +137,10 @@ function InscribeTransferStep({ contextData, updateContextData }: StepProps) {
const [inputDisabled, setInputDisabled] = useState(false);
useEffect(() => {
if (contextData.amount) {
- setInputAmount(contextData.amount.toString())
- setInputDisabled(true)
+ setInputAmount(contextData.amount.toString());
+ setInputDisabled(true);
}
-
- },[])
+ }, []);
useEffect(() => {
setInputError('');
@@ -158,7 +159,7 @@ function InscribeTransferStep({ contextData, updateContextData }: StepProps) {
return;
}
- if (amount > parseInt(contextData.tokenBalance.availableBalance)) {
+ if (amount > parseInt(contextData.tokenBalance.availableBalanceSafe)) {
setInputError('Insufficient Balance');
return;
}
@@ -168,7 +169,7 @@ function InscribeTransferStep({ contextData, updateContextData }: StepProps) {
}
setDisabled(false);
- }, [inputAmount, feeRate,contextData.tokenBalance]);
+ }, [inputAmount, feeRate, contextData.tokenBalance]);
useEffect(() => {
fetchUtxos();
@@ -222,26 +223,45 @@ function InscribeTransferStep({ contextData, updateContextData }: StepProps) {
{tokenBalance ? (
- {
- setInputAmount(tokenBalance.availableBalanceSafe);
- }}>
+
{tokenBalance.availableBalanceUnSafe != '0' ? (
-
{
+ setInputAmount(tokenBalance.availableBalanceSafe);
+ }}
/>
+
+
+
+
+
+
+
+
+
+
) : (
{
+ setInputAmount(tokenBalance.availableBalanceSafe);
+ }}
/>
)}
@@ -332,8 +352,8 @@ function InscribeConfirmStep({ contextData, updateContextData }: StepProps) {
resolveApproval({
inscriptionId: result.inscriptionId,
inscriptionNumber: result.inscriptionNumber,
- ticker:tokenBalance.ticker,
- amount:result.amount
+ ticker: tokenBalance.ticker,
+ amount: result.amount
});
} else {
navigate('BRC20SendScreen', {
diff --git a/src/ui/pages/BRC20/BRC20TokenScreen.tsx b/src/ui/pages/BRC20/BRC20TokenScreen.tsx
index 8d97f6f3..1ae6b8f3 100644
--- a/src/ui/pages/BRC20/BRC20TokenScreen.tsx
+++ b/src/ui/pages/BRC20/BRC20TokenScreen.tsx
@@ -77,7 +77,7 @@ export default function BRC20TokenScreen() {
disabled={outOfMint}
icon="pencil"
onClick={(e) => {
- window.open(`https://unisat.io/brc20/${ticker}`);
+ window.open(`https://unisat.io/brc20/${encodeURIComponent(ticker)}`);
}}
full
/>