Merge branch 'main' into fix-chat-older-versions

This commit is contained in:
KoalaSat
2025-05-28 11:23:10 +00:00
committed by GitHub
15 changed files with 770 additions and 1303 deletions

View File

@ -42,6 +42,13 @@ LND_GRPC_HOST='localhost:10009'
REDIS_URL='redis://localhost:6379/1'
# If set to True, load to console (default is False)
# LOG_TO_CONSOLE=True
# If set, log to file specified (LOG_TO_CONSOLE should be False)
# LOG_FILE="<path>"
# Change logger level (default is "WARNING")
# LOGGER_LEVEL="WARNING"
# List of market price public APIs. If the currency is available in more than 1 API, will use median price.
MARKET_PRICE_APIS = https://blockchain.info/ticker, https://api.yadio.io/exrates/BTC, https://bitpay.com/rates/BTC, https://criptoya.com/api/btc

View File

@ -20,7 +20,7 @@ _!!! Cuidado com golpistas que se passam por administradores do RoboSats. Os adm
- **Simplex:** [Grupo Principal do RoboSats](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2F0YuTwO05YJWS8rkjn9eLJDjQhFKvIYd8d4xG8X1blIU%3D%40smp8.simplex.im%2FyEX_vdhWew_FkovCQC3mRYRWZB1j_cBq%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAnrf9Jw3Ajdp4EQw71kqA64VgsIIzw8YNn68WjF09jFY%253D%26srv%3Dbeccx4yfxxbvyhqypaavemqurytl6hozr47wfc7uuecacjqdvwpw2xid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22hWnMVPnJl-KT3-virDk0JA%3D%3D%22%7D). Tem perguntas ou um problema? Encontre suporte comunitário na conversa pública do grupo SimpleX. Se você quer se juntar a outros robôs legais e aprender mais sobre o RoboSats, então essas discussões acontecem no SimpleX, Nostr e nos grupos de chat Matrix.
- **Nostr:** [Grupo Geral do RoboSats](https://snort.social/e/note1tfwvglg8xz8420pfgav0dc9mqekv02nkpck2axefklrema7lk6wszmwxdy). Junte-se a outros robôs legais e não hesite em fazer perguntas sobre o RoboSats! Além disso, a conta [RoboSats Nostr](npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82) fornece atualizações importantes do projeto, dicas e truques de uso do RoboSats, e outros comentários centrados na privacidade. Perguntas e interações são bem-vindas. Lembre-se: problemas que exigem suporte da equipe do RoboSats devem ser direcionados para o grupo principal do SimpleX, onde as respostas são mais rápidas e a equipe pode investigar mais a fundo o seu problema.
- **Nostr:** [Grupo Geral do RoboSats](https://snort.social/e/note1tfwvglg8xz8420pfgav0dc9mqekv02nkpck2axefklrema7lk6wszmwxdy). Junte-se a outros robôs legais e não hesite em fazer perguntas sobre o RoboSats! Além disso, a conta [RoboSats Nostr](nprofile1qqsyx53h3h7ec4fwlspjq0kqec5gv54t7rc48xdtq6q4y94wsw4fnjqsg3jtv) fornece atualizações importantes do projeto, dicas e truques de uso do RoboSats, e outros comentários centrados na privacidade. Perguntas e interações são bem-vindas. Lembre-se: problemas que exigem suporte da equipe do RoboSats devem ser direcionados para o grupo principal do SimpleX, onde as respostas são mais rápidas e a equipe pode investigar mais a fundo o seu problema.
- **Matrix:** [Grupo de Desenvolvimento do RoboSats](https://matrix.to/#/#robosats:matrix.org). Grupo de chat principal de comunicação entre desenvolvedores, onde discussões abertas e técnicas sobre o desenvolvimento ocorrem. Discussões sobre mudanças de código acontecem em issues e pull requests (PRs) do GitHub.

File diff suppressed because it is too large Load Diff

View File

@ -15,29 +15,29 @@
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.27.1",
"@babel/plugin-transform-runtime": "^7.27.1",
"@babel/core": "^7.27.3",
"@babel/plugin-transform-runtime": "^7.27.3",
"@babel/preset-env": "^7.27.2",
"@babel/preset-react": "^7.27.1",
"@babel/preset-typescript": "^7.27.1",
"@babel/runtime": "^7.27.1",
"@babel/runtime": "^7.27.3",
"@eslint/compat": "^1.2.9",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.26.0",
"@eslint/js": "^9.27.0",
"@types/jest": "^29.5.14",
"@types/latlon-geohash": "^2.0.4",
"@types/leaflet": "^1.9.17",
"@types/react": "^19.1.3",
"@types/react-dom": "^19.1.3",
"@types/leaflet": "^1.9.18",
"@types/react": "^19.1.6",
"@types/react-dom": "^19.1.5",
"@types/webpack": "^5.28.5",
"@typescript-eslint/eslint-plugin": "^8.32.0",
"@typescript-eslint/parser": "^8.32.0",
"@typescript-eslint/eslint-plugin": "^8.33.0",
"@typescript-eslint/parser": "^8.33.0",
"babel-loader": "^10.0.0",
"css-loader": "^7.1.2",
"eslint": "^9.26.0",
"eslint": "^9.27.0",
"eslint-config-love": "^120.0.0",
"eslint-config-prettier": "^10.1.5",
"eslint-import-resolver-typescript": "^4.3.4",
"eslint-import-resolver-typescript": "^4.4.1",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-n": "^17.18.0",
"eslint-plugin-prettier": "^5.4.0",
@ -45,19 +45,18 @@
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"filemanager-webpack-plugin": "^8.0.0",
"globals": "^16.1.0",
"globals": "^16.2.0",
"html-webpack-plugin": "^5.6.3",
"jest": "^29.7.0",
"prettier": "^3.5.3",
"style-loader": "^4.0.0",
"ts-node": "^10.9.2",
"typescript": "^5.8.3",
"webpack": "^5.99.8",
"webpack": "^5.99.9",
"webpack-cli": "^6.0.1"
},
"dependencies": {
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@christopherpickering/react-leaflet-markercluster": "^1.1.0",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.0",
"@mui/base": "^5.0.0-beta.70",
@ -65,34 +64,35 @@
"@mui/lab": "^7.0.0-beta.12",
"@mui/material": "^7.1.0",
"@mui/system": "^7.1.0",
"@mui/x-data-grid": "^8.3.1",
"@mui/x-date-pickers": "^8.3.0",
"@nivo/core": "^0.96.0",
"@nivo/line": "^0.96.0",
"@mui/x-data-grid": "^8.4.0",
"@mui/x-date-pickers": "^8.4.0",
"@nivo/core": "^0.99.0",
"@nivo/line": "^0.99.0",
"base-ex": "^0.8.1",
"country-flag-icons": "^1.5.19",
"date-fns": "^4.1.0",
"file-replace-loader": "^1.4.2",
"i18next": "^25.1.2",
"i18next": "^25.2.1",
"i18next-browser-languagedetector": "^8.1.0",
"i18next-http-backend": "^3.0.2",
"install": "^0.13.0",
"js-sha256": "^0.11.0",
"js-sha256": "^0.11.1",
"latlon-geohash": "^2.0.0",
"leaflet": "^1.9.4",
"light-bolt11-decoder": "^3.2.0",
"nostr-tools": "^2.13.0",
"npm": "^11.3.0",
"npm": "^11.4.1",
"openpgp": "^5.11.0",
"react": "^18.3.0",
"react": "^19.1.0",
"react-countdown": "^2.3.6",
"react-dom": "^18.3.0",
"react-dom": "^19.1.0",
"react-grid-layout": "^1.5.1",
"react-i18next": "^15.5.1",
"react-i18next": "^15.5.2",
"react-image": "^4.1.0",
"react-leaflet": "^4.2.1",
"react-leaflet": "^5.0.0",
"react-leaflet-markercluster": "^5.0.0-rc.0",
"react-qr-code": "^2.0.15",
"react-router-dom": "^7.6.0",
"react-router-dom": "^7.6.1",
"react-smooth-image": "^1.1.0",
"react-world-flags": "^1.6.0",
"reconnecting-websocket": "^4.4.0",

View File

@ -26,7 +26,6 @@ interface Props {
const CommunityDialog = ({ open = false, onClose }: Props): React.JSX.Element => {
const { t } = useTranslation();
const [client] = window.RobosatsSettings.split('-');
const flagProps = {
width: 30,
@ -81,16 +80,11 @@ const CommunityDialog = ({ open = false, onClose }: Props): React.JSX.Element =>
<ListItemButton
component='a'
onClick={() => {
if (client === 'mobile') {
window.location.href =
'nostr:npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82';
} else {
window.open(
'https://njump.me/npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82',
'https://njump.me/nprofile1qqsyx53h3h7ec4fwlspjq0kqec5gv54t7rc48xdtq6q4y94wsw4fnjqsg3jtv',
'_blank',
'noopener,noreferrer',
);
}
}}
>
<ListItemIcon>

View File

@ -488,7 +488,7 @@ const MakerForm = ({
if (pos != null) handleAddLocation(pos);
setOpenWorldmap(false);
}}
zoom={maker.latitude != null && maker.longitude != null ? 6 : undefined}
zoom={maker.latitude === 0 && maker.longitude === 0 ? 2 : 6}
/>
<Collapse in={!(Object.keys(limits).lenght === 0 || collapseAll)}>
<Grid container justifyContent='space-between' spacing={0} sx={{ maxHeight: '1em' }}>

View File

@ -4,7 +4,7 @@ import { useTheme, LinearProgress } from '@mui/material';
import { DivIcon, type LeafletMouseEvent } from 'leaflet';
import { type PublicOrder } from '../../models';
import OrderTooltip from '../Charts/helpers/OrderTooltip';
import MarkerClusterGroup from '@christopherpickering/react-leaflet-markercluster';
import MarkerClusterGroup from 'react-leaflet-markercluster';
import { AppContext, type UseAppStoreType } from '../../contexts/AppContext';
interface MapPinProps {

View File

@ -248,6 +248,7 @@ const SettingsForm = ({ dense = false }: SettingsFormProps): React.JSX.Element =
</ListItemIcon>
<ToggleButtonGroup
exclusive={true}
sx={{ width: '100%' }}
value={settings.useProxy}
onChange={(_e, useProxy) => {
setSettings({ ...settings, useProxy });

View File

@ -83,7 +83,9 @@ const EncryptedChat: React.FC<Props> = ({
const wrappedEvent = nip17.wrapEvent(slot?.nostrSecKey, recipient, content);
wrappedEvent.tags.push(['expiration', (wrappedEvent.created_at + 2419200).toString()]);
const oneMonth = 2419200;
wrappedEvent.tags.push(['expiration', (wrappedEvent.created_at + oneMonth).toString()]);
federation.roboPool.sendEvent(wrappedEvent);
};

View File

@ -251,7 +251,7 @@ export const AppContextProvider = ({ children }: AppContextProviderProps): React
}, []);
useEffect(() => {
if (page === 'offers' && !worldmap) {
if (['offers', 'create'].includes(page) && !worldmap) {
getWorldmapGeojson(apiClient, hostUrl)
.then((data) => {
setWorldmap(data);

View File

@ -769,8 +769,6 @@ svg.leaflet-image-layer.leaflet-interactive path {
}
}
/* react-leaflet-cluster https://unpkg.com/@christopherpickering/react-leaflet-markercluster@1.1.0/dist/styles.min.css */
.marker-cluster-small {
background-color: rgba(181, 226, 140, 0.6);
}

View File

@ -1,9 +1,18 @@
robosats:
android:
identifier: com.robosats
name: Robosats
description: A simple and private bitcoin exchange
repository: https://github.com/RoboSats/robosats
summary: A simple and private bitcoin exchange
release_repository: https://github.com/RoboSats/robosats
images:
- ../../fastlane/metadata/en-US/images/phoneScreenshots/01.jpg
- ../../fastlane/metadata/en-US/images/phoneScreenshots/02.jpg
- ../../fastlane/metadata/en-US/images/phoneScreenshots/03.jpg
- ../../fastlane/metadata/en-US/images/phoneScreenshots/04.jpg
- ../../fastlane/metadata/en-US/images/phoneScreenshots/05.jpg
- ../../fastlane/metadata/en-US/images/phoneScreenshots/06.jpg
icon: ../../fastlane/metadata/en-US/images/icon.png
tags: privacy lightning bitcoin p2p tor exchange foss
license: AGPL-3.0
artifacts:
- robosats-v%v.alpha-universal.apk
remote_metadata:
- github
assets: # for github
- robosats-v\d+\.\d+\.\d+.\w+-universal.apk

View File

@ -7,7 +7,7 @@ django-redis==5.4.0
djangorestframework==3.15.2
channels==4.2.0
channels-redis==4.2.1
celery==5.4.0
celery==5.5.2
grpcio==1.67.0
googleapis-common-protos==1.70.0
grpcio-tools==1.67.0
@ -21,11 +21,11 @@ psycopg2==2.9.10
SQLAlchemy==2.0.16
django-import-export==4.3.7
requests[socks]
shapely==2.0.6
shapely==2.0.7
python-gnupg==0.5.3
daphne==4.1.2
drf-spectacular==0.28.0
drf-spectacular-sidecar==2024.12.1
drf-spectacular-sidecar==2025.5.1
django-cors-headers==4.7.0
base91==1.0.1
nostr-sdk==0.35.1

View File

@ -1,4 +1,4 @@
coverage==7.8.0
ruff==0.11.10
git+https://github.com/Reckless-Satoshi/drf-openapi-tester.git@soften-django-requirements
pre-commit==4.0.1
pre-commit==4.2.0

View File

@ -12,7 +12,6 @@ https://docs.djangoproject.com/en/4.0/ref/settings/
"""
import json
import os
import textwrap
from pathlib import Path
@ -59,7 +58,7 @@ CORS_ALLOW_ALL_ORIGINS = True
SESSION_COOKIE_HTTPONLY = False
# Logging settings
if os.environ.get("LOG_TO_CONSOLE"):
if config("LOG_TO_CONSOLE", cast=bool, default=False):
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
@ -70,12 +69,33 @@ if os.environ.get("LOG_TO_CONSOLE"):
},
"root": {
"handlers": ["console"],
"level": "WARNING",
"level": config("LOGGER_LEVEL", cast=str, default="WARNING"),
},
"loggers": {
"api.utils": {
"handlers": ["console"],
"level": "WARNING",
"level": config("LOGGER_LEVEL", cast=str, default="WARNING"),
},
},
}
elif config("LOG_FILE", False):
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
"file": {
"class": "logging.FileHandler",
"filename": config("LOG_FILE", cast=str),
},
},
"root": {
"handlers": ["file"],
"level": config("LOGGER_LEVEL", cast=str, default="WARNING"),
},
"loggers": {
"api.utils": {
"handlers": ["file"],
"level": config("LOGGER_LEVEL", cast=str, default="WARNING"),
},
},
}