Add version mismatch detection, refactor GH workflows, draft release.yml, increase prettier scope (#250)

* Refactor GH workflows

* Add version mismatch checker and UpdateClient Dialog

* Fix finalize release workflow

* Increase prettier scope

* Increase prettier coverage, add some static to prettierignore

* Add CodeQL on PR
This commit is contained in:
Reckless_Satoshi 2022-09-20 17:39:49 +00:00 committed by Reckless_Satoshi
parent e4ddeea39d
commit 37b8fdd233
No known key found for this signature in database
GPG Key ID: 9C4585B561315571
43 changed files with 6234 additions and 5966 deletions

View File

@ -8,6 +8,11 @@ on:
pull_request:
branches: [ "main" ]
paths: ["frontend", "nodeapp"]
workflow_call:
inputs:
semver:
required: true
type: string
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
@ -71,6 +76,7 @@ jobs:
push: true
tags: |
recksato/robosats-client:${{ steps.commit.outputs.short }}
recksato/robosats-client:${{ inputs.semver }}
recksato/robosats-client:latest
labels: ${{ steps.meta.outputs.labels }}

75
.github/workflows/codeql-client.yml vendored Normal file
View File

@ -0,0 +1,75 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Analysis Client"
on:
push:
branches: [ "main" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "main" ]
paths:
- 'frontend'
- 'mobile'
schedule:
- cron: '39 10 * * 2'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

View File

@ -9,14 +9,16 @@
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
name: "CodeQL Analysis Coordinator"
on:
push:
branches: [ "main" ]
pull_request:
# The branches below must be a subset of the branches above
# branches: [ "main" ]
branches: [ "main" ]
paths:
- 'api'
schedule:
- cron: '39 10 * * 2'
@ -32,7 +34,7 @@ jobs:
strategy:
fail-fast: false
matrix:
language: [ 'javascript', 'python' ]
language: [ 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support

View File

@ -1,4 +1,4 @@
name: Backend Image CI
name: Coodinator Image CI
on:
workflow_dispatch:
@ -8,6 +8,11 @@ on:
pull_request:
branches: [ "main" ]
paths: ["api", "chat", "control", "robosats", "frontend"]
workflow_call:
inputs:
semver:
required: true
type: string
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'

View File

@ -2,6 +2,7 @@ name: Django Tests
on:
workflow_dispatch:
workflow_call:
push:
branches: [ "main" ]
paths: ["api", "chat", "control", "robosats"]

View File

@ -2,6 +2,11 @@ name: Frontend Test & Build
on:
workflow_dispatch:
workflow_call:
inputs:
semver:
required: true
type: string
push:
branches: [ "main" ]
paths: [ "frontend" ]
@ -48,12 +53,15 @@ jobs:
with:
name: main-js
path: frontend/static/frontend/main.js
- name: 'Invoke Backend Build CI workflow'
if: ${{ inputs.semver }} != ""
uses: benc-uk/workflow-dispatch@v1
with:
workflow: 'Backend Image CI'
token: ${{ secrets.PERSONAL_TOKEN }}
- name: 'Invoke Client App Build CI/CD workflow'
if: ${{ inputs.semver }} != ""
uses: benc-uk/workflow-dispatch@v1
with:
workflow: 'Client App Image CI/CD'

View File

@ -37,6 +37,7 @@ jobs:
with:
prettier: true
prettier_dir: frontend
# Many linting errors
## Disabled due to error
# eslint: true
# eslint_dir: frontend

79
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,79 @@
name: Release
on:
push:
tags:
- "v*.*.*"
jobs:
check-versions:
runs-on: ubuntu-latest
steps:
- name: 'Checkout'
uses: actions/checkout@v3
- uses: olegtarasov/get-tag@v2.1
id: tagName
- name: 'Validate versions match (tag, backend, frontend, Android)'
id: validate
run: |
sudo apt-get install jq
clientV=$(jq -r .version frontend/package.json)
coordinatorV=$(jq -r .major version.json).$(jq -r .minor version.json).$(jq -r .patch version.json)
tagV=$(git describe --tags --abbrev=0 | sed 's/v//')
printf "Client version: ${clientV}\nCoordinator version: ${coordinatorV}\nGit tag version: ${tagV}\n"
if [ "$coordinatorV" = "$clientV" ] && [ "$coordinatorV" = "$tagV" ] ; then
echo "Versions match!"
else
echo "Versions do not match! You might have forgotten to update the version on a component."; exit $ERRCODE;
fi
django-test:
uses: reckless-satoshi/robosats/.github/workflows/django-test.yml@main
needs: check-versions
frontend-build:
uses: reckless-satoshi/robosats/.github/workflows/frontend-build.yml@main
needs: check-versions
with:
semver: ${{ needs.check-version.tagName.outputs.tag }}
coordinator-image:
uses: reckless-satoshi/robosats/.github/workflows/coordinator-image.yml@main
needs: [django-test, frontend-build]
with:
semver: ${{ needs.check-version.tagName.outputs.tag }}
client-image:
uses: reckless-satoshi/robosats/.github/workflows/client-image.yml@main
needs: frontend-build
with:
semver: ${{ needs.check-version.tagName.outputs.tag }}
android-build:
uses: reckless-satoshi/robosats/.github/workflows/coordinator-image.yml@main
needs: frontend-build
with:
semver: ${{ needs.check-version.tagName.outputs.tag }}
changelog:
runs-on: ubuntu-20.04
steps:
- name: "Generate release changelog"
uses: heinrichreimer/github-changelog-generator-action@v2.3
with:
token: ${{ secrets.GITHUB_TOKEN }}
release:
needs: [coordinator-image, client-image, android-build, changelog]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Release
uses: softprops/action-gh-release@v1
with:
body: ${{ needs.changelog.outputs.changelog }}

View File

@ -134,7 +134,7 @@ def get_lnd_version():
robosats_commit_cache = {}
@ring.dict(robosats_commit_cache, expire=3600)
def get_commit_robosats():
def get_robosats_commit():
commit = os.popen('git log -n 1 --pretty=format:"%H"')
commit_hash = commit.read()
@ -146,6 +146,16 @@ def get_commit_robosats():
return commit_hash
robosats_version_cache = {}
@ring.dict(robosats_commit_cache, expire=99999)
def get_robosats_version():
with open("version.json") as f:
version_dict = json.load(f)
print(version_dict)
return version_dict
premium_percentile = {}
@ring.dict(premium_percentile, expire=300)
def compute_premium_percentile(order):

View File

@ -17,7 +17,7 @@ from control.models import AccountingDay, BalanceLog
from api.logics import Logics
from api.messages import Telegram
from secrets import token_urlsafe
from api.utils import get_lnd_version, get_commit_robosats, compute_premium_percentile, compute_avg_premium
from api.utils import get_lnd_version, get_robosats_commit, get_robosats_version, compute_premium_percentile, compute_avg_premium
from .nick_generator.nick_generator import NickGenerator
from robohash import Robohash
@ -837,7 +837,8 @@ class InfoView(ListAPIView):
context["last_day_volume"] = round(total_volume, 8)
context["lifetime_volume"] = round(lifetime_volume, 8)
context["lnd_version"] = get_lnd_version()
context["robosats_running_commit_hash"] = get_commit_robosats()
context["robosats_running_commit_hash"] = get_robosats_commit()
context["version"] = get_robosats_version()
context["alternative_site"] = config("ALTERNATIVE_SITE")
context["alternative_name"] = config("ALTERNATIVE_NAME")
context["node_alias"] = config("NODE_ALIAS")

View File

@ -19,12 +19,7 @@
"sourceType": "module",
"project": "./tsconfig.json"
},
"plugins": [
"react",
"react-hooks",
"@typescript-eslint",
"prettier"
],
"plugins": ["react", "react-hooks", "@typescript-eslint", "prettier"],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",

View File

@ -1 +1,5 @@
src/components/payment-methods/code/code.js
static/rest_framework/**
static/admin/**
static/frontend/**
static/import_export/**

View File

@ -1,9 +1,5 @@
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
],
"presets": ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"],
"plugins": [
[
"@babel/plugin-transform-runtime",

View File

@ -1,6 +1,6 @@
{
"name": "frontend",
"version": "1.0.0",
"version": "0.2.0",
"description": "",
"main": "index.js",
"scripts": {
@ -9,7 +9,7 @@
"build": "webpack --mode production",
"lint": "eslint src/**/*.{js,ts,tsx}",
"lint:fix": "eslint --fix 'src/**/*.{js,ts,tsx}'",
"format": "prettier --write 'src/**/*.{js,jsx,ts,tsx,css,md,json}' --config ./.prettierrc"
"format": "prettier --write '**/**/*.{js,jsx,ts,tsx,css,md,json}' --config ./.prettierrc"
},
"keywords": [],
"author": "",

View File

@ -32,9 +32,16 @@ import PriceChangeIcon from '@mui/icons-material/PriceChange';
// Missing flags
import { CataloniaFlag, BasqueCountryFlag } from './Icons';
import { CommunityDialog, ExchangeSummaryDialog, ProfileDialog, StatsDialog } from './Dialogs';
import {
CommunityDialog,
ExchangeSummaryDialog,
ProfileDialog,
StatsDialog,
UpdateClientDialog,
} from './Dialogs';
import { getCookie } from '../utils/cookies';
import checkVer from '../utils/checkVer';
class BottomBar extends Component {
constructor(props) {
@ -44,6 +51,7 @@ class BottomBar extends Component {
openCommuniy: false,
openExchangeSummary: false,
openClaimRewards: false,
openUpdateClient: false,
num_public_buy_orders: 0,
num_public_sell_orders: 0,
book_liquidity: 0,
@ -72,9 +80,14 @@ class BottomBar extends Component {
getInfo() {
this.setState(null);
apiClient.get('/api/info/').then(
(data) =>
this.setState(data) &
apiClient.get('/api/info/').then((data) => {
const versionInfo = checkVer(data.version.major, data.version.minor, data.version.patch);
this.setState({
...data,
openUpdateClient: versionInfo.updateAvailable,
coordinatorVersion: versionInfo.coordinatorVersion,
clientVersion: versionInfo.clientVersion,
});
this.props.setAppState({
nickname: data.nickname,
loading: false,
@ -87,8 +100,8 @@ class BottomBar extends Component {
earnedRewards: data.earned_rewards,
lastDayPremium: data.last_day_nonkyc_btc_premium,
stealthInvoices: data.wants_stealth,
}),
);
});
});
}
handleClickOpenStatsForNerds = () => {
@ -631,6 +644,13 @@ class BottomBar extends Component {
handleClickCloseCommunity={this.handleClickCloseCommunity}
/>
<UpdateClientDialog
open={this.state.openUpdateClient}
coordinatorVersion={this.state.coordinatorVersion}
clientVersion={this.state.clientVersion}
handleClickClose={() => this.setState({ openUpdateClient: false })}
/>
<ExchangeSummaryDialog
isOpen={this.state.openExchangeSummary}
handleClickCloseExchangeSummary={this.handleClickCloseExchangeSummary}

View File

@ -0,0 +1,114 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import {
Dialog,
DialogContent,
DialogActions,
Button,
Divider,
List,
ListItemText,
ListItem,
ListItemIcon,
ListItemButton,
Typography,
} from '@mui/material';
import WebIcon from '@mui/icons-material/Web';
import AndroidIcon from '@mui/icons-material/Android';
import UpcomingIcon from '@mui/icons-material/Upcoming';
interface Props {
open: boolean;
clientVersion: string;
coordinatorVersion: string;
handleClickClose: () => void;
}
const UpdateClientDialog = ({
open,
clientVersion,
coordinatorVersion,
handleClickClose,
}: Props): JSX.Element => {
const { t } = useTranslation();
return (
<Dialog open={open} onClose={handleClickClose}>
<DialogContent>
<Typography component='h5' variant='h5'>
{t('Update your RoboSats client')}
</Typography>
<br />
<Typography>
{t(
'The RoboSats coordinator is on version {{coordinatorVersion}}, but your client app is {{clientVersion}}. This version mismatch might lead to a bad user experience.',
{ coordinatorVersion: coordinatorVersion, clientVersion: clientVersion },
)}
</Typography>
<List dense>
<ListItemButton
component='a'
target='_blank'
href={`https://github.com/Reckless-Satoshi/robosats/releases/tag/${coordinatorVersion}`}
rel='noreferrer'
>
<ListItemIcon>
<AndroidIcon color='primary' sx={{ height: 32, width: 32 }} />
</ListItemIcon>
<ListItemText
secondary={t('Download RoboSats {{coordinatorVersion}} APK from Github releases', {
coordinatorVersion: coordinatorVersion,
})}
primary={t('On Android RoboSats app ')}
/>
</ListItemButton>
<Divider />
<ListItemButton
component='a'
target='_blank'
href={`https://hub.docker.com/r/recksato/robosats-client`}
rel='noreferrer'
>
<ListItemIcon>
<UpcomingIcon color='primary' sx={{ height: 32, width: 32 }} />
</ListItemIcon>
<ListItemText
secondary={t("Check your node's store or update the Docker image yourself")}
primary={t('On your own soverign node')}
/>
</ListItemButton>
<Divider />
<ListItemButton component='a' onClick={() => location.reload(true)}>
<ListItemIcon>
<WebIcon color='primary' sx={{ height: 32, width: 32 }} />
</ListItemIcon>
<ListItemText
secondary={t(
'On Tor Browser client simply refresh your tab (click here or press Ctrl+Shift+R)',
)}
primary={t('On remotely served browser client')}
/>
</ListItemButton>
<DialogActions>
<Button onClick={handleClickClose}>{t('Go away!')}</Button>
</DialogActions>
</List>
</DialogContent>
</Dialog>
);
};
export default UpdateClientDialog;

View File

@ -8,3 +8,4 @@ export { default as ExchangeSummaryDialog } from './ExchangeSummary';
export { default as ProfileDialog } from './Profile';
export { default as StatsDialog } from './Stats';
export { default as EnableTelegramDialog } from './EnableTelegram';
export { default as UpdateClientDialog } from './UpdateClient';

View File

@ -0,0 +1,25 @@
import packageJson from '../../package.json';
// Gets SemVer from backend /api/info and compares to local imported frontend version "localVer". Uses major,minor,patch.
// If minor of backend > minor of frontend, updateAvailable = true.
export const checkVer: (
major: number | null,
minor: number | null,
patch: number | null,
) => object = (major, minor, patch) => {
if (major === null || minor === null || patch === null) {
return { updateAvailable: null };
}
const semver = packageJson.version.split('.');
const updateAvailable = major > Number(semver[0]) || minor > Number(semver[1]);
const patchAvailable = !updateAvailable && patch > Number(semver[2]);
return {
updateAvailable: updateAvailable,
patchAvailable: patchAvailable,
coordinatorVersion: `v${major}.${minor}.${patch}`,
clientVersion: `v${semver[0]}.${semver[1]}.${semver[2]}`,
};
};
export default checkVer;

View File

@ -41,7 +41,8 @@
font-weight: 300;
font-display: swap;
src: url(/static/css/fonts/roboto-5.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0,
U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
@ -50,7 +51,8 @@
font-weight: 300;
font-display: swap;
src: url(/static/css/fonts/roboto-6.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
@ -59,7 +61,8 @@
font-weight: 300;
font-display: swap;
src: url(/static/css/fonts/roboto-7.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,
U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
@ -104,7 +107,8 @@
font-weight: 400;
font-display: swap;
src: url(/static/css/fonts/roboto-12.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0,
U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
@ -113,7 +117,8 @@
font-weight: 400;
font-display: swap;
src: url(/static/css/fonts/roboto-13.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
@ -122,7 +127,8 @@
font-weight: 400;
font-display: swap;
src: url(/static/css/fonts/roboto-14.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,
U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
@ -167,7 +173,8 @@
font-weight: 500;
font-display: swap;
src: url(/static/css/fonts/roboto-19.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0,
U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
@ -176,7 +183,8 @@
font-weight: 500;
font-display: swap;
src: url(/static/css/fonts/roboto-20.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
@ -185,7 +193,8 @@
font-weight: 500;
font-display: swap;
src: url(/static/css/fonts/roboto-21.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,
U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
@ -230,7 +239,8 @@
font-weight: 700;
font-display: swap;
src: url(/static/css/fonts/roboto-26.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0,
U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
@ -239,7 +249,8 @@
font-weight: 700;
font-display: swap;
src: url(/static/css/fonts/roboto-27.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
@ -248,5 +259,6 @@
font-weight: 700;
font-display: swap;
src: url(/static/css/fonts/roboto-28.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,
U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

View File

@ -38,8 +38,12 @@ body {
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.appCenter {
@ -71,11 +75,10 @@ input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type=number] {
input[type='number'] {
-moz-appearance: textfield;
}
.bottomBar {
position: fixed;
bottom: 0;
@ -136,27 +139,29 @@ input[type=number] {
.phoneFlippedSmallAvatar:after {
content: '';
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
top: 0;
left: 0;
bottom: 0;
right: 0;
border-radius: 50%;
border: 2.4px solid #1976d2;
box-shadow: inset 0px 0px 35px rgb(255, 255, 255);
}
.MuiButton-textInherit {color : '#111111';}
.MuiButton-textInherit {
color: '#111111';
}
::-webkit-scrollbar
{
::-webkit-scrollbar {
width: 6px; /* for vertical scrollbars */
height: 6px; /* for horizontal scrollbars */
}
::-webkit-scrollbar-track
{
::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.1);
}
::-webkit-scrollbar-thumb
{
::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.5);
}

View File

@ -1,4 +1,3 @@
.loaderCenter {
margin: 0 auto;
position: absolute;

View File

@ -11,14 +11,9 @@
"color": "#FFFFFF",
"mainnet_onion": "robomaxim......onion",
"testnet_onion": null,
"mainnet_ln_nodes_pubkeys": [
"03e96as....",
"02aaecc...."
],
"testnet_ln_nodes_pubkeys": [
"0284ff2...."
],
"logo_svg_200x200": "<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\" width=\"120\" height=\"120\"> <rect x=\"14\" y=\"23\" width=\"200\" height=\"50\" fill=\"lime\" stroke=\"black\" \/> <\/svg>"
"mainnet_ln_nodes_pubkeys": ["03e96as....", "02aaecc...."],
"testnet_ln_nodes_pubkeys": ["0284ff2...."],
"logo_svg_200x200": "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"120\" height=\"120\"> <rect x=\"14\" y=\"23\" width=\"200\" height=\"50\" fill=\"lime\" stroke=\"black\" /> </svg>"
},
"coordinator_2": {
"...": "..."

File diff suppressed because one or more lines are too long

View File

@ -1,7 +0,0 @@
/*!****************************************!*\
!*** ./node_modules/jsqr/dist/jsQR.js ***!
\****************************************/
/*!*************************************************************!*\
!*** ./node_modules/react-webcam-qr-scanner/dist/Worker.js ***!
\*************************************************************/

File diff suppressed because one or more lines are too long

View File

@ -1,3 +0,0 @@
/*!****************************************!*\
!*** ./node_modules/jsqr/dist/jsQR.js ***!
\****************************************/

View File

@ -5,7 +5,6 @@
"phone_unsafe_alert": "No podràs completar un intercanvi. Fes servir <1>Tor Browser</1> i vista el <3>Onion</3> site.",
"Hide": "Amagar",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Intercanvi LN P2P Fàcil y Privat",
"This is your trading avatar": "Aquest és el teu Robot de compravenda",
@ -23,7 +22,6 @@
"Let's go!": "Som-hi!",
"Save token and PGP credentials to file": "Guardar arxiu amb token y credencials PGP",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "Ordre",
"Customize": "Personalitzar",
@ -81,7 +79,6 @@
"You do not have a robot avatar": "No tens un avatar robot",
"You need to generate a robot avatar in order to become an order maker": "Necessites generar un avatar robot abans de crear una ordre",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "Sense especificar",
"Instant SEPA": "SEPA Instantània",
@ -90,9 +87,6 @@
"Cash F2F": "Efectiu en persona",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Ven",
"Buyer": "Compra",
@ -227,7 +221,6 @@
"RoboSats in Reddit": "RoboSats a Reddit",
"Current onchain payout fee": "Cost actual de rebre onchain",
"ORDER PAGE - OrderPage.js": "Order details page",
"Order Box": "Ordre",
"Contract": "Contracte",
@ -299,7 +292,6 @@
"You are not allowed to see this order": "No tens permís per a veure aquesta ordre",
"The Robotic Satoshis working in the warehouse did not understand you. Please, fill a Bug Issue in Github https://github.com/reckless-satoshi/robosats/issues": "Els Satoshis Robòtics del magatzem no t'han entès. Si us plau, omple un Bug Issue a Github https://github.com/reckless-satoshi/robosats/issues",
"CHAT BOX - Chat.js": "Finestra del xat",
"You": "Tu",
"Peer": "Ell",
@ -475,7 +467,6 @@
"Completed in": "Completat en",
"Contract exchange rate": "Taxa de canvi del contracte",
"INFO DIALOG - InfoDiagog.js": "App information and clarifications and terms of use",
"Close": "Tancar",
"What is RoboSats?": "Què és RoboSats?",

View File

@ -5,7 +5,6 @@
"phone_unsafe_alert": "Nebudeš moct dokončit obchod. Použij <1>Tor Browser</1> a navšťiv <3>Onion</3> stránku.",
"Hide": "Skrýt",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Jednoduchá LN P2P burza",
"This is your trading avatar": "Toto je tvůj uživatelský avatar",
@ -23,8 +22,6 @@
"Let's go!": "Navštívit!",
"Save token and PGP credentials to file": "Uložit soubor s tokenem a PGP klíčem",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "Nabídka",
"Customize": "Přizpůsobit",
@ -82,7 +79,6 @@
"You do not have a robot avatar": "Nemáš robota a avatar",
"You need to generate a robot avatar in order to become an order maker": "Aby si se mohl stát tvůrcem nabídky musíš si vygenerovat avatar a robota",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "nespecifikováno",
"Instant SEPA": "Okamžitá SEPA",
@ -91,7 +87,6 @@
"Cash F2F": "Hotovost v tváří v tvář",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Prodavající",
"Buyer": "Kupující",
@ -165,7 +160,6 @@
"yes": "ano",
"no": "ne",
"BOTTOM BAR AND MISC - BottomBar.js": "Bottom Bar user profile and miscellaneous dialogs",
"Stats For Nerds": "Statistiky pro nerdy",
"LND version": "LND verze",
@ -329,7 +323,6 @@
"Verified signature by {{nickname}}": "Ověřený podpis {{nickname}}",
"Cannot verify signature of {{nickname}}": "Nelze ověřit podpis {{nickname}}",
"CONTRACT BOX - TradeBox.js": "The Contract Box that guides users trough the whole trade pipeline",
"Contract Box": "Průvodce obchodem",
"Robots show commitment to their peers": "Roboti dávají najevo oddanost svým společníkum",
@ -472,7 +465,6 @@
"{{routingFeeSats}} MiliSats": "{{routingFeeSats}} MiliSatů",
"Platform covered routing fee": "Poplatek za routing hrazený platformou",
"INFO DIALOG - InfoDiagog.js": "App information and clarifications and terms of use",
"Close": "Zavřít",
"What is RoboSats?": "Co je RoboSats?",

View File

@ -5,7 +5,6 @@
"phone_unsafe_alert": "Du wirst nicht in der Lage sein, einen Handel abzuschließen. Benutze <1>Tor Browser</1> und besuche die <3>Onion</3> Seite.",
"Hide": "Ausblenden",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Einfache und private LN P2P-Börse",
"This is your trading avatar": "Dies ist dein Handelsavatar",
@ -23,8 +22,6 @@
"Let's go!": "Los gehts!",
"Save token and PGP credentials to file": "Token und PGP-Anmeldeinformationen in einer Datei speichern",
"MAKER PAGE - MakerPage.js": "Dies ist die Seite, auf der Benutzer neue Angebote erstellen können",
"Order": "Order",
"Customize": "Anpassen",
@ -82,7 +79,6 @@
"You do not have a robot avatar": "Du hast keinen Roboter-Avatar",
"You need to generate a robot avatar in order to become an order maker": "Du musst einen Roboter-Avatar erstellen, um ein Maker zu werden.",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "Nicht definiert",
"Instant SEPA": "Instant SEPA",
@ -91,7 +87,6 @@
"Cash F2F": "Cash F2F",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Verkäufer",
"Buyer": "Käufer",
@ -120,7 +115,6 @@
"Filter has no results": "Filter hat keine Ergebnisse",
"Be the first one to create an order": "Sei der Erste, der ein Angebot erstellt",
"BOTTOM BAR AND MISC - BottomBar.js": "Bottom Bar user profile and miscellaneous dialogs",
"Stats For Nerds": "Statistiken für Nerds",
"LND version": "LND-Version",
@ -180,7 +174,6 @@
"Inactive order": "Inaktive Order",
"You do not have previous orders": "Du hast keine vorherige Order",
"ORDER PAGE - OrderPage.js": "Order details page",
"Order Box": "Angebots-Box",
"Contract": "Vertrag",
@ -280,7 +273,6 @@
"Save messages as a JSON file": "Nachrichten als JSON-Datei speichern",
"Messages": "Nachrichten",
"CONTRACT BOX - TradeBox.js": "The Contract Box that guides users trough the whole trade pipeline",
"Contract Box": "Vertrags-Box",
"Robots show commitment to their peers": "Roboter verpflichten sich ihren Gegenübern",
@ -387,7 +379,6 @@
"Does not look like a valid lightning invoice": "Sieht nicht nach einer gültigen Lightning-Invoice aus",
"The invoice provided has already expired": "Die angegebene Invoice ist bereits abgelaufen",
"INFO DIALOG - InfoDiagog.js": "App information and clarifications and terms of use",
"Close": "Schließen",
"What is RoboSats?": "Was ist RoboSats?",

View File

@ -7,7 +7,6 @@
"You are self-hosting RoboSats": "You are self-hosting RoboSats",
"RoboSats client is served from your own node granting you the strongest security and privacy.": "RoboSats client is served from your own node granting you the strongest security and privacy.",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Simple and Private LN P2P Exchange",
"This is your trading avatar": "This is your trading avatar",
@ -25,8 +24,6 @@
"Let's go!": "Let's go!",
"Save token and PGP credentials to file": "Save token and PGP credentials to file",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "Order",
"Customize": "Customize",
@ -84,7 +81,6 @@
"You do not have a robot avatar": "You do not have a robot avatar",
"You need to generate a robot avatar in order to become an order maker": "You need to generate a robot avatar in order to become an order maker",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "Not specified",
"Instant SEPA": "Instant SEPA",
@ -93,7 +89,6 @@
"Cash F2F": "Cash F2F",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Seller",
"Buyer": "Buyer",
@ -169,7 +164,6 @@
"Depth chart": "Depth chart",
"Chart": "Chart",
"BOTTOM BAR AND MISC - BottomBar.js": "Bottom Bar user profile and miscellaneous dialogs",
"Stats For Nerds": "Stats For Nerds",
"LND version": "LND version",
@ -233,6 +227,14 @@
"Current onchain payout fee": "Current onchain payout fee",
"Use stealth invoices": "Use stealth invoices",
"Stealth lightning invoices do not contain details about the trade except an order reference. Enable this setting if you don't want to disclose details to a custodial lightning wallet.": "Stealth lightning invoices do not contain details about the trade except an order reference. Enable this setting if you don't want to disclose details to a custodial lightning wallet.",
"Update your RoboSats client": "Update your RoboSats client",
"The RoboSats coordinator is on version {{coordinatorVersion}}, but your client app is {{clientVersion}}. This version mismatch might lead to a bad user experience.": "The RoboSats coordinator is on version {{coordinatorVersion}}, but your client app is {{clientVersion}}. This version mismatch might lead to a bad user experience.",
"Download RoboSats {{coordinatorVersion}} APK from Github releases": "Download RoboSats {{coordinatorVersion}} APK from Github releases",
"On Android RoboSats app": "On Android RoboSats app",
"Check your node's store or update the Docker image yourself": "Check your node's store or update the Docker image yourself",
"On your own sovereign node": "On your own sovereign node",
"Simply refresh your Tor Browser tab (or press Ctrl+Shift+R)": "Simply refresh your Tor Browser tab (or press Ctrl+Shift+R)",
"On remotely served client via web": "On remotely served client via web",
"ORDER PAGE - OrderPage.js": "Order details page",
"Order Box": "Order Box",
@ -339,7 +341,6 @@
"Verified signature by {{nickname}}": "Verified signature by {{nickname}}",
"Cannot verify signature of {{nickname}}": "Cannot verify signature of {{nickname}}",
"CONTRACT BOX - TradeBox.js": "The Contract Box that guides users trough the whole trade pipeline",
"Contract Box": "Contract Box",
"Robots show commitment to their peers": "Robots show commitment to their peers",

View File

@ -7,7 +7,6 @@
"You are self-hosting RoboSats": "Estás hosteando RoboSats",
"RoboSats client is served from your own node granting you the strongest security and privacy.": "El cliente RoboSats es servido por tu propio nodo, gozas de la mayor seguridad y privacidad.",
"UserGenPage": "User Generation Page and Landing Page",
"Simple and Private LN P2P Exchange": "Intercambio LN P2P Fácil y Privado",
"This is your trading avatar": "Este es tu Robot de compraventa",
@ -25,7 +24,6 @@
"Let's go!": "¡Vamos!",
"Save token and PGP credentials to file": "Guardar archivo con token y credenciales PGP",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "Orden",
"Customize": "Personalizar",
@ -83,7 +81,6 @@
"You do not have a robot avatar": "No tienes un avatar robot",
"You need to generate a robot avatar in order to become an order maker": "Necesitas generar un avatar robot antes de crear una orden",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "Sin especificar",
"Instant SEPA": "SEPA Instantánea",
@ -94,7 +91,6 @@
"Cash F2F": "Efectivo en persona",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Vende",
"Buyer": "Compra",
@ -233,7 +229,6 @@
"Use stealth invoices": "Facturas sigilosas",
"Stealth lightning invoices do not contain details about the trade except an order reference. Enable this setting if you don't want to disclose details to a custodial lightning wallet.": "Las facturas sigilosas no contienen información sobre tu orden excepto una referencia a la misma. Activalas para no desvelar información a tu proveedor de wallet custodial.",
"ORDER PAGE - OrderPage.js": "Order details page",
"Order Box": "Orden",
"Contract": "Contrato",
@ -483,7 +478,6 @@
"Completed in": "Completado en",
"Contract exchange rate": "Tasa de cambio del contrato",
"INFO DIALOG - InfoDiagog.js": "App information and clarifications and terms of use",
"Close": "Cerrar",
"What is RoboSats?": "¿Qué es RoboSats?",

View File

@ -5,7 +5,6 @@
"phone_unsafe_alert": "Ezingo duzu trukea osatu. Erabili <1>Tor Browser</1> eta bisitatu <3>Onion</3> gunea.",
"Hide": "Ezkutatu",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "LN P2P Exchange Sinple eta Pribatua",
"This is your trading avatar": "Hau da zure salerosketa Robota",
@ -23,8 +22,6 @@
"Let's go!": "Goazen!",
"Save token and PGP credentials to file": "Gorde tokena eta PGP kredentzialak fitxategira",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "Eskaera",
"Customize": "Pertsonalizatu",
@ -82,7 +79,6 @@
"You do not have a robot avatar": "Ez daukazu robot avatarrik",
"You need to generate a robot avatar in order to become an order maker": "Robot avatar bat sortu behar duzu eskaera bat egin ahal izateko",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "Zehaztu gabea",
"Instant SEPA": "Bat-bateko SEPA",
@ -91,7 +87,6 @@
"Cash F2F": "Eskudirua aurrez-aurre",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Saltzaile",
"Buyer": "Erosle",
@ -120,7 +115,6 @@
"Filter has no results": "Iragazkiak ez du emaitzarik",
"Be the first one to create an order": "Lehena izan eskaera bat sortzen",
"BOTTOM BAR AND MISC - BottomBar.js": "Bottom Bar user profile and miscellaneous dialogs",
"Stats For Nerds": "Nerdentzako estatistikak",
"LND version": "LND bersioa",
@ -284,7 +278,6 @@
"Verified signature by {{nickname}}": "{{nickname}}ren egiaztatutako sinadura",
"Cannot verify signature of {{nickname}}": "Ezin izan da {{nickname}}ren sinadura egiaztatu",
"CONTRACT BOX - TradeBox.js": "The Contract Box that guides users trough the whole trade pipeline",
"Contract Box": "Kontratua",
"Robots show commitment to their peers": "Robotek beren pareekiko konpromezua erakusten dute",
@ -405,7 +398,6 @@
"Lightning": "Lightning",
"Onchain": "Onchain",
"INFO DIALOG - InfoDiagog.js": "App information and clarifications and terms of use",
"Close": "Itxi",
"What is RoboSats?": "Zer da RoboSats?",

View File

@ -5,7 +5,6 @@
"phone_unsafe_alert": "Vous ne serez pas en mesure d'effectuer un échange. Utilisez <1>Tor Browser</1> et visitez le site <3>Onion</3>.",
"Hide": "Cacher",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Echange LN P2P simple et privé",
"This is your trading avatar": "Ceci est votre avatar d'échange",
@ -19,7 +18,6 @@
"Info": "Info",
"View Book": "Voir livre",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "Ordre",
"Customize": "Personnaliser",
@ -65,7 +63,6 @@
"Must be less than {{maxSats}": "Doit être moins que {{maxSats}}",
"Must be more than {{minSats}}": "Doit être plus que {{minSats}}",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "Non spécifié",
"Instant SEPA": "Instant SEPA",
@ -74,7 +71,6 @@
"Cash F2F": "En espèces face-à-face",
"On-Chain BTC": "BTC on-Chain",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Vendeur",
"Buyer": "Acheteur",
@ -102,7 +98,6 @@
"No orders found to buy BTC for {{currencyCode}}": "Aucun ordre trouvé pour acheter des BTC pour {{currencyCode}}",
"Be the first one to create an order": "Soyez le premier à créer un ordre",
"BOTTOM BAR AND MISC - BottomBar.js": "Bottom Bar user profile and miscellaneous dialogs",
"Stats For Nerds": "Stats pour des geeks",
"LND version": "Version",
@ -159,7 +154,6 @@
"Number of public BUY orders": "Nombre d'ordres d'ACHAT publics",
"Number of public SELL orders": "Nombre d'ordres de VENTE publics",
"ORDER PAGE - OrderPage.js": "Order details page",
"Order Box": "Ordres",
"Contract": "Contrat",

View File

@ -5,7 +5,6 @@
"phone_unsafe_alert": "Non sarai in grado di completare un'operazione. Usa <1>Tor Browser</1> e visita il sito <3>Onion</3>",
"Hide": "Nascondi",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Semplice e privata borsa di scambio LN P2P",
"This is your trading avatar": "Questo è il tuo Robottino",
@ -23,8 +22,6 @@
"Let's go!": "Andiamo!",
"Save token and PGP credentials to file": "Salva il gettone e le credenziali PGP in un file",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "Ordina",
"Customize": "Personalizza",
@ -82,7 +79,6 @@
"You do not have a robot avatar": "Non hai un Robottino",
"You need to generate a robot avatar in order to become an order maker": "Devi generare un Robottino prima di impostare un ordine",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "Non specificato",
"Instant SEPA": "SEPA istantaneo",
@ -91,7 +87,6 @@
"Cash F2F": "Contante, faccia-a-faccia",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Offerente",
"Buyer": "Acquirente",
@ -120,7 +115,6 @@
"Filter has no results": "Il filtro corrente non ha risultati",
"Be the first one to create an order": "Crea tu il primo ordine",
"BOTTOM BAR AND MISC - BottomBar.js": "Bottom Bar user profile and miscellaneous dialogs",
"Stats For Nerds": "Statistiche per secchioni",
"LND version": "Versione LND",
@ -284,7 +278,6 @@
"Verified signature by {{nickname}}": "Verifica la firma di {{nickname}}",
"Cannot verify signature of {{nickname}}": "Non è possibile verificare la firma di {{nickname}}",
"CONTRACT BOX - TradeBox.js": "The Contract Box that guides users trough the whole trade pipeline",
"Contract Box": "Contratto",
"Robots show commitment to their peers": "I Robottini dimostrano dedizione verso i loro pari",
@ -392,7 +385,6 @@
"The invoice provided has already expired": "La fattura inviata è già scaduta",
"Make sure to EXPORT the chat log. The staff might request your exported chat log JSON in order to solve discrepancies. It is your responsibility to store it.": "Assicurati di esportare il log della chat. Lo staff potrebbe richiedere il file JSON di log della chat esportato per risolvere eventuali dispute. È tua responsabilità conservarlo.",
"INFO DIALOG - InfoDiagog.js": "App information and clarifications and terms of use",
"Close": "Chiudi",
"What is RoboSats?": "Cos'è RoboSats?",

View File

@ -5,7 +5,6 @@
"phone_unsafe_alert": "Nie będziesz w stanie sfinalizować transakcji. Użyj <1>Tor Browser</1> i odwiedź witrynę <3>Onion</3>.",
"Hide": "Ukryć",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Łatwa i prywatna wymiana P2P LN",
"This is your trading avatar": "To jest twój awatar handlowy",
@ -19,7 +18,6 @@
"Info": "Info",
"View Book": "Zobacz książkę",
"MAKER PAGE - MakerPage.js": "To jest strona, na której użytkownicy mogą tworzyć nowe zamówienia",
"Order": "Zamówienie",
"Customize": "Dostosuj",
@ -65,7 +63,6 @@
"Must be less than {{maxSats}": "To musi być mniej niż {{maxSats}}",
"Must be more than {{minSats}}": "To musi być więcej niż {{minSats}}",
"PAYMENT METHODS - autocompletePayments.js": "Ciągi metod płatności",
"not specified": "Nieokreślony",
"Instant SEPA": "Natychmiastowe SEPA",
@ -74,7 +71,6 @@
"Cash F2F": "Cash F2F",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "Strona Zamówienia książki",
"Seller": "Sprzedawca",
"Buyer": "Kupujący",
@ -102,7 +98,6 @@
"No orders found to buy BTC for {{currencyCode}}": "Nie znaleziono zamówień na zakup BTC za {{currencyCode}}",
"Be the first one to create an order": "Bądź pierwszą osobą, która utworzy zamówienie",
"BOTTOM BAR AND MISC - BottomBar.js": "Profil użytkownika paska dolnego i różne okna dialogowe",
"Stats For Nerds": "Statystyki dla nerdów",
"LND version": "LND wersja",
@ -159,7 +154,6 @@
"Number of public BUY orders": "Liczba publicznych zamówień BUY",
"Number of public SELL orders": "Liczba publicznych zleceń SPRZEDAŻY",
"ORDER PAGE - OrderPage.js": "Strona szczegółów zamówienia",
"Order Box": "Pole zamówienia",
"Contract": "Kontrakt",

View File

@ -5,7 +5,6 @@
"phone_unsafe_alert": "У Вас не будет возможности завершить сделку. Используйте <1>Tor Browser</1> и посетите <3>Onion</3> сайт.",
"Hide": "Скрыть",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Простой и Конфиденциальный LN P2P Обмен",
"This is your trading avatar": "Это Ваш торговый аватар",
@ -23,8 +22,6 @@
"Let's go!": "Поехали!",
"Save token and PGP credentials to file": "Сохранить токен и учетные данные PGP в файл",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "Ордер",
"Customize": "Настроить",
@ -82,7 +79,6 @@
"You do not have a robot avatar": "У Вас нет аватара робота",
"You need to generate a robot avatar in order to become an order maker": "Вам нужно сгенерировать аватар робота, чтобы стать мейкером ордеров",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "Не указано",
"Instant SEPA": "Мгновенный SEPA",
@ -91,7 +87,6 @@
"Cash F2F": "Наличные F2F",
"On-Chain BTC": "Ончейн BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "Продавец",
"Buyer": "Покупатель",
@ -167,7 +162,6 @@
"Depth chart": "Схемами глубин",
"Chart": "Схемами",
"BOTTOM BAR AND MISC - BottomBar.js": "Bottom Bar user profile and miscellaneous dialogs",
"Stats For Nerds": "Cтатистика для умников",
"LND version": "LND версия",
@ -337,7 +331,6 @@
"Verified signature by {{nickname}}": "Проверенная подпись пользователя {{nickname}}",
"Cannot verify signature of {{nickname}}": "Не удается проверить подпись {{nickname}}",
"CONTRACT BOX - TradeBox.js": "The Contract Box that guides users trough the whole trade pipeline",
"Contract Box": "Окно контракта",
"Robots show commitment to their peers": "Роботы демонстрируют приверженность к своим пирам",

View File

@ -7,7 +7,6 @@
"You are self-hosting RoboSats": "คูณกำลัง host RoboSats เอง",
"RoboSats is served from your own node granting you the strongest security and privacy.": "คุณกำลังใช้งาน RoboSats บน node ของคุณ ทำให้คุณได้รับความปลอดภัยและความเป็นส่วนตัวมากขึ้น",
"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation",
"Simple and Private LN P2P Exchange": "Simple and Private LN P2P Exchange",
"This is your trading avatar": "โรบอทสำหรับซื้อขาย",
@ -25,8 +24,6 @@
"Let's go!": "ไปกันเถอะ!",
"Save token and PGP credentials to file": "บันทึก token และการรับรอง PGP ไปที่ไฟล์",
"MAKER PAGE - MakerPage.js": "This is the page where users can create new orders",
"Order": "รายการซื้อขาย",
"Customize": "ปรับแต่ง",
@ -84,7 +81,6 @@
"You do not have a robot avatar": "คุณไม่มีโรบอท",
"You need to generate a robot avatar in order to become an order maker": "คุณต้องมีโรบอทก่อนจึงจะสามารถสร้างรายการซื้อขายได้",
"PAYMENT METHODS - autocompletePayments.js": "Payment method strings",
"not specified": "ไม่ระบุ",
"Instant SEPA": "Instant SEPA",
@ -93,7 +89,6 @@
"Cash F2F": "เงินสด (นัดพบ)",
"On-Chain BTC": "On-Chain BTC",
"BOOK PAGE - BookPage.js": "The Book Order page",
"Seller": "ผู้ขาย",
"Buyer": "ผู้ซื้อ",
@ -167,7 +162,6 @@
"yes": "ใช่",
"no": "ไม่ใช่",
"BOTTOM BAR AND MISC - BottomBar.js": "Bottom Bar user profile and miscellaneous dialogs",
"Stats For Nerds": "สถิติสำหรับผู้สนใจ",
"LND version": "LND version",
@ -333,7 +327,6 @@
"Verified signature by {{nickname}}": "ลายเซ็นต์ที่ถูกตรวจสอบแล้วโดย {{nickname}}",
"Cannot verify signature of {{nickname}}": "ไม่สามารถตรวจสอบลายเซ็นต์ของ {{nickname}}",
"CONTRACT BOX - TradeBox.js": "The Contract Box that guides users trough the whole trade pipeline",
"Contract Box": "Contract Box",
"Robots show commitment to their peers": "โรบอทต้องแสดงความรับผิดชอบต่อคู่ค้าของตน",

View File

@ -11,7 +11,7 @@
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"jsx": "react-jsx"
},
"include": ["src"]
}

View File

@ -1,32 +1,28 @@
import path from "path";
import { Configuration } from "webpack";
import path from 'path';
import { Configuration } from 'webpack';
const config: Configuration = {
entry: "./src/index.js",
entry: './src/index.js',
module: {
rules: [
{
test: /\.(ts|js)x?$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
loader: 'babel-loader',
options: {
presets: [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript",
],
presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],
},
},
},
],
},
resolve: {
extensions: [".tsx", ".ts", ".jsx", ".js"],
extensions: ['.tsx', '.ts', '.jsx', '.js'],
},
output: {
path: path.resolve(__dirname, "static/frontend"),
filename: "main.js",
path: path.resolve(__dirname, 'static/frontend'),
filename: 'main.js',
},
};

5
version.json Normal file
View File

@ -0,0 +1,5 @@
{
"major":0,
"minor":2,
"patch":0
}