v0.8.1 Pre-release reports

This commit is contained in:
koalasat
2025-08-09 00:03:37 +02:00
parent 1abc605c03
commit 80c0d858b0
27 changed files with 85 additions and 32 deletions

View File

@ -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>

View File

@ -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>

View File

@ -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 ?? '');

View File

@ -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>

View File

@ -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);
}}

View File

@ -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) {

View File

@ -153,7 +153,6 @@ export const AppContextProvider = ({ children }: AppContextProviderProps): React
}, [settings.fontSize, settings.mode, settings.lightQRs]);
useEffect(() => {
setSettings(getSettings());
void i18n.changeLanguage(settings.language);
}, []);

View File

@ -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}

View File

@ -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;

View File

@ -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();
};

View File

@ -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!",

View File

@ -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!",

View File

@ -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!",

View File

@ -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!",

View File

@ -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!",

View File

@ -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!",

View File

@ -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 !",

View File

@ -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!",

View File

@ -52,6 +52,7 @@
"Active order #{{orderID}}": "公開中の注文 #{{orderID}}",
"Add Robot": "ロボットを追加",
"Building...": "生成中...",
"Claim Rewards": "Claim Rewards",
"Delete Robot": "ロボットを削除",
"Last order #{{orderID}}": "直前の注文 #{{orderID}}",
"Looking for orders!": "注文を探しています!",

View File

@ -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ń!",

View File

@ -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!",

View File

@ -52,6 +52,7 @@
"Active order #{{orderID}}": "Активный ордер #{{orderID}}",
"Add Robot": "Добавить робота",
"Building...": "Строим...",
"Claim Rewards": "Claim Rewards",
"Delete Robot": "Удалить робота",
"Last order #{{orderID}}": "Последний ордер #{{orderID}}",
"Looking for orders!": "В поисках ордеров!",

View File

@ -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!",

View File

@ -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!",

View File

@ -52,6 +52,7 @@
"Active order #{{orderID}}": "รายการที่ใช้งาน #{{orderID}}",
"Add Robot": "เพิ่มหุ่นยนต์",
"Building...": "กำลังสร้าง...",
"Claim Rewards": "Claim Rewards",
"Delete Robot": "ลบหุ่นยนต์",
"Last order #{{orderID}}": "คำสั่งล่าสุด #{{orderID}}",
"Looking for orders!": "กำลังมองหาคำสั่งซื้อ!",

View File

@ -52,6 +52,7 @@
"Active order #{{orderID}}": "活跃订单 #{{orderID}}",
"Add Robot": "添加机器人",
"Building...": "正在建造...",
"Claim Rewards": "Claim Rewards",
"Delete Robot": "删除机器人",
"Last order #{{orderID}}": "上一张订单 #{{orderID}}",
"Looking for orders!": "查找订单!",

View File

@ -52,6 +52,7 @@
"Active order #{{orderID}}": "活躍訂單 #{{orderID}}",
"Add Robot": "添加機器人",
"Building...": "正在建造...",
"Claim Rewards": "Claim Rewards",
"Delete Robot": "刪除機器人",
"Last order #{{orderID}}": "上一張訂單 #{{orderID}}",
"Looking for orders!": "找尋訂單!",