mirror of
https://github.com/RoboSats/robosats.git
synced 2025-09-13 00:56:22 +00:00
v0.8.1 Pre-release reports
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import React, { useContext } from 'react';
|
||||
import React, { useContext, useEffect, useState } from 'react';
|
||||
import { MemoryRouter, HashRouter, BrowserRouter, BrowserRouterProps } from 'react-router-dom';
|
||||
import { Box, Typography, styled } from '@mui/material';
|
||||
import { type UseAppStoreType, AppContext } from '../contexts/AppContext';
|
||||
@ -43,10 +43,13 @@ const MainBox = styled(Box)<MainBoxProps>((props) => ({
|
||||
const Main: React.FC = () => {
|
||||
const { t } = useTranslation();
|
||||
const { settings, navbarHeight } = useContext<UseAppStoreType>(AppContext);
|
||||
const [show, setShow] = useState<boolean>(false);
|
||||
|
||||
useEffect(() => setShow(settings.network === 'testnet'), [settings.network]);
|
||||
|
||||
return (
|
||||
<Router>
|
||||
{settings.network === 'testnet' ? (
|
||||
{show ? (
|
||||
<TestnetTypography color='secondary' align='center'>
|
||||
<i>{t('Using Testnet Bitcoin')}</i>
|
||||
</TestnetTypography>
|
||||
|
||||
@ -202,22 +202,38 @@ const RobotProfile = ({
|
||||
</Grid>
|
||||
) : null}
|
||||
|
||||
{!slot?.activeOrder && slot?.lastOrder ? (
|
||||
<Grid item container direction='column' alignItems='center'>
|
||||
<Grid item>
|
||||
<Button
|
||||
onClick={() => {
|
||||
navigateToPage(
|
||||
`order/${String(slot?.lastOrder?.shortAlias)}/${String(slot?.lastOrder?.id)}`,
|
||||
navigate,
|
||||
);
|
||||
}}
|
||||
>
|
||||
{t('Last order #{{orderID}}', { orderID: slot?.lastOrder?.id })}
|
||||
</Button>
|
||||
<Grid item container direction='row' alignItems='center'>
|
||||
{!slot?.activeOrder && slot?.lastOrder ? (
|
||||
<Grid item container direction='column' alignItems='center'>
|
||||
<Grid item>
|
||||
<Button
|
||||
onClick={() => {
|
||||
navigateToPage(
|
||||
`order/${String(slot?.lastOrder?.shortAlias)}/${String(slot?.lastOrder?.id)}`,
|
||||
navigate,
|
||||
);
|
||||
}}
|
||||
>
|
||||
{t('Last order #{{orderID}}', { orderID: slot?.lastOrder?.id })}
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
) : null}
|
||||
) : null}
|
||||
|
||||
{slot?.availableRewards !== null && (
|
||||
<Grid item container direction='column' alignItems='center'>
|
||||
<Grid item>
|
||||
<Button
|
||||
onClick={() => {
|
||||
setOpen({ ...closeAll, profile: !open.profile });
|
||||
}}
|
||||
>
|
||||
{t('Claim Rewards')}
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
)}
|
||||
</Grid>
|
||||
|
||||
{!slot?.activeOrder && !slot?.lastOrder && !federation.loading ? (
|
||||
<Grid item>{t('No existing orders found')}</Grid>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import React, { useContext, useEffect, useState } from 'react';
|
||||
import React, { useContext, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import {
|
||||
@ -32,10 +32,6 @@ const ProfileDialog = ({ open = false, onClose }: Props): React.JSX.Element => {
|
||||
const { t } = useTranslation();
|
||||
const [audit, setAudit] = useState<boolean>(false);
|
||||
|
||||
useEffect(() => {
|
||||
loadRobot(garage.currentSlot ?? '');
|
||||
}, []);
|
||||
|
||||
const loadRobot = (token: string) => {
|
||||
garage.setCurrentSlot(token);
|
||||
garage.fetchRobot(federation, garage.getSlot()?.token ?? '');
|
||||
|
||||
@ -117,6 +117,11 @@ const RobotInfo: React.FC<Props> = ({ coordinator, onClose }: Props) => {
|
||||
)
|
||||
}
|
||||
/>
|
||||
{(robot?.earnedRewards ?? 0) > 0 && (
|
||||
<ListItemIcon>
|
||||
<EmojiEvents />
|
||||
</ListItemIcon>
|
||||
)}
|
||||
</ListItemButton>
|
||||
<Dialog open={openOptions} key={coordinator.shortAlias} onClose={() => setOpenOptions(false)}>
|
||||
<DialogContent>
|
||||
|
||||
@ -29,12 +29,14 @@ import {
|
||||
} from '@mui/icons-material';
|
||||
import { systemClient } from '../../services/System';
|
||||
import Tor from '../Icons/Tor';
|
||||
import { UseFederationStoreType, FederationContext } from '../../contexts/FederationContext';
|
||||
|
||||
interface SettingsFormProps {
|
||||
dense?: boolean;
|
||||
}
|
||||
|
||||
const SettingsForm = ({ dense = false }: SettingsFormProps): React.JSX.Element => {
|
||||
const { updateConnection } = useContext<UseFederationStoreType>(FederationContext);
|
||||
const { settings, setSettings, client } = useContext<UseAppStoreType>(AppContext);
|
||||
const theme = useTheme();
|
||||
const { t } = useTranslation();
|
||||
@ -227,6 +229,8 @@ const SettingsForm = ({ dense = false }: SettingsFormProps): React.JSX.Element =
|
||||
exclusive={true}
|
||||
value={settings.network}
|
||||
onChange={(_e, network) => {
|
||||
const newSetting = { ...settings, network };
|
||||
updateConnection(newSetting);
|
||||
setSettings({ ...settings, network });
|
||||
systemClient.setItem('settings_network', network);
|
||||
}}
|
||||
|
||||
@ -151,6 +151,7 @@ export const LightningPayoutForm = ({
|
||||
// filter lnproxies when the network settings are updated
|
||||
let bitcoinNetwork: string = 'mainnet';
|
||||
let internetNetwork: 'Clearnet' | 'I2P' | 'TOR' = 'Clearnet';
|
||||
|
||||
useEffect(() => {
|
||||
bitcoinNetwork = settings?.network ?? 'mainnet';
|
||||
if (settings.host?.includes('.i2p') === true) {
|
||||
|
||||
@ -153,7 +153,6 @@ export const AppContextProvider = ({ children }: AppContextProviderProps): React
|
||||
}, [settings.fontSize, settings.mode, settings.lightQRs]);
|
||||
|
||||
useEffect(() => {
|
||||
setSettings(getSettings());
|
||||
void i18n.changeLanguage(settings.language);
|
||||
}, []);
|
||||
|
||||
|
||||
@ -18,14 +18,14 @@ export interface UseFederationStoreType {
|
||||
federation: Federation;
|
||||
federationUpdatedAt: string;
|
||||
setFederationUpdatedAt: (federationUpdatedAt: string) => void;
|
||||
updateConnection: (settings: Settings) => void;
|
||||
}
|
||||
|
||||
const initialFederation = new Federation('onion', new Settings(), '');
|
||||
|
||||
export const initialFederationContext: UseFederationStoreType = {
|
||||
federation: initialFederation,
|
||||
federation: new Federation('onion', new Settings(), ''),
|
||||
federationUpdatedAt: '',
|
||||
setFederationUpdatedAt: () => {},
|
||||
updateConnection: () => {},
|
||||
};
|
||||
|
||||
export const FederationContext = createContext<UseFederationStoreType>(initialFederationContext);
|
||||
@ -36,9 +36,13 @@ export const FederationContextProvider = ({
|
||||
const { settings, page, origin, hostUrl, torStatus, client, fav } =
|
||||
useContext<UseAppStoreType>(AppContext);
|
||||
const { setMaker } = useContext<UseGarageStoreType>(GarageContext);
|
||||
const [federation] = useState(initialFederationContext.federation);
|
||||
const [federation] = useState(new Federation(origin, settings, hostUrl));
|
||||
const [federationUpdatedAt, setFederationUpdatedAt] = useState<string>(new Date().toISOString());
|
||||
|
||||
const updateConnection = (settings: Settings) => {
|
||||
federation.setConnection(origin, settings, hostUrl, fav.coordinator);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
setMaker((maker) => {
|
||||
return { ...maker, coordinator: federation.getCoordinatorsAlias()[0] };
|
||||
@ -49,9 +53,7 @@ export const FederationContextProvider = ({
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (client !== 'mobile' || torStatus === 'ON' || !settings.useProxy) {
|
||||
federation.setConnection(origin, settings, hostUrl, fav.coordinator);
|
||||
}
|
||||
if (client !== 'mobile' || torStatus === 'ON' || !settings.useProxy) updateConnection(settings);
|
||||
}, [settings.network, settings.useProxy, torStatus, settings.connection]);
|
||||
|
||||
useEffect(() => {
|
||||
@ -64,6 +66,7 @@ export const FederationContextProvider = ({
|
||||
federation,
|
||||
federationUpdatedAt,
|
||||
setFederationUpdatedAt,
|
||||
updateConnection,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
|
||||
@ -54,7 +54,7 @@ class BaseSettings {
|
||||
});
|
||||
|
||||
systemClient.getItem('settings_network').then((result) => {
|
||||
this.network = result && result !== '' ? (result as 'mainnet' | 'testnet') : this.network;
|
||||
this.network = result && result !== '' ? (result as 'mainnet' | 'testnet') : 'mainnet';
|
||||
});
|
||||
|
||||
systemClient.getItem('settings_notifications').then((result) => {
|
||||
@ -80,7 +80,7 @@ class BaseSettings {
|
||||
public lightQRs: boolean = false;
|
||||
public language?: Language;
|
||||
public freezeViewports: boolean = false;
|
||||
public network: 'mainnet' | 'testnet' = 'mainnet';
|
||||
public network?: 'mainnet' | 'testnet';
|
||||
public connection: 'api' | 'nostr' = 'nostr';
|
||||
public host?: string;
|
||||
public unsafeClient: boolean = false;
|
||||
|
||||
@ -58,6 +58,7 @@ class Slot {
|
||||
lastOrder: Order | null = null;
|
||||
nostrSecKey?: Uint8Array;
|
||||
nostrPubKey?: string;
|
||||
availableRewards: string | null = null;
|
||||
|
||||
onSlotUpdate: () => void;
|
||||
|
||||
@ -99,6 +100,14 @@ class Slot {
|
||||
shortAlias: robot.shortAlias,
|
||||
});
|
||||
}
|
||||
|
||||
this.availableRewards =
|
||||
robot.earnedRewards != undefined && robot.earnedRewards > 0
|
||||
? robot.shortAlias
|
||||
: this.availableRewards === robot.shortAlias
|
||||
? null
|
||||
: this.availableRewards;
|
||||
|
||||
this.onSlotUpdate();
|
||||
};
|
||||
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Ordre activa #{{orderID}}",
|
||||
"Add Robot": "Afegir Robot",
|
||||
"Building...": "Construint...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Delete Robot",
|
||||
"Last order #{{orderID}}": "Última ordre #{{orderID}}",
|
||||
"Looking for orders!": "Buscant ordres!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Aktivní objednávka #{{orderID}}",
|
||||
"Add Robot": "Přidat robota",
|
||||
"Building...": "Budování...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Smazat robota",
|
||||
"Last order #{{orderID}}": "Poslední objednávka #{{orderID}}",
|
||||
"Looking for orders!": "Hledání objednávek!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Aktive Bestellung #{{orderID}}",
|
||||
"Add Robot": "Roboter hinzufügen",
|
||||
"Building...": "Erstelle...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Roboter löschen",
|
||||
"Last order #{{orderID}}": "Letzte Bestellung #{{orderID}}",
|
||||
"Looking for orders!": "Suche nach Bestellungen!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Active order #{{orderID}}",
|
||||
"Add Robot": "Add Robot",
|
||||
"Building...": "Building...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Delete Robot",
|
||||
"Last order #{{orderID}}": "Last order #{{orderID}}",
|
||||
"Looking for orders!": "Looking for orders!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Orden activa #{{orderID}}",
|
||||
"Add Robot": "Añadir Robot",
|
||||
"Building...": "Construyendo...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Eliminar Robot",
|
||||
"Last order #{{orderID}}": "Última orden #{{orderID}}",
|
||||
"Looking for orders!": "Buscando órdenes!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Eskaera aktiboa #{{orderID}}",
|
||||
"Add Robot": "Gehitu Robota",
|
||||
"Building...": "Eraikitzen...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Ezabatu Robota",
|
||||
"Last order #{{orderID}}": "Azken eskaera #{{orderID}}",
|
||||
"Looking for orders!": "Eskaerak bilatzen!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Ordre actif #{{orderID}}",
|
||||
"Add Robot": "Ajouter un robot",
|
||||
"Building...": "Construction...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Supprimer le robot",
|
||||
"Last order #{{orderID}}": "Dernier ordre #{{orderID}}",
|
||||
"Looking for orders!": "Recherche de commandes !",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Ordine attivo #{{orderID}}",
|
||||
"Add Robot": "Aggiungi robot",
|
||||
"Building...": "Costruzione...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Elimina robot",
|
||||
"Last order #{{orderID}}": "Ultimo ordine #{{orderID}}",
|
||||
"Looking for orders!": "Alla ricerca di ordini!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "公開中の注文 #{{orderID}}",
|
||||
"Add Robot": "ロボットを追加",
|
||||
"Building...": "生成中...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "ロボットを削除",
|
||||
"Last order #{{orderID}}": "直前の注文 #{{orderID}}",
|
||||
"Looking for orders!": "注文を探しています!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Aktywne zamówienie #{{orderID}}",
|
||||
"Add Robot": "Dodaj Robota",
|
||||
"Building...": "Budowanie...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Usuń robota",
|
||||
"Last order #{{orderID}}": "Ostatnie zamówienie #{{orderID}}",
|
||||
"Looking for orders!": "Szukam zamówień!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Ordem ativa #{{orderID}}",
|
||||
"Add Robot": "Adicionar Robô",
|
||||
"Building...": "Criando...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Deletar Robô",
|
||||
"Last order #{{orderID}}": "Última ordem #{{orderID}}",
|
||||
"Looking for orders!": "Procurando por ordens!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Активный ордер #{{orderID}}",
|
||||
"Add Robot": "Добавить робота",
|
||||
"Building...": "Строим...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Удалить робота",
|
||||
"Last order #{{orderID}}": "Последний ордер #{{orderID}}",
|
||||
"Looking for orders!": "В поисках ордеров!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Aktiv order #{{orderID}}",
|
||||
"Add Robot": "Lägg till robot",
|
||||
"Building...": "Bygger...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Radera robot",
|
||||
"Last order #{{orderID}}": "Senaste order #{{orderID}}",
|
||||
"Looking for orders!": "Letar efter ordrar!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "Amri hai #{{orderID}}",
|
||||
"Add Robot": "Ongeza Roboti",
|
||||
"Building...": "Inajengwa...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "Futa Roboti",
|
||||
"Last order #{{orderID}}": "Amri ya mwisho #{{orderID}}",
|
||||
"Looking for orders!": "Inatafuta amri!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "รายการที่ใช้งาน #{{orderID}}",
|
||||
"Add Robot": "เพิ่มหุ่นยนต์",
|
||||
"Building...": "กำลังสร้าง...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "ลบหุ่นยนต์",
|
||||
"Last order #{{orderID}}": "คำสั่งล่าสุด #{{orderID}}",
|
||||
"Looking for orders!": "กำลังมองหาคำสั่งซื้อ!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "活跃订单 #{{orderID}}",
|
||||
"Add Robot": "添加机器人",
|
||||
"Building...": "正在建造...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "删除机器人",
|
||||
"Last order #{{orderID}}": "上一张订单 #{{orderID}}",
|
||||
"Looking for orders!": "查找订单!",
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
"Active order #{{orderID}}": "活躍訂單 #{{orderID}}",
|
||||
"Add Robot": "添加機器人",
|
||||
"Building...": "正在建造...",
|
||||
"Claim Rewards": "Claim Rewards",
|
||||
"Delete Robot": "刪除機器人",
|
||||
"Last order #{{orderID}}": "上一張訂單 #{{orderID}}",
|
||||
"Looking for orders!": "找尋訂單!",
|
||||
|
||||
Reference in New Issue
Block a user