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