mirror of
https://github.com/RoboSats/robosats.git
synced 2025-07-24 14:33:20 +00:00
Order view
This commit is contained in:
@ -259,301 +259,296 @@ const OrderDetails = ({
|
|||||||
setOpenWorldmap(false);
|
setOpenWorldmap(false);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Grid item xs={12}>
|
<List dense={true} style={{ width: '100%' }}>
|
||||||
<List dense={true}>
|
<ListItemButton
|
||||||
<ListItemButton
|
onClick={() => {
|
||||||
onClick={() => {
|
onClickCoordinator();
|
||||||
onClickCoordinator();
|
}}
|
||||||
}}
|
>
|
||||||
>
|
<Grid container direction='row' justifyContent='center' alignItems='center'>
|
||||||
<Grid container direction='row' justifyContent='center' alignItems='center'>
|
<Grid item sx={{ width: '64px' }}>
|
||||||
<Grid item xs={2}>
|
|
||||||
<RobotAvatar
|
|
||||||
shortAlias={coordinator.federated ? coordinator.shortAlias : undefined}
|
|
||||||
hashId={coordinator.federated ? undefined : coordinator.mainnet.onion}
|
|
||||||
small={true}
|
|
||||||
smooth={true}
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={4}>
|
|
||||||
<ListItemText primary={coordinator.longAlias} secondary={t('Order host')} />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ListItemButton>
|
|
||||||
{coordinator?.info && !coordinator?.info?.swap_enabled && (
|
|
||||||
<ListItem>
|
|
||||||
<Grid sx={{ marginBottom: 1 }}>
|
|
||||||
<Alert severity='warning' sx={{ marginTop: 2 }}>
|
|
||||||
{t('This coordinator does not support on-chain swaps.')}
|
|
||||||
</Alert>
|
|
||||||
</Grid>
|
|
||||||
</ListItem>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Divider />
|
|
||||||
|
|
||||||
<ListItem>
|
|
||||||
<ListItemAvatar sx={{ width: '4em', height: '4em' }}>
|
|
||||||
<RobotAvatar
|
<RobotAvatar
|
||||||
statusColor={statusBadgeColor(currentOrder?.maker_status ?? '')}
|
shortAlias={coordinator.federated ? coordinator.shortAlias : undefined}
|
||||||
hashId={currentOrder?.maker_hash_id}
|
hashId={coordinator.federated ? undefined : coordinator.mainnet.onion}
|
||||||
tooltip={t(currentOrder?.maker_status ?? '')}
|
small={true}
|
||||||
orderType={currentOrder?.type}
|
smooth={true}
|
||||||
|
style={{
|
||||||
|
height: '45px',
|
||||||
|
width: '45px',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
<Grid item>
|
||||||
|
<ListItemText primary={coordinator.longAlias} secondary={t('Order host')} />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</ListItemButton>
|
||||||
|
{coordinator?.info && !coordinator?.info?.swap_enabled && (
|
||||||
|
<ListItem>
|
||||||
|
<Grid sx={{ marginBottom: 1 }}>
|
||||||
|
<Alert severity='warning'>
|
||||||
|
{t('This coordinator does not support on-chain swaps.')}
|
||||||
|
</Alert>
|
||||||
|
</Grid>
|
||||||
|
</ListItem>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<Divider />
|
||||||
|
|
||||||
|
<ListItem>
|
||||||
|
<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}
|
||||||
|
small={true}
|
||||||
|
/>
|
||||||
|
</ListItemAvatar>
|
||||||
|
<ListItemText
|
||||||
|
primary={`${String(currentOrder?.maker_nick)} (${
|
||||||
|
currentOrder?.type === 1
|
||||||
|
? t(currentOrder?.currency === 1000 ? 'Swapping Out' : 'Seller')
|
||||||
|
: t(currentOrder?.currency === 1000 ? 'Swapping In' : 'Buyer')
|
||||||
|
})`}
|
||||||
|
secondary={t('Order maker')}
|
||||||
|
/>
|
||||||
|
</ListItem>
|
||||||
|
|
||||||
|
<Collapse in={currentOrder?.is_participant && currentOrder?.taker_nick !== 'None'}>
|
||||||
|
<Divider />
|
||||||
|
<ListItem>
|
||||||
|
<ListItemText
|
||||||
|
primary={`${String(currentOrder?.taker_nick)} (${
|
||||||
|
currentOrder?.type === 1
|
||||||
|
? t(currentOrder?.currency === 1000 ? 'Swapping In' : 'Buyer')
|
||||||
|
: t(currentOrder?.currency === 1000 ? 'Swapping Out' : 'Seller')
|
||||||
|
})`}
|
||||||
|
secondary={t('Order taker')}
|
||||||
|
/>
|
||||||
|
<ListItemAvatar>
|
||||||
|
<RobotAvatar
|
||||||
|
avatarClass='smallAvatar'
|
||||||
|
statusColor={statusBadgeColor(currentOrder?.taker_status ?? '')}
|
||||||
|
hashId={
|
||||||
|
currentOrder?.taker_hash_id === 'None' ? undefined : currentOrder?.taker_hash_id
|
||||||
|
}
|
||||||
|
tooltip={t(currentOrder?.taker_status ?? '')}
|
||||||
|
orderType={currentOrder?.type === 0 ? 1 : 0}
|
||||||
small={true}
|
small={true}
|
||||||
/>
|
/>
|
||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
|
</ListItem>
|
||||||
|
</Collapse>
|
||||||
|
<Divider>
|
||||||
|
<Chip label={t('Order Details')} />
|
||||||
|
</Divider>
|
||||||
|
|
||||||
|
<Collapse in={currentOrder?.is_participant}>
|
||||||
|
<ListItem>
|
||||||
|
<ListItemIcon>
|
||||||
|
<Article />
|
||||||
|
</ListItemIcon>
|
||||||
<ListItemText
|
<ListItemText
|
||||||
primary={`${String(currentOrder?.maker_nick)} (${
|
primary={t(currentOrder?.status_message ?? '')}
|
||||||
currentOrder?.type === 1
|
secondary={t('Order status')}
|
||||||
? t(currentOrder?.currency === 1000 ? 'Swapping Out' : 'Seller')
|
|
||||||
: t(currentOrder?.currency === 1000 ? 'Swapping In' : 'Buyer')
|
|
||||||
})`}
|
|
||||||
secondary={t('Order maker')}
|
|
||||||
/>
|
/>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
|
<Divider />
|
||||||
|
</Collapse>
|
||||||
|
|
||||||
<Collapse in={currentOrder?.is_participant && currentOrder?.taker_nick !== 'None'}>
|
<ListItem>
|
||||||
<Divider />
|
<ListItemIcon>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
zoom: 1.25,
|
||||||
|
opacity: 0.7,
|
||||||
|
msZoom: 1.25,
|
||||||
|
WebkitZoom: 1.25,
|
||||||
|
MozTransform: 'scale(1.25,1.25)',
|
||||||
|
MozTransformOrigin: 'left center',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<FlagWithProps code={currencyCode} width='1.2em' height='1.2em' />
|
||||||
|
</div>
|
||||||
|
</ListItemIcon>
|
||||||
|
<ListItemText
|
||||||
|
primary={amountString}
|
||||||
|
secondary={(currentOrder?.amount ?? 0) > 0 ? 'Amount' : 'Amount Range'}
|
||||||
|
/>
|
||||||
|
<ListItemIcon>
|
||||||
|
<IconButton
|
||||||
|
onClick={() => {
|
||||||
|
setShowSatsDetails(!showSatsDetails);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{showSatsDetails ? <ExpandLess /> : <ExpandMore color='primary' />}
|
||||||
|
</IconButton>
|
||||||
|
</ListItemIcon>
|
||||||
|
</ListItem>
|
||||||
|
|
||||||
|
<Collapse in={showSatsDetails}>
|
||||||
|
<List dense={true} sx={{ position: 'relative', bottom: '0.5em' }}>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<ListItemText
|
<ListItemIcon sx={{ position: 'relative', left: '0.3em' }}>
|
||||||
primary={`${String(currentOrder?.taker_nick)} (${
|
<SendReceiveIcon
|
||||||
currentOrder?.type === 1
|
sx={{ transform: 'scaleX(-1)', width: '0.9em', opacity: 0.9 }}
|
||||||
? t(currentOrder?.currency === 1000 ? 'Swapping In' : 'Buyer')
|
color='secondary'
|
||||||
: t(currentOrder?.currency === 1000 ? 'Swapping Out' : 'Seller')
|
|
||||||
})`}
|
|
||||||
secondary={t('Order taker')}
|
|
||||||
/>
|
|
||||||
<ListItemAvatar>
|
|
||||||
<RobotAvatar
|
|
||||||
avatarClass='smallAvatar'
|
|
||||||
statusColor={statusBadgeColor(currentOrder?.taker_status ?? '')}
|
|
||||||
hashId={
|
|
||||||
currentOrder?.taker_hash_id === 'None' ? undefined : currentOrder?.taker_hash_id
|
|
||||||
}
|
|
||||||
tooltip={t(currentOrder?.taker_status ?? '')}
|
|
||||||
orderType={currentOrder?.type === 0 ? 1 : 0}
|
|
||||||
small={true}
|
|
||||||
/>
|
/>
|
||||||
</ListItemAvatar>
|
</ListItemIcon>
|
||||||
|
<Typography variant='body2'>{satsSummary.send}</Typography>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
</Collapse>
|
|
||||||
<Divider>
|
|
||||||
<Chip label={t('Order Details')} />
|
|
||||||
</Divider>
|
|
||||||
|
|
||||||
<Collapse in={currentOrder?.is_participant}>
|
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<ListItemIcon>
|
<ListItemIcon sx={{ position: 'relative', left: '0.3em' }}>
|
||||||
<Article />
|
<SendReceiveIcon
|
||||||
</ListItemIcon>
|
sx={{ left: '0.1em', width: '0.9em', opacity: 0.9 }}
|
||||||
<ListItemText
|
color='primary'
|
||||||
primary={t(currentOrder?.status_message ?? '')}
|
|
||||||
secondary={t('Order status')}
|
|
||||||
/>
|
|
||||||
</ListItem>
|
|
||||||
<Divider />
|
|
||||||
</Collapse>
|
|
||||||
|
|
||||||
<ListItem>
|
|
||||||
<ListItemIcon>
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
zoom: 1.25,
|
|
||||||
opacity: 0.7,
|
|
||||||
msZoom: 1.25,
|
|
||||||
WebkitZoom: 1.25,
|
|
||||||
MozTransform: 'scale(1.25,1.25)',
|
|
||||||
MozTransformOrigin: 'left center',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<FlagWithProps code={currencyCode} width='1.2em' height='1.2em' />
|
|
||||||
</div>
|
|
||||||
</ListItemIcon>
|
|
||||||
<ListItemText
|
|
||||||
primary={amountString}
|
|
||||||
secondary={(currentOrder?.amount ?? 0) > 0 ? 'Amount' : 'Amount Range'}
|
|
||||||
/>
|
|
||||||
<ListItemIcon>
|
|
||||||
<IconButton
|
|
||||||
onClick={() => {
|
|
||||||
setShowSatsDetails(!showSatsDetails);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{showSatsDetails ? <ExpandLess /> : <ExpandMore color='primary' />}
|
|
||||||
</IconButton>
|
|
||||||
</ListItemIcon>
|
|
||||||
</ListItem>
|
|
||||||
|
|
||||||
<Collapse in={showSatsDetails}>
|
|
||||||
<List dense={true} sx={{ position: 'relative', bottom: '0.5em' }}>
|
|
||||||
<ListItem>
|
|
||||||
<ListItemIcon sx={{ position: 'relative', left: '0.3em' }}>
|
|
||||||
<SendReceiveIcon
|
|
||||||
sx={{ transform: 'scaleX(-1)', width: '0.9em', opacity: 0.9 }}
|
|
||||||
color='secondary'
|
|
||||||
/>
|
|
||||||
</ListItemIcon>
|
|
||||||
<Typography variant='body2'>{satsSummary.send}</Typography>
|
|
||||||
</ListItem>
|
|
||||||
|
|
||||||
<ListItem>
|
|
||||||
<ListItemIcon sx={{ position: 'relative', left: '0.3em' }}>
|
|
||||||
<SendReceiveIcon
|
|
||||||
sx={{ left: '0.1em', width: '0.9em', opacity: 0.9 }}
|
|
||||||
color='primary'
|
|
||||||
/>
|
|
||||||
</ListItemIcon>
|
|
||||||
<Typography variant='body2'>{satsSummary.receive}</Typography>
|
|
||||||
</ListItem>
|
|
||||||
</List>
|
|
||||||
</Collapse>
|
|
||||||
|
|
||||||
<Divider />
|
|
||||||
|
|
||||||
<ListItem>
|
|
||||||
<ListItemIcon>
|
|
||||||
<Payments />
|
|
||||||
</ListItemIcon>
|
|
||||||
<ListItemText
|
|
||||||
primary={
|
|
||||||
<PaymentStringAsIcons
|
|
||||||
size={1.42 * theme.typography.fontSize}
|
|
||||||
othersText={t('Others')}
|
|
||||||
verbose={true}
|
|
||||||
text={currentOrder?.payment_method}
|
|
||||||
/>
|
/>
|
||||||
}
|
|
||||||
secondary={
|
|
||||||
currentOrder?.currency === 1000
|
|
||||||
? t('Swap destination')
|
|
||||||
: t('Accepted payment methods')
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
{currentOrder?.payment_method.includes('Cash F2F') && (
|
|
||||||
<ListItemIcon>
|
|
||||||
<Tooltip enterTouchDelay={0} title={t('F2F location')}>
|
|
||||||
<div>
|
|
||||||
<IconButton
|
|
||||||
onClick={() => {
|
|
||||||
setOpenWorldmap(true);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Map />
|
|
||||||
</IconButton>
|
|
||||||
</div>
|
|
||||||
</Tooltip>
|
|
||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
)}
|
<Typography variant='body2'>{satsSummary.receive}</Typography>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<Divider />
|
</List>
|
||||||
|
</Collapse>
|
||||||
|
|
||||||
{/* If there is live Price and Premium data, show it. Otherwise show the order maker settings */}
|
<Divider />
|
||||||
<ListItem>
|
|
||||||
|
<ListItem>
|
||||||
|
<ListItemIcon>
|
||||||
|
<Payments />
|
||||||
|
</ListItemIcon>
|
||||||
|
<ListItemText
|
||||||
|
primary={
|
||||||
|
<PaymentStringAsIcons
|
||||||
|
size={1.42 * theme.typography.fontSize}
|
||||||
|
othersText={t('Others')}
|
||||||
|
verbose={true}
|
||||||
|
text={currentOrder?.payment_method}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
secondary={
|
||||||
|
currentOrder?.currency === 1000
|
||||||
|
? t('Swap destination')
|
||||||
|
: t('Accepted payment methods')
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
{currentOrder?.payment_method.includes('Cash F2F') && (
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<PriceChange />
|
<Tooltip enterTouchDelay={0} title={t('F2F location')}>
|
||||||
|
<div>
|
||||||
|
<IconButton
|
||||||
|
onClick={() => {
|
||||||
|
setOpenWorldmap(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Map />
|
||||||
|
</IconButton>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
|
)}
|
||||||
|
</ListItem>
|
||||||
|
<Divider />
|
||||||
|
|
||||||
{currentOrder?.price_now !== undefined ? (
|
{/* If there is live Price and Premium data, show it. Otherwise show the order maker settings */}
|
||||||
<ListItemText
|
<ListItem>
|
||||||
primary={t('{{price}} {{currencyCode}}/BTC - Premium: {{premium}}%', {
|
<ListItemIcon>
|
||||||
price: pn(currentOrder?.price_now),
|
<PriceChange />
|
||||||
currencyCode,
|
</ListItemIcon>
|
||||||
premium: currentOrder?.premium_now,
|
|
||||||
})}
|
|
||||||
secondary={t('Price and Premium')}
|
|
||||||
/>
|
|
||||||
) : null}
|
|
||||||
|
|
||||||
{currentOrder?.price_now === undefined && currentOrder?.is_explicit ? (
|
{currentOrder?.price_now !== undefined ? (
|
||||||
<ListItemText
|
<ListItemText
|
||||||
primary={pn(currentOrder?.satoshis)}
|
primary={t('{{price}} {{currencyCode}}/BTC - Premium: {{premium}}%', {
|
||||||
secondary={t('Amount of Satoshis')}
|
price: pn(currentOrder?.price_now),
|
||||||
/>
|
currencyCode,
|
||||||
) : null}
|
premium: currentOrder?.premium_now,
|
||||||
|
})}
|
||||||
|
secondary={t('Price and Premium')}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
|
|
||||||
{currentOrder?.price_now === undefined && !currentOrder?.is_explicit ? (
|
{currentOrder?.price_now === undefined && currentOrder?.is_explicit ? (
|
||||||
<ListItemText
|
<ListItemText
|
||||||
primary={`${parseFloat(Number(currentOrder?.premium).toFixed(2))}%`}
|
primary={pn(currentOrder?.satoshis)}
|
||||||
secondary={t('Premium over market price')}
|
secondary={t('Amount of Satoshis')}
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
</ListItem>
|
|
||||||
|
|
||||||
<Divider />
|
{currentOrder?.price_now === undefined && !currentOrder?.is_explicit ? (
|
||||||
|
<ListItemText
|
||||||
|
primary={`${parseFloat(Number(currentOrder?.premium).toFixed(2))}%`}
|
||||||
|
secondary={t('Premium over market price')}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
|
</ListItem>
|
||||||
|
|
||||||
<ListItem>
|
<Divider />
|
||||||
|
|
||||||
|
<Grid container direction='row' justifyContent='center' alignItems='center'>
|
||||||
|
<ListItem style={{ width: '50%' }}>
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<Numbers />
|
<Numbers />
|
||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
<Grid container>
|
<ListItemText primary={currentOrder?.id} secondary={t('Order ID')} />
|
||||||
<Grid item xs={4.5}>
|
|
||||||
<ListItemText primary={currentOrder?.id} secondary={t('Order ID')} />
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={7.5}>
|
|
||||||
<Grid container>
|
|
||||||
<Grid item xs={2}>
|
|
||||||
<ListItemIcon sx={{ position: 'relative', top: '12px', left: '-5px' }}>
|
|
||||||
<HourglassTop />
|
|
||||||
</ListItemIcon>
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={10}>
|
|
||||||
<ListItemText
|
|
||||||
primary={timerRenderer(currentOrder?.escrow_duration)}
|
|
||||||
secondary={t('Deposit timer')}
|
|
||||||
></ListItemText>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ListItem>
|
</ListItem>
|
||||||
|
|
||||||
{/* if order is in a status that does not expire, do not show countdown */}
|
<ListItem style={{ width: '50%' }}>
|
||||||
<Collapse in={![4, 5, 12, 13, 14, 15, 16, 17, 18].includes(currentOrder?.status ?? 0)}>
|
<ListItemIcon>
|
||||||
<Divider />
|
<HourglassTop />
|
||||||
<ListItem>
|
</ListItemIcon>
|
||||||
<ListItemIcon>
|
<ListItemText
|
||||||
<AccessTime />
|
primary={timerRenderer(currentOrder?.escrow_duration)}
|
||||||
</ListItemIcon>
|
secondary={t('Deposit')}
|
||||||
<ListItemText secondary={t('Expires in')}>
|
|
||||||
<Countdown
|
|
||||||
date={new Date(currentOrder?.expires_at ?? '')}
|
|
||||||
renderer={countdownRenderer}
|
|
||||||
/>
|
|
||||||
</ListItemText>
|
|
||||||
</ListItem>
|
|
||||||
<LinearDeterminate
|
|
||||||
totalSecsExp={currentOrder?.total_secs_exp ?? 0}
|
|
||||||
expiresAt={currentOrder?.expires_at ?? ''}
|
|
||||||
/>
|
/>
|
||||||
</Collapse>
|
</ListItem>
|
||||||
</List>
|
</Grid>
|
||||||
|
|
||||||
{/* If the user has a penalty/limit */}
|
{/* if order is in a status that does not expire, do not show countdown */}
|
||||||
{currentOrder?.penalty !== undefined ? (
|
<Collapse in={![4, 5, 12, 13, 14, 15, 16, 17, 18].includes(currentOrder?.status ?? 0)}>
|
||||||
<Grid item xs={12}>
|
<Divider />
|
||||||
<Alert severity='warning' sx={{ borderRadius: '0' }}>
|
<ListItem>
|
||||||
|
<ListItemIcon>
|
||||||
|
<AccessTime />
|
||||||
|
</ListItemIcon>
|
||||||
|
<ListItemText secondary={t('Expires in')}>
|
||||||
<Countdown
|
<Countdown
|
||||||
date={new Date(currentOrder?.penalty ?? '')}
|
date={new Date(currentOrder?.expires_at ?? '')}
|
||||||
renderer={countdownPenaltyRenderer}
|
renderer={countdownRenderer}
|
||||||
/>
|
/>
|
||||||
</Alert>
|
</ListItemText>
|
||||||
</Grid>
|
</ListItem>
|
||||||
) : (
|
<LinearDeterminate
|
||||||
<></>
|
totalSecsExp={currentOrder?.total_secs_exp ?? 0}
|
||||||
)}
|
expiresAt={currentOrder?.expires_at ?? ''}
|
||||||
|
/>
|
||||||
|
</Collapse>
|
||||||
|
</List>
|
||||||
|
|
||||||
{!currentOrder?.is_participant ? (
|
{/* If the user has a penalty/limit */}
|
||||||
<Grid item xs={12}>
|
{currentOrder?.penalty !== undefined ? (
|
||||||
<TakeButton
|
<Grid item style={{ width: '100%' }}>
|
||||||
currentOrder={currentOrder}
|
<Alert severity='warning' sx={{ borderRadius: '0' }}>
|
||||||
info={coordinator.info}
|
<Countdown
|
||||||
onClickGenerateRobot={onClickGenerateRobot}
|
date={new Date(currentOrder?.penalty ?? '')}
|
||||||
|
renderer={countdownPenaltyRenderer}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Alert>
|
||||||
) : (
|
</Grid>
|
||||||
<></>
|
) : (
|
||||||
)}
|
<></>
|
||||||
</Grid>
|
)}
|
||||||
|
|
||||||
|
{!currentOrder?.is_participant ? (
|
||||||
|
<Grid item style={{ width: '100%', padding: '8px' }}>
|
||||||
|
<TakeButton
|
||||||
|
currentOrder={currentOrder}
|
||||||
|
info={coordinator.info}
|
||||||
|
onClickGenerateRobot={onClickGenerateRobot}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
) : (
|
||||||
|
<></>
|
||||||
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -351,7 +351,7 @@ const EncryptedSocketChat: React.FC<Props> = ({
|
|||||||
/>
|
/>
|
||||||
</Paper>
|
</Paper>
|
||||||
<form noValidate onSubmit={onButtonClicked}>
|
<form noValidate onSubmit={onButtonClicked}>
|
||||||
<Grid alignItems='stretch' style={{ display: 'flex', width: '100%' }}>
|
<Grid alignItems='stretch' style={{ display: 'flex', width: '100%', marginTop: '8px' }}>
|
||||||
<Grid item alignItems='stretch' style={{ display: 'flex' }} xs={9}>
|
<Grid item alignItems='stretch' style={{ display: 'flex' }} xs={9}>
|
||||||
<TextField
|
<TextField
|
||||||
label={t('Type a message')}
|
label={t('Type a message')}
|
||||||
|
@ -332,7 +332,7 @@ const EncryptedTurtleChat: React.FC<Props> = ({
|
|||||||
/>
|
/>
|
||||||
</Paper>
|
</Paper>
|
||||||
<form noValidate onSubmit={onButtonClicked}>
|
<form noValidate onSubmit={onButtonClicked}>
|
||||||
<Grid alignItems='stretch' style={{ display: 'flex', width: '100%' }}>
|
<Grid alignItems='stretch' style={{ display: 'flex', width: '100%', marginTop: '8px' }}>
|
||||||
<Grid item alignItems='stretch' style={{ display: 'flex' }} xs={9}>
|
<Grid item alignItems='stretch' style={{ display: 'flex' }} xs={9}>
|
||||||
<TextField
|
<TextField
|
||||||
label={t('Type a message')}
|
label={t('Type a message')}
|
||||||
|
@ -19,14 +19,17 @@ export const ExpiredPrompt = ({
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Grid container spacing={1}>
|
<Grid container direction='row'>
|
||||||
<Grid item xs={12}>
|
<Grid item style={{ width: '100%' }}>
|
||||||
<Typography variant='body2' align='center'>
|
<Typography variant='body2' align='center'>
|
||||||
{t(order.expiry_message)}
|
{t(order.expiry_message)}
|
||||||
</Typography>
|
</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
{order.is_maker ? (
|
{order.is_maker ? (
|
||||||
<Grid item xs={12} style={{ display: 'flex', justifyContent: 'center' }}>
|
<Grid
|
||||||
|
item
|
||||||
|
style={{ display: 'flex', justifyContent: 'center', width: '100%', marginTop: '8px' }}
|
||||||
|
>
|
||||||
<LoadingButton
|
<LoadingButton
|
||||||
loading={loadingRenew}
|
loading={loadingRenew}
|
||||||
variant='outlined'
|
variant='outlined'
|
||||||
|
@ -827,7 +827,7 @@ const TradeBox = ({ currentOrder, onStartAgain }: TradeBoxProps): React.JSX.Elem
|
|||||||
<></>
|
<></>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Grid item>
|
<Grid item style={{ paddingTop: '8px' }}>
|
||||||
<CancelButton
|
<CancelButton
|
||||||
order={currentOrder ?? null}
|
order={currentOrder ?? null}
|
||||||
onClickCancel={cancel}
|
onClickCancel={cancel}
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Mètodes de pagament acceptats",
|
"Accepted payment methods": "Mètodes de pagament acceptats",
|
||||||
"Amount of Satoshis": "Quantitat de Sats",
|
"Amount of Satoshis": "Quantitat de Sats",
|
||||||
"Deposit timer": "Per a dipositar",
|
"Deposit": "Dipositar",
|
||||||
"Expires in": "Expira en",
|
"Expires in": "Expira en",
|
||||||
"F2F location": "Ubicació F2F",
|
"F2F location": "Ubicació F2F",
|
||||||
"Order Details": "Detalls",
|
"Order Details": "Detalls",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Akceptované platební metody",
|
"Accepted payment methods": "Akceptované platební metody",
|
||||||
"Amount of Satoshis": "Částka Satoshi",
|
"Amount of Satoshis": "Částka Satoshi",
|
||||||
"Deposit timer": "Časovač vkladu",
|
"Deposit": "Časovač vkladu",
|
||||||
"Expires in": "Vyprší za",
|
"Expires in": "Vyprší za",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Detaily nabídky",
|
"Order Details": "Detaily nabídky",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Akzeptierte Zahlungsweisen",
|
"Accepted payment methods": "Akzeptierte Zahlungsweisen",
|
||||||
"Amount of Satoshis": "Anzahl Satoshis",
|
"Amount of Satoshis": "Anzahl Satoshis",
|
||||||
"Deposit timer": "Einzahlungstimer",
|
"Deposit": "Einzahlungstimer",
|
||||||
"Expires in": "Läuft ab in",
|
"Expires in": "Läuft ab in",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Order-Details",
|
"Order Details": "Order-Details",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Accepted payment methods",
|
"Accepted payment methods": "Accepted payment methods",
|
||||||
"Amount of Satoshis": "Amount of Satoshis",
|
"Amount of Satoshis": "Amount of Satoshis",
|
||||||
"Deposit timer": "Deposit timer",
|
"Deposit": "Deposit",
|
||||||
"Expires in": "Expires in",
|
"Expires in": "Expires in",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Order Details",
|
"Order Details": "Order Details",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Métodos de pago aceptados",
|
"Accepted payment methods": "Métodos de pago aceptados",
|
||||||
"Amount of Satoshis": "Cantidad de Sats",
|
"Amount of Satoshis": "Cantidad de Sats",
|
||||||
"Deposit timer": "Tiempo para depositar",
|
"Deposit": "Depósito",
|
||||||
"Expires in": "Expira en",
|
"Expires in": "Expira en",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Detalles",
|
"Order Details": "Detalles",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Onartutako ordainketa moduak",
|
"Accepted payment methods": "Onartutako ordainketa moduak",
|
||||||
"Amount of Satoshis": "Satoshi kopurua",
|
"Amount of Satoshis": "Satoshi kopurua",
|
||||||
"Deposit timer": "Gordailu tenporizadorea",
|
"Deposit": "Gordailu tenporizadorea",
|
||||||
"Expires in": "Iraungitze denbora",
|
"Expires in": "Iraungitze denbora",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Xehetasunak",
|
"Order Details": "Xehetasunak",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Modes de paiement acceptés",
|
"Accepted payment methods": "Modes de paiement acceptés",
|
||||||
"Amount of Satoshis": "Montant de Satoshis",
|
"Amount of Satoshis": "Montant de Satoshis",
|
||||||
"Deposit timer": "Deposit timer",
|
"Deposit": "Deposit",
|
||||||
"Expires in": "Expire en",
|
"Expires in": "Expire en",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Détails de l'ordre",
|
"Order Details": "Détails de l'ordre",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Metodi di pagamento accettati",
|
"Accepted payment methods": "Metodi di pagamento accettati",
|
||||||
"Amount of Satoshis": "Quantità di sats",
|
"Amount of Satoshis": "Quantità di sats",
|
||||||
"Deposit timer": "Per depositare",
|
"Deposit": "Per depositare",
|
||||||
"Expires in": "Scade in",
|
"Expires in": "Scade in",
|
||||||
"F2F location": "Luogo F2F",
|
"F2F location": "Luogo F2F",
|
||||||
"Order Details": "Dettagli",
|
"Order Details": "Dettagli",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "受け付ける支払い方法",
|
"Accepted payment methods": "受け付ける支払い方法",
|
||||||
"Amount of Satoshis": "サトシの金額",
|
"Amount of Satoshis": "サトシの金額",
|
||||||
"Deposit timer": "デポジットタイマー",
|
"Deposit": "デポジットタイマー",
|
||||||
"Expires in": "有効期限",
|
"Expires in": "有効期限",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "注文の詳細",
|
"Order Details": "注文の詳細",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Akceptowane metody płatności",
|
"Accepted payment methods": "Akceptowane metody płatności",
|
||||||
"Amount of Satoshis": "Ilość Satoshis",
|
"Amount of Satoshis": "Ilość Satoshis",
|
||||||
"Deposit timer": "Deposit timer",
|
"Deposit": "Deposit",
|
||||||
"Expires in": "Wygasa za",
|
"Expires in": "Wygasa za",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Szczegóły zamówienia",
|
"Order Details": "Szczegóły zamówienia",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Métodos de pagamento aceitos",
|
"Accepted payment methods": "Métodos de pagamento aceitos",
|
||||||
"Amount of Satoshis": "Quantidade de Satoshis",
|
"Amount of Satoshis": "Quantidade de Satoshis",
|
||||||
"Deposit timer": "Temporizador de depósito",
|
"Deposit": "Depósito",
|
||||||
"Expires in": "Expira em",
|
"Expires in": "Expira em",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Detalhes da ordem",
|
"Order Details": "Detalhes da ordem",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Способ(ы) оплаты",
|
"Accepted payment methods": "Способ(ы) оплаты",
|
||||||
"Amount of Satoshis": "Количество Сатоши",
|
"Amount of Satoshis": "Количество Сатоши",
|
||||||
"Deposit timer": "Таймер депозита",
|
"Deposit": "депозита",
|
||||||
"Expires in": "Истекает через",
|
"Expires in": "Истекает через",
|
||||||
"F2F location": "F2F локация",
|
"F2F location": "F2F локация",
|
||||||
"Order Details": "Детали ордера",
|
"Order Details": "Детали ордера",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Accepterade betalningsmetoder",
|
"Accepted payment methods": "Accepterade betalningsmetoder",
|
||||||
"Amount of Satoshis": "Summa sats",
|
"Amount of Satoshis": "Summa sats",
|
||||||
"Deposit timer": "Insättningstimer",
|
"Deposit": "Insättningstimer",
|
||||||
"Expires in": "Förfaller om",
|
"Expires in": "Förfaller om",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Orderdetaljer",
|
"Order Details": "Orderdetaljer",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "Njia za malipo zilizokubaliwa",
|
"Accepted payment methods": "Njia za malipo zilizokubaliwa",
|
||||||
"Amount of Satoshis": "Kiasi cha Satoshis",
|
"Amount of Satoshis": "Kiasi cha Satoshis",
|
||||||
"Deposit timer": "Muda wa Amana",
|
"Deposit": "Muda wa Amana",
|
||||||
"Expires in": "Inamalizika ndani ya",
|
"Expires in": "Inamalizika ndani ya",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "Maelezo ya Agizo",
|
"Order Details": "Maelezo ya Agizo",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "วิธีชำระเงินเฟียตที่รองรับ",
|
"Accepted payment methods": "วิธีชำระเงินเฟียตที่รองรับ",
|
||||||
"Amount of Satoshis": "ปริมาณ Satoshis",
|
"Amount of Satoshis": "ปริมาณ Satoshis",
|
||||||
"Deposit timer": "ผู้ขายต้องวางเหรียญที่จะขายภายใน",
|
"Deposit": "ผู้ขายต้องวางเหรียญที่จะขายภายใน",
|
||||||
"Expires in": "หมดอายุใน",
|
"Expires in": "หมดอายุใน",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "รายละเอียดรายการ",
|
"Order Details": "รายละเอียดรายการ",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "接受的付款方法",
|
"Accepted payment methods": "接受的付款方法",
|
||||||
"Amount of Satoshis": "聪金额",
|
"Amount of Satoshis": "聪金额",
|
||||||
"Deposit timer": "存款倒计时",
|
"Deposit": "存款倒计时",
|
||||||
"Expires in": "内到期",
|
"Expires in": "内到期",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "订单详情",
|
"Order Details": "订单详情",
|
||||||
|
@ -450,7 +450,7 @@
|
|||||||
"#44": "Phrases in components/OrderDetails/index.tsx",
|
"#44": "Phrases in components/OrderDetails/index.tsx",
|
||||||
"Accepted payment methods": "接受的付款方法",
|
"Accepted payment methods": "接受的付款方法",
|
||||||
"Amount of Satoshis": "聰金額",
|
"Amount of Satoshis": "聰金額",
|
||||||
"Deposit timer": "存款計時器",
|
"Deposit": "存款計時器",
|
||||||
"Expires in": "內到期",
|
"Expires in": "內到期",
|
||||||
"F2F location": "F2F location",
|
"F2F location": "F2F location",
|
||||||
"Order Details": "訂單詳情",
|
"Order Details": "訂單詳情",
|
||||||
|
Reference in New Issue
Block a user