Merge pull request #2059 from RoboSats/add-trade-breadcrumb

Add trade breadcrumb
This commit is contained in:
KoalaSat
2025-07-10 14:45:12 +00:00
committed by GitHub
23 changed files with 128 additions and 97 deletions

View File

@ -1,6 +1,17 @@
import React, { useContext, useEffect, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Tab, Tabs, Paper, CircularProgress, Grid, Typography, Box } from '@mui/material';
import {
Tab,
Tabs,
Paper,
CircularProgress,
Grid,
Typography,
Box,
Stepper,
Step,
StepLabel,
} from '@mui/material';
import { useNavigate, useParams } from 'react-router-dom';
import TradeBox from '../../components/TradeBox';
@ -29,6 +40,7 @@ const OrderPage = (): React.JSX.Element => {
const [tab, setTab] = useState<'order' | 'contract'>('contract');
const [currentOrder, setCurrentOrder] = useState<Order | null>(null);
const [openNoRobot, setOpenNoRobot] = useState<boolean>(false);
const [orderStep, setOrderStep] = useState<number>(0);
useEffect(() => {
paramsRef.current = params;
@ -54,6 +66,21 @@ const OrderPage = (): React.JSX.Element => {
};
}, [params.orderId, openNoRobot]);
useEffect(() => {
if (!currentOrder) return;
setOrderStep(0);
if ([1].includes(currentOrder.status)) {
setOrderStep(1);
} else if ([6, 7, 8].includes(currentOrder.status)) {
setOrderStep(2);
} else if ([9, 10, 11, 12, 13].includes(currentOrder.status)) {
setOrderStep(3);
} else if ([14, 15, 16, 17, 18].includes(currentOrder.status)) {
setOrderStep(4);
}
}, [currentOrder?.status]);
const updateSlotFromOrder = (updatedOrder: Order, slot: Slot): void => {
if (
Number(paramsRef.current.orderId) === updatedOrder.id &&
@ -93,6 +120,8 @@ const OrderPage = (): React.JSX.Element => {
<></>
);
const steps = ['Publish', 'Wait', 'Setup', 'Trade', 'Finished'];
return (
<Box>
<WarningDialog
@ -120,6 +149,7 @@ const OrderPage = (): React.JSX.Element => {
}}
/>
{!currentOrder?.maker && !currentOrder?.bad_request && <CircularProgress />}
{currentOrder?.bad_request && currentOrder.status !== 5 ? (
<>
<Typography align='center' variant='subtitle2' color='secondary'>
@ -153,6 +183,15 @@ const OrderPage = (): React.JSX.Element => {
spacing={2}
style={{ width: '43em' }}
>
<Grid item xs={12} style={{ width: '42em' }}>
<Stepper activeStep={orderStep}>
{steps.map((label) => (
<Step key={label}>
<StepLabel>{t(label)}</StepLabel>
</Step>
))}
</Stepper>
</Grid>
<Grid item xs={6} style={{ width: '21em' }}>
<Paper
elevation={12}

View File

@ -795,7 +795,7 @@ const MakerForm = ({
variant={hasCustomPaymentMethod ? 'contained' : 'outlined'}
fullWidth
sx={{
minHeight: '3.2em',
minHeight: '3.3em',
minWidth: 0,
padding: 0,
justifyContent: 'center',

View File

@ -308,9 +308,9 @@ const OrderDetails = ({
<ListItemAvatar sx={{ width: '4em', height: '4em' }}>
<RobotAvatar
statusColor={statusBadgeColor(currentOrder?.maker_status ?? '')}
hashId={currentOrder?.maker_hash_id}
tooltip={t(currentOrder?.maker_status ?? '')}
orderType={currentOrder?.type}
hashId={currentOrder.maker_hash_id}
tooltip={t(currentOrder.maker_status ?? '')}
orderType={currentOrder.type}
small={true}
/>
</ListItemAvatar>

View File

@ -47,7 +47,6 @@ const RobotAvatar: React.FC<Props> = ({
onLoad = () => {},
}) => {
const { hostUrl, client } = useContext<UseAppStoreType>(AppContext);
const backgroundFadeTime = 3000;
const defaultAvatarSrc = useMemo(() => {
return client !== 'mobile'
? `${hostUrl}/static/federation/avatars/${shortAlias}${small ? '.small' : ''}.webp`
@ -62,27 +61,22 @@ const RobotAvatar: React.FC<Props> = ({
const className = placeholderType === 'loading' ? 'loadingAvatar' : 'generatingAvatar';
useEffect(() => {
if (hashId !== undefined) {
if (hashId) {
roboidentitiesClient
.generateRobohash(hashId, small ? 'small' : 'large')
.then((avatar) => {
setAvatarSrc(avatar);
setActiveBackground(false);
})
.catch(() => {
setAvatarSrc(defaultAvatarSrc);
setActiveBackground(true);
});
setTimeout(() => {
setActiveBackground(false);
}, backgroundFadeTime);
}
}, [hashId]);
}, [hashId, small]);
useEffect(() => {
if (shortAlias && shortAlias !== '') {
setAvatarSrc(defaultAvatarSrc);
setTimeout(() => {
setActiveBackground(false);
}, backgroundFadeTime);
} else {
setActiveBackground(true);
}

View File

@ -1,9 +1,11 @@
import React, { useState } from 'react';
import React, { useContext, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Box, Tooltip } from '@mui/material';
import { Box, Grid, Tooltip } from '@mui/material';
import { type Order } from '../../models';
import { LoadingButton } from '@mui/lab';
import CancelOrderDialog from '../Dialogs/CancelOrder';
import { UseFederationStoreType, FederationContext } from '../../contexts/FederationContext';
import { systemClient } from '../../services/System';
interface CancelButtonProps {
order: Order | null;
@ -21,6 +23,7 @@ const CancelButton = ({
loading = false,
}: CancelButtonProps): React.JSX.Element => {
const { t } = useTranslation();
const { federation } = useContext<UseFederationStoreType>(FederationContext);
const [openCancelWarning, setOpenCancelWarning] = useState<boolean>(false);
const showCancelButton =
@ -35,17 +38,36 @@ const CancelButton = ({
Boolean(order?.is_maker && order?.status === 0) ||
Boolean(order?.is_taker && order?.status === 3);
const copyOrderUrl = () => {
const coordinator = federation.getCoordinator(order?.shortAlias ?? '');
const orderOriginUrl = `${coordinator.url}/order/${coordinator.shortAlias}/${order?.id}`;
systemClient.copyToClipboard(orderOriginUrl);
};
return (
<Box>
{showCancelButton ? (
<Tooltip
placement='top'
enterTouchDelay={500}
enterDelay={700}
enterNextDelay={2000}
title={noConfirmation ? t('Cancel order') : t('Unilateral cancelation (bond at risk!)')}
>
<div>
<Grid item style={{ paddingTop: '8px', display: 'flex', flexDirection: 'row' }}>
<Tooltip
placement='top'
enterTouchDelay={500}
enterDelay={700}
enterNextDelay={2000}
title={t('Copy order URL')}
>
<div style={{ marginRight: 18 }}>
<LoadingButton size='small' variant='outlined' color='primary' onClick={copyOrderUrl}>
{t('Copy URL')}
</LoadingButton>
</div>
</Tooltip>
<Tooltip
placement='top'
enterTouchDelay={500}
enterDelay={700}
enterNextDelay={2000}
title={noConfirmation ? t('Cancel order') : t('Unilateral cancelation (bond at risk!)')}
>
<LoadingButton
size='small'
loading={loading}
@ -63,8 +85,8 @@ const CancelButton = ({
>
{t('Cancel')}
</LoadingButton>
</div>
</Tooltip>
</Tooltip>
</Grid>
) : (
<></>
)}

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect, useContext } from 'react';
import { Box, Divider, Grid, Tooltip } from '@mui/material';
import { Box, Divider, Grid } from '@mui/material';
import { getWebln, pn } from '../../utils';
import {
ConfirmCancelDialog,
@ -51,8 +51,6 @@ import { type UseAppStoreType, AppContext } from '../../contexts/AppContext';
import { FederationContext, type UseFederationStoreType } from '../../contexts/FederationContext';
import { useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { LoadingButton } from '@mui/lab';
import { systemClient } from '../../services/System';
interface loadingButtonsProps {
cancel: boolean;
@ -290,12 +288,6 @@ const TradeBox = ({ currentOrder, onStartAgain }: TradeBoxProps): React.JSX.Elem
}
};
const copyOrderUrl = () => {
const coordinator = federation.getCoordinator(currentOrder.shortAlias);
const orderOriginUrl = `${coordinator.url}/order/${coordinator.shortAlias}/${currentOrder.id}`;
systemClient.copyToClipboard(orderOriginUrl);
};
const pauseOrder = function (): void {
setLoadingButtons({ ...noLoadingButtons, pauseOrder: true });
submitAction({ action: 'pause' });
@ -816,33 +808,17 @@ const TradeBox = ({ currentOrder, onStartAgain }: TradeBoxProps): React.JSX.Elem
) : (
<></>
)}
<Grid item style={{ paddingTop: '8px', display: 'flex', flexDirection: 'row' }}>
<Tooltip
placement='top'
enterTouchDelay={500}
enterDelay={700}
enterNextDelay={2000}
title={t('Copy order URL')}
>
<div style={{ marginRight: 18 }}>
<LoadingButton size='small' variant='outlined' color='primary' onClick={copyOrderUrl}>
{t('Copy URL')}
</LoadingButton>
</div>
</Tooltip>
<CancelButton
order={currentOrder ?? null}
onClickCancel={cancel}
openCancelDialog={() => {
setOpen({ ...closeAll, confirmCancel: true });
}}
openCollabCancelDialog={() => {
setOpen({ ...closeAll, confirmCollabCancel: true });
}}
loading={loadingButtons.cancel}
/>
</Grid>
<CancelButton
order={currentOrder ?? null}
onClickCancel={cancel}
openCancelDialog={() => {
setOpen({ ...closeAll, confirmCancel: true });
}}
openCollabCancelDialog={() => {
setOpen({ ...closeAll, confirmCollabCancel: true });
}}
loading={loadingButtons.cancel}
/>
</Grid>
</Box>
);

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Cancel·lació col·laborativa",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Cancel·lació unilateral (Fiança en risc!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Has sol·licitat cancel·lar col·laborativament",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Veure bitlleteres compatibles",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Confirmar cancel·lació",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Oboustrané zrušení",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Unilateral cancelation (bond at risk!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Žádaš o oboustarné zrušení obchodu",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Robrazit kompatibilní peněženky",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Potvrdit zrušení",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Gemeinsamer Abbruch",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Unilateral cancelation (bond at risk!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Du hast um einen gemeinsamen Abbruch gebeten",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Kompatible Wallets ansehen",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Abbruch bestätigen",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Collaborative Cancel",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Unilateral cancelation (bond at risk!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "You asked for a collaborative cancellation",
@ -558,8 +560,6 @@
"See Compatible Wallets": "See Compatible Wallets",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Confirm Cancel",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Cancelación colaborativa",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Cancelación unilateral (¡Perderás el depósito!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Has solicitado la cancelación colaborativa",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Ver carteras compatibles",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Confirmar cancelación",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Lankidetza ezeztapena",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Unilateral cancelation (bond at risk!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Lankidetzaz ezeztatzeko eskaera egin duzu",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Begiratu Kartera Bateragarriak",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Onartu ezeztapena",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Annulation collaborative",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Annulation unilatérale (caution à risque !)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Vous avez demandé une annulation collaborative",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Voir Portefeuilles compatibles",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Confirmer l'annulation",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Annullamento collaborativo",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Annullamento unilaterale (cauzione a rischio!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Hai richiesto per un annullamento collaborativo",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Vedi wallet compatibili",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Conferma l'annullamento",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "共同キャンセル",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "一方的なキャンセル(担保金が危険に!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "あなたが共同的なキャンセルを求めています",
@ -558,8 +560,6 @@
"See Compatible Wallets": "互換性のあるウォレットを見る",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "キャンセルを確認",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Wspólna Anuluj",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Unilateral cancelation (bond at risk!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Poprosiłeś o wspólne anulowanie",
@ -558,8 +560,6 @@
"See Compatible Wallets": "See Compatible Wallets",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Potwierdź Anuluj",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Cancelamento colaborativo",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Unilateral cancelation (bond at risk!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Você solicitou um cancelamento colaborativo",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Ver Carteiras Compatíveis",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Confirmar cancelamento",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Совместная отмена",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Одностороннее аннулирование (залог под угрозой!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Вы запросили совместную отмену",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Смотреть Совместимые Кошельки",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Подтвердить отмену",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Makulera kollaborativt",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Unilateral cancelation (bond at risk!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Du bad om att kollaborativt avsluta ordern",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Se kompatibla wallets",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Bekräfta makulering",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "Kufuta kwa Ushirikiano",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Kufuta kwa upande mmoja (dhamana iko hatarini!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "Uliomba kughairi kwa ushirikiano",
@ -558,8 +560,6 @@
"See Compatible Wallets": "Tazama Wallets Zinazoendana",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "Thibitisha Kughairi",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "ร่วมกันยกเลิกการซื้อขาย",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "Unilateral cancelation (bond at risk!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "คุณขอให้อีกฝ่ายร่วมกันยกเลิกการซื้อขาย",
@ -558,8 +560,6 @@
"See Compatible Wallets": "ดูกระเป๋าบิทคอยน์ (Wallets) ที่สามารถใช้งานได้",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "ยืนยันยกเลิก",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "合作取消",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "单方面取消 (保证金风险!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "你要求了合作取消",
@ -558,8 +560,6 @@
"See Compatible Wallets": "查看兼容钱包列表",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "确认取消",

View File

@ -526,6 +526,8 @@
"#51": "Phrases in components/TradeBox/CancelButton.tsx",
"Cancel order": "Cancel order",
"Collaborative Cancel": "合作取消",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"Unilateral cancelation (bond at risk!)": "單方面取消(保證金風險!)",
"#52": "Phrases in components/TradeBox/CollabCancelAlert.tsx",
"You asked for a collaborative cancellation": "你要求了合作取消",
@ -558,8 +560,6 @@
"See Compatible Wallets": "查看兼容錢包列表",
"#55": "Phrases in components/TradeBox/index.tsx",
"A contact method is required": "A contact method is required",
"Copy URL": "Copy URL",
"Copy order URL": "Copy order URL",
"The statement is too short. Make sure to be thorough.": "The statement is too short. Make sure to be thorough.",
"#56": "Phrases in components/TradeBox/Dialogs/ConfirmCancel.tsx",
"Confirm Cancel": "確認取消",