mirror of
https://github.com/RoboSats/robosats.git
synced 2025-08-14 05:37:16 +00:00
Merge branch 'main' into pre-release-fixes-v0.8.1
This commit is contained in:
@ -41,7 +41,7 @@ class WebAppInterface(private val context: MainActivity, private val webView: We
|
||||
|
||||
// Security patterns for input validation
|
||||
private val UUID_PATTERN = Pattern.compile("^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", Pattern.CASE_INSENSITIVE)
|
||||
private val SAFE_STRING_PATTERN = Pattern.compile("^[a-zA-Z0-9\\s_\\-.,:;!?()\\[\\]{}]*$")
|
||||
private val SAFE_STRING_PATTERN = Pattern.compile("^[a-zA-Z0-9\s_\-.,:;!?()\[\]{}\"]*$")
|
||||
|
||||
// Maximum length for input strings
|
||||
private val MAX_INPUT_LENGTH = 1000
|
||||
|
@ -90,10 +90,10 @@ const BookControl = ({
|
||||
component = <SendReceiveIcon color='primary' />;
|
||||
text = t('Buy');
|
||||
} else if (value === 'swapin') {
|
||||
component = <SwapCalls color='secondary' />;
|
||||
component = <SwapCalls color='primary' />;
|
||||
text = t('Swap In');
|
||||
} else if (value === 'swapout') {
|
||||
component = <SwapCalls color='primary' />;
|
||||
component = <SwapCalls color='secondary' />;
|
||||
text = t('Swap Out');
|
||||
}
|
||||
|
||||
@ -159,14 +159,6 @@ const BookControl = ({
|
||||
</Typography>
|
||||
</div>
|
||||
</MenuItem>
|
||||
<MenuItem value='sell' style={{ width: '8em' }}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap' }}>
|
||||
<SendReceiveIcon color='secondary' sx={{ transform: 'scaleX(-1)' }} />
|
||||
<Typography sx={{ width: '2em' }} align='right' color='text.secondary'>
|
||||
{' ' + t('Sell')}
|
||||
</Typography>
|
||||
</div>
|
||||
</MenuItem>
|
||||
<MenuItem value='buy' style={{ width: '8em' }}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap' }}>
|
||||
<SendReceiveIcon color='primary' />
|
||||
@ -175,9 +167,17 @@ const BookControl = ({
|
||||
</Typography>
|
||||
</div>
|
||||
</MenuItem>
|
||||
<MenuItem value='sell' style={{ width: '8em' }}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap' }}>
|
||||
<SendReceiveIcon color='secondary' sx={{ transform: 'scaleX(-1)' }} />
|
||||
<Typography sx={{ width: '2em' }} align='right' color='text.secondary'>
|
||||
{' ' + t('Sell')}
|
||||
</Typography>
|
||||
</div>
|
||||
</MenuItem>
|
||||
<MenuItem value='swapin' style={{ width: '8em' }}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap' }}>
|
||||
<SwapCalls color='secondary' />
|
||||
<SwapCalls color='primary' />
|
||||
<Typography sx={{ width: '2em' }} align='right' color='text.secondary'>
|
||||
{' ' + t('Swap In')}
|
||||
</Typography>
|
||||
@ -185,7 +185,7 @@ const BookControl = ({
|
||||
</MenuItem>
|
||||
<MenuItem value='swapout' style={{ width: '8em' }}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap' }}>
|
||||
<SwapCalls color='primary' />
|
||||
<SwapCalls color='secondary' />
|
||||
<Typography sx={{ width: '2em' }} align='right' color='text.secondary'>
|
||||
{' ' + t('Swap Out')}
|
||||
</Typography>
|
||||
|
@ -423,6 +423,11 @@ const icons = {
|
||||
image:
|
||||
'data:image/webp;base64,UklGRioEAABXRUJQVlA4WAoAAAAQAAAATwAATwAAQUxQSNsBAAABkIJt21o3b3KuMjN3zLwpBrVUDlTVSHazO7rgxszgeirHoBpXrhozc5nbfKMk//9/38hFxATgP6fTytDRYrURwzZLh0MsHR0uD1fDKmK6St11LteULfG4eItVxYhtTNHMcT7jM9WcI8bnlJSNcBopU3GIWB9SkDfAayAvXB0xrw2V0cWtKyNMlNhHQyR94Pc+KVgVCVgVKO65BM/jgmwlEbcGsO/JcM/220JCbvZrk6LVxyExN/yqUY7GX6wkQVf+dE2SqwAWe5J4i4F6ErUeM8dlGZ9xloQ9+1Gaj8u7ZOlagaWfJPm0DMC8d3K8m4+fZ7yU4uVM/HryYxmeTIZ/yV0J7pUgaH4nv858BM9u4tacjbDpLi83HeGTb3O6kwKViZf5XE6E2rgYl4Y4qI5c5HEpAvX2cQ4nbOi09pq3z4LmatNqoH+PWVGYuMszx9sNM3dMmDKxE6ZWjpkxVglzN46YMLIRJlcM6husgNnr+3T1rYfpy7v0dK2A+Us/6fi0FBznv1P3bj54znip6uVMcJ38WM3jyeBbclfFvRJwzu8M15kP3tlNYZqywT3dDeamg3/y7SC3UyBh4mW/y4mQMS72q4Y4SBm5+NPFCOS0TxCdsCGpVVtr4T8tAFZQOCAoAgAA0A4AnQEqUABQAD6hRJdKv6QiIbrbbAPwFAlmEMA1QSIAKjV9/3bkSw4/NbYDcE/7ffZt5ev0ZjxbCiUpTm7M1M8jmgXOkhc1McDQJF7fFaD6c6HNJCfvu7J/19JPjy+lPwmUlAOoHkGz6k/f5NU2SY933pwaYAV1vDKX/ESgAAD+7zh//s10J9j13i43+RTef33k+ov2tyV0+1RX5GuIQUogOh8VVKSiPbYdUgc3zRYbAF7yq1fwRgiO5Du9PwkNt0cJHoT5wxaIhrH7bdleZ/nYOBT0/b+LJ/vyJh/JS52a/5DwgfDup0WV8RoaQhXTB/7HWvaf5MqgLUsAnkHGjFBKuYdtO66BZotLFZQgvpx4eRbx6ABnt/oT6GCSmR55+DeZWW9uSbD5scKe8WgLzfreJ0HYK7754yiIdrgCjP9oHKo2Hzl09Ok1Z3dYAQbWFPILujp15d3l+MO62uDhrPmV6ZzwvGBx8brIK9uDTK5G20dnbm0X8kMDie/lWOXI462FRifJmUHshb73mvs9A3prCQ/X+80zJP4HLRkHzCWUDSZnFvNJ6UWHcKkRZTzQ/yiCPsR+GUS+d4gKKFWmwwMAoO9JYd9Z4yzfR0cQQVnqEgYDv8LmgCe7+QxtBQ//n73+WDP8ALwvJr+07818/mLU8NcEbgZDxAQp7zeiv+5qAvTT21pfRFBu9BWME0yLIAYoC2RzaQxx7FV55zUni6ZMMfPJH8AA',
|
||||
},
|
||||
usdc: {
|
||||
title: 'usdc',
|
||||
image:
|
||||
'data:image/webp;base64,UklGRj4EAABXRUJQVlA4WAoAAAAQAAAATwAATwAAQUxQSBUBAAARJ0AmbZurqr5l5yIiyB2uY9t2kodQAKgFxALSK4Bw+q9Kuedu029E/xm4baQoXTjGoTeUUMfHItXHtiR104p2GfpFq6qNzUGhNn43mtutljoje8IsU5eQq2y1EYtPDZiU0H79HKXUBDM0Kan4KsBFlizVs5SU1Ux59tC6VF/XodWRoDMsNGWtQvS8B9oxStCOiWH/8teQPydIpadorhTtSNFxTBT7meKyUNTPQ39X3/t/Ofvj7Pnz/IjzXy4eYPGFi1dc/OPiKRefsXjP5Q8uH3H5DcuXdP49AOtYfcDVG1j9wtVDXH2F1WtY/QfWk5Fm30JD+sXc1pRYB9tSnGZ2r/ndOSE8I6HbGruS1PGxSPWxLZEKAFZQOCACAwAA0BMAnQEqUABQAD8lfrZULiekoyucawHAJIlsAL6BQX4BzD2REJtaEWfLJ1LwNfRlt4ufI8+C+W79JfjW0ZuzSpBvxGsswfCn3X2ZPwdNvd8RHRuJuC2LUxIuwfA6iCOAKrIBn5PMaDx68Vs2cJW2tqXLoUmGP9ooKKm0BUQvmcpR0XMbTg/K/q5VRFnz0eK5JRvUkMX5wwSfqTR5c2af6g8dVuSpwQAA/tPcNrANNlyRATJIuGE7RMhfErp6jLEAEXTMuyuH4NsKlfHHjVqw+IBjLiqL4ZFkGTz3SuQepslqNAd02f/F8d9woX3/s4ShrlDnkcWbwdooDG9md/PN/rqZ/4Lv/9Rp/8nD//qNbhPOPmYPvoHzm+gSRtHogV5EzDDLlOk3G3m04t7BPZoGAcuaClG3QtlgjMR57vnO9iFy8BfxfW/ToRVrq1N/pHjR5TBY8IwL/RTXQTrBeG53A5C06vZA21gtFlUNe4FkgkZDdjdp1DBjvw/Eo8ry9pwiTt1jPmvwfXZhqyaey47i/Hrj036B2tXUgLcZVVh8rmXNOod1amD7mKYMnsARV4ko/cD7zf5pt+g0jazEDJtvJ3Kta7NM3gwbFGKL8HftZ/Xw9idehc8xQ8KlNjtYWyh+igSpY23IoEPPgt3OKd1GVpWofHpvw+r3FWdb/y+qj0pjW5xXgn49kbT3WjFL3tQOi0rpzzwPVWhzNjLFZcg5VCqSMsH5NisTyn1BXNioMwcGcG/rtovQ4mkCiRFvFjDhbTr2dwjBrRQ6+u105FdYTIXfneCjLaLyETt+ml7tpbpVfTYzeMGCOHCgqBtpbKphhh6jh9RUYtzMZ1F5rX3zGXBK9oVwLwYn8KvOTYSpUKeuaUIMxlRGQqSz/X2CrnBkK56A8xuZTI2Hk+E0OBqAA2haWHmhbxYw1x2P+I6cPlTprxpdjfBIA34pB3gyT++H4hrkotajOh2LBcGQ/SVIXyx4DRDaFZz/gOJ//6jT/5Bf//TphmP9xUl6mg3dZ/gAAAA=',
|
||||
},
|
||||
venmo: {
|
||||
title: 'venmo',
|
||||
image:
|
||||
|
BIN
frontend/src/components/PaymentMethods/Icons/usdc.png
Normal file
BIN
frontend/src/components/PaymentMethods/Icons/usdc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 146 KiB |
@ -60,6 +60,7 @@ export const fiatMethods: PaymentMethod[] = [
|
||||
{ name: 'Monero', icon: 'monero', reversible: false },
|
||||
{ name: 'USDT', icon: 'usdt', reversible: false },
|
||||
{ name: 'L-USDt', icon: 'usdtliquid', reversible: false },
|
||||
{ name: 'USDC', icon: 'usdc', reversible: false },
|
||||
{ name: 'Airtel Money', icon: 'airtel', reversible: false },
|
||||
{ name: 'MTN Money', icon: 'mtn', reversible: false },
|
||||
{ name: 'M-Pesa', icon: 'mpesa', reversible: false },
|
||||
|
@ -33,9 +33,9 @@ const StringAsIcons: React.FC<StringAsIconsProps> = ({
|
||||
|
||||
// Adds icons for each PaymentMethod that matches
|
||||
methods.forEach((method, i) => {
|
||||
const regex = new RegExp(`\\b${method.name}\\b`, 'g');
|
||||
const regex = new RegExp(`\\b${method.name.toLowerCase()}\\b`, 'g');
|
||||
|
||||
if (regex.test(customMethods)) {
|
||||
if (regex.test(customMethods.toLowerCase())) {
|
||||
customMethods = customMethods.replace(regex, '');
|
||||
rows.push(
|
||||
<Tooltip
|
||||
|
@ -1,5 +1,5 @@
|
||||
ruff==0.12.5
|
||||
coverage==7.10.0
|
||||
ruff==0.12.7
|
||||
coverage==7.10.1
|
||||
git+https://github.com/Reckless-Satoshi/drf-openapi-tester.git@soften-django-requirements
|
||||
pre-commit==4.2.0
|
||||
python-dotenv[cli]==1.1.1
|
||||
|
Reference in New Issue
Block a user