diff --git a/netlify.toml b/netlify.toml
index 5f95d30e..799b2bc0 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -7,10 +7,10 @@
IPFS_GATEWAY_ADDRESS='https://ipfs.kleros.io'
AVAILABLE_LANGUAGE_GROUP_PAIRS='["en|fr","en|es","en|pt","de|en","en|ru","en|tr","en|zh"]'
USER_SETTINGS_API_BASE_URLS='{"1":"https://iioeu1ljqf.execute-api.us-east-2.amazonaws.com/mainnet","77":"https://xa1qxy0wp6.execute-api.us-east-2.amazonaws.com/sokol"}'
- LINGUO_CONTRACT_ADDRESSES='{"1":{"de|en":["0x54f1f7b58c1Dc646a6c639C5d909B62652129b33","0x950f5AB863075C685227EfEDb41Ef167Be0099ad"],"en|es":["0x460f688f655610de5e3d92beb7892fa200b9060d","0xD8F8019c025C2Ba6745543D9a3C338DE1b98C103"],"en|fr":["0xFEe86325d5C96AE9E20EaBe7B157813c67bBccFA","0xf1A9589880DbF393F32A5b2d5a0054Fa10385074"],"en|ja":["0x5Cd1ff55282db11e526Fe13fA0F7C014f74acF11","0xc3162705Af0e10108FF837E450A14669b2711129"],"en|ko":["0xf8D4c1436ACA89A5DEEf36F06f662bAdfEb5AE63","0xFE721DD8Ac8e47A4228A6147A25C65136f213EaA"],"en|pt":["0x48032Ad54DB49d8E0d4f135A687b98E5731961f9","0x1c839fd542563182BFD0C337c8AaD1Be412F0fd2"],"en|ru":["0x0Bc3B51673dCdF3b45c628066761dA7331E8fBA2","0x464c84c41f3C25Ba5a75B006D8B20600A8777306"],"en|tr":["0xa3E4348BDDc32AfcedC5e088e0E21FD6154A0180","0x44863f5b7AAb7ceE181C0d84E244540125eF7AF7"],"en|zh":["0xaB0D90943A58b1A64c0171Ee8e743d9998Be6AC3","0xD67C12734dC12240a6324Db63ccd426964B71Fe7"]},"42":{"de|en":["0x8A4290298D65717a3BaEd546e4Ef9Eb2fe0b187D","0x5Af02E0E04c2042345E15Ed6dc7CC0c220f2C2Fa"],"en|es":["0x082aA0BeBE8C32042F77d123B6a657Fe907D8C33","0x6eb2D062E808a67828d27aD3926912C9309E5417"],"en|fr":["0x963Df99387a2b350264B5847ff9AbFF674e7BdFA","0x152c7F0948Fd0B2741a934aA7bfceB41cd4b5bFD"],"en|ja":["0x8B819D13d90Fcf9F0a235fe85d860E3C9763D470","0x033B08AAC5A3a2E7C306dd5Ee360904eC8d45DF6"],"en|ko":["0xe026cA59Bc31960D3060390D8667ceBc5D42B46d","0x499aD7D07f6EF0bD17656559312D0DdCBA0e79Ce"],"en|pt":["0xaD9Dec9c66cEbAa7e8624a528f65A3FA1Df8027d","0xb9534aB9b71e26949F9bdF9C05897Ee4619d144F"],"en|ru":["0xF4E6294201Ef99f1E83586Ef5AC8bCBaA4DB45CF","0x243a0431DE8d0B6D9837B53d3A10088b53B52918"],"en|tr":["0x10Dde936662A674F35ab36641017342B75Bb1D58","0xB93b8c9FD90724C036Ac56c5D3306333A67cFbFB"],"en|zh":["0xffb2BB47F4CD36426134706A849590471622519C","0xBc19B6fBAEEC0a2b50f3AD6F53b670ac03Bd1C6F"]},"77":{"de|en":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|es":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|fr":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|ja":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|ko":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|pt":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|ru":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|tr":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|zh":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"]}}'
+ LINGUO_CONTRACT_ADDRESSES='{"1":{"de|en":["0x54f1f7b58c1Dc646a6c639C5d909B62652129b33","0x950f5AB863075C685227EfEDb41Ef167Be0099ad"],"en|es":["0x460f688f655610de5e3d92beb7892fa200b9060d","0xD8F8019c025C2Ba6745543D9a3C338DE1b98C103"],"en|fr":["0xFEe86325d5C96AE9E20EaBe7B157813c67bBccFA","0xf1A9589880DbF393F32A5b2d5a0054Fa10385074"],"en|ja":["0x5Cd1ff55282db11e526Fe13fA0F7C014f74acF11","0xc3162705Af0e10108FF837E450A14669b2711129"],"en|ko":["0xf8D4c1436ACA89A5DEEf36F06f662bAdfEb5AE63","0xFE721DD8Ac8e47A4228A6147A25C65136f213EaA"],"en|pt":["0x48032Ad54DB49d8E0d4f135A687b98E5731961f9","0x1c839fd542563182BFD0C337c8AaD1Be412F0fd2"],"en|ru":["0x0Bc3B51673dCdF3b45c628066761dA7331E8fBA2","0x464c84c41f3C25Ba5a75B006D8B20600A8777306"],"en|tr":["0xa3E4348BDDc32AfcedC5e088e0E21FD6154A0180","0x44863f5b7AAb7ceE181C0d84E244540125eF7AF7"],"en|zh":["0xaB0D90943A58b1A64c0171Ee8e743d9998Be6AC3","0xD67C12734dC12240a6324Db63ccd426964B71Fe7"]},"42":{"de|en":["0x8A4290298D65717a3BaEd546e4Ef9Eb2fe0b187D","0x5Af02E0E04c2042345E15Ed6dc7CC0c220f2C2Fa"],"en|es":["0x082aA0BeBE8C32042F77d123B6a657Fe907D8C33","0x6eb2D062E808a67828d27aD3926912C9309E5417"],"en|fr":["0x963Df99387a2b350264B5847ff9AbFF674e7BdFA","0x152c7F0948Fd0B2741a934aA7bfceB41cd4b5bFD"],"en|ja":["0x8B819D13d90Fcf9F0a235fe85d860E3C9763D470","0x033B08AAC5A3a2E7C306dd5Ee360904eC8d45DF6"],"en|ko":["0xe026cA59Bc31960D3060390D8667ceBc5D42B46d","0x499aD7D07f6EF0bD17656559312D0DdCBA0e79Ce"],"en|pt":["0xaD9Dec9c66cEbAa7e8624a528f65A3FA1Df8027d","0xb9534aB9b71e26949F9bdF9C05897Ee4619d144F"],"en|ru":["0xF4E6294201Ef99f1E83586Ef5AC8bCBaA4DB45CF","0x243a0431DE8d0B6D9837B53d3A10088b53B52918"],"en|tr":["0x10Dde936662A674F35ab36641017342B75Bb1D58","0xB93b8c9FD90724C036Ac56c5D3306333A67cFbFB"],"en|zh":["0xffb2BB47F4CD36426134706A849590471622519C","0xBc19B6fBAEEC0a2b50f3AD6F53b670ac03Bd1C6F"]},"77":{"de|en":["0x8539cb2fB9186f3DcF8F9A0AeD3De395Fd6d9870"],"en|es":["0x5a9F70ED50e16010f0B9d5bb5a3EFdb42fEcaD23"],"en|fr":["0x9CA979a165EF741BF120A3FEbb4F5C083De40708"],"en|ja":["0x753d611eAdF324B1f23A3A417BceB08eeda80ec6"],"en|ko":["0xC578de969Dd2A2a08d6Bd5A4F7AaA9b1a2e6A395"],"en|pt":["0x457b2BAb823c772fA4457517C97E6BF13065c21D"],"en|ru":["0x6cD5BAb73135966008d969bE23Ff940e6fa3Bb87"],"en|tr":["0xa9426b235E12897A99B015CbcF4D064e86fde418"],"en|zh":["0x09CE835FaB6051a18b2FC11743c01DAAD3122f1F"]},"100":{"de|en":["0xc3162705Af0e10108FF837E450A14669b2711129"],"en|es":["0xA2BfFF0553DE7405781FE0C39C04A383F04b9C80"],"en|fr":["0x464c84c41f3C25Ba5a75B006D8B20600A8777306"],"en|ja":["0x852550982e0984F9CCeF18a7276D35AFDc30242c"],"en|ko":["0xD67C12734dC12240a6324Db63ccd426964B71Fe7"],"en|pt":["0xFE721DD8Ac8e47A4228A6147A25C65136f213EaA"],"en|ru":["0x44863f5b7AAb7ceE181C0d84E244540125eF7AF7"],"en|tr":["0x1D48a279966f37385b4AB963530C6dC813b3A8Df"],"en|zh":["0x0B928165A67df8254412483ae8C3b8cc7F2b4D36"]}}'
[context.production.environment]
- DEFAULT_CHAIN_ID='1'
+ DEFAULT_CHAIN_ID='100'
[[redirects]]
from = "/*"
diff --git a/package.json b/package.json
index 54e19c86..ab72a268 100644
--- a/package.json
+++ b/package.json
@@ -36,9 +36,9 @@
"@ethersproject/providers": "^5.0.14",
"@ethersproject/solidity": "^5.0.5",
"@hot-loader/react-dom": "^17.0.1",
- "@kleros/archon": "^1.2.0",
+ "@kleros/archon": "^2.2.0",
"@kleros/erc-792": "^7.0.0",
- "@kleros/linguo-contracts": "~0.4.0",
+ "@kleros/linguo-contracts": "~0.5.0",
"@kleros/react-components": "^6.0.0",
"@loadable/component": "^5.12.0",
"@reduxjs/toolkit": "^1.6.1",
diff --git a/src/app/MainRouter.jsx b/src/app/MainRouter.jsx
index 7e163fbe..1b0bfc45 100644
--- a/src/app/MainRouter.jsx
+++ b/src/app/MainRouter.jsx
@@ -1,21 +1,25 @@
import React from 'react';
import t from 'prop-types';
-import { useSelector } from 'react-redux';
+import { useDispatch, useSelector } from 'react-redux';
import { Redirect, Route, Switch } from 'react-router-dom';
import loadable from '@loadable/component';
import { Layout } from 'antd';
import { ConnectedRouter } from 'connected-react-router';
-import { Spin } from '~/adapters/antd';
-import { selectPreference } from '~/features/ui/uiSlice';
+import { Alert, Spin } from '~/adapters/antd';
import DismissableAlert from '~/features/ui/DismissableAlert';
+import { selectPreference } from '~/features/ui/uiSlice';
+import { getNetworkName, useSwitchToChainFromUrl } from '~/features/web3';
+import { getCounterPartyChainId, isSupportedSideChain } from '~/features/web3/supportedChains';
import Web3ErrorAlert from '~/features/web3/Web3ErrorAlert';
+import { selectChainId, switchChain } from '~/features/web3/web3Slice';
+import { WarningIcon } from '~/shared/icons';
+import Button from '~/shared/Button';
import Footer from '~/shared/Footer';
import { DrawerMenu } from '~/shared/Menu';
import Navbar from '~/shared/Navbar';
import { history } from '~/store';
import Content from './Content';
import * as r from './routes';
-import { useSwitchToChainFromUrl } from '~/features/web3';
const fallback = ;
@@ -47,41 +51,7 @@ export default function MainRouter() {
position: relative;
`}
>
-
-
-
+
@@ -130,3 +100,71 @@ _RouterInitializer.propTypes = {
};
const RouterInitializer = React.memo(_RouterInitializer);
+
+function GlobalWarnings() {
+ const dispatch = useDispatch();
+ const chainId = useSelector(selectChainId);
+ const counterPartyChainId = getCounterPartyChainId(chainId);
+
+ return (
+
+ {isSupportedSideChain(chainId) && (
+
+ )}
+ {!isSupportedSideChain(chainId) && (
+
}
+ message={
+ <>
+ Linguo is moving to a side-chain for more affordable gas prices:{' '}
+
+ >
+ }
+ css={`
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ right: 0;
+ `}
+ />
+ )}
+
+ );
+}
diff --git a/src/features/linguo/api/createApiFacade.js b/src/features/linguo/api/createApiFacade.js
index fd22e1ff..03bcff92 100644
--- a/src/features/linguo/api/createApiFacade.js
+++ b/src/features/linguo/api/createApiFacade.js
@@ -1,5 +1,5 @@
import IArbitrator from '@kleros/erc-792/build/contracts/IArbitrator.json';
-import Linguo from '@kleros/linguo-contracts/artifacts/Linguo.json';
+import Linguo from '@kleros/linguo-contracts/artifacts/contracts/0.7.x/Linguo.sol/Linguo.json';
import { subtract } from '~/adapters/big-number';
import { combination } from '~/adapters/js-combinatorics';
import { withProvider } from '~/app/archon';
diff --git a/src/features/linguo/api/createContractApi.js b/src/features/linguo/api/createContractApi.js
index e8808bbd..745ce9e2 100644
--- a/src/features/linguo/api/createContractApi.js
+++ b/src/features/linguo/api/createContractApi.js
@@ -847,6 +847,7 @@ const chainIdToCurrentEvidenceDisplayInterfaceURI = {
1: '/ipfs/QmXGDMfcxjfQi5SFwpBSb73pPjoZq2N8c6eWCgxx8pVqj7/index.html',
42: '/ipfs/QmYbtF7K6qCfSYfu2k6nYnVRY8HY97rEAF6mgBWtDgfovw/index.html',
77: '/ipfs/Qmb5n6PgbshktJqGpwMAxP1moXEPaqq7ZvRufeXXhSPXxW/linguo-evidence-display/index.html',
+ 100: '/ipfs/Qmb5n6PgbshktJqGpwMAxP1moXEPaqq7ZvRufeXXhSPXxW/linguo-evidence-display/index.html',
};
/**
@@ -856,12 +857,14 @@ const chainIdToValidEvidenceDisplayInterfaceURIs = {
1: [chainIdToCurrentEvidenceDisplayInterfaceURI[1]],
42: [chainIdToCurrentEvidenceDisplayInterfaceURI[42]],
77: [chainIdToCurrentEvidenceDisplayInterfaceURI[77]],
+ 100: [chainIdToCurrentEvidenceDisplayInterfaceURI[100]],
};
const chainIdToCurrentDynamicScriptURI = {
1: '/ipfs/QmchWC6L3dT23wwQiJJLWCeS1EDnDYrLcYat93C4Lm4P4E/linguo-dynamic-script.js',
42: '/ipfs/QmZFcqdsR76jyHyLsBefc4SBuegj2boBDr2skxGauM5DNf/linguo-dynamic-script.js',
77: '/ipfs/QmPAHCRtSU844fdjNoEws8AgTpzzwsYwMF2wydtpvXAcoZ/linguo-script.js',
+ 100: '/ipfs/QmPAHCRtSU844fdjNoEws8AgTpzzwsYwMF2wydtpvXAcoZ/linguo-script.js',
};
/**
@@ -871,6 +874,7 @@ const chainIdToValidDynamicScriptURIs = {
1: [chainIdToCurrentDynamicScriptURI[1]],
42: [chainIdToCurrentDynamicScriptURI[42]],
77: [chainIdToCurrentDynamicScriptURI[77]],
+ 100: [chainIdToCurrentDynamicScriptURI[100]],
};
const getFileTypeFromPath = path => (path ?? '').split('.').slice(-1)?.[0];
diff --git a/src/features/requester/requesterSlice.js b/src/features/requester/requesterSlice.js
index 64a40122..d0cb34f5 100644
--- a/src/features/requester/requesterSlice.js
+++ b/src/features/requester/requesterSlice.js
@@ -92,7 +92,7 @@ export default createPersistedReducer(requesterSlice.reducer);
export const selectStatusFilter = state => state.requester.tasks?.filters?.status ?? statusFilters.all;
const selectLoadingState = (state, { account = null, chainId }) =>
- state.requester.tasks.byAccount[account]?.byChainId[chainId]?.loadingState ?? 'idle';
+ state.requester.tasks.byAccount[account]?.byChainId?.[chainId]?.loadingState ?? 'idle';
export const selectIsIdle = createSelector([selectLoadingState], loadingState => loadingState === 'idle');
export const selectIsLoading = createSelector([selectLoadingState], loadingState => loadingState === 'loading');
@@ -100,7 +100,7 @@ export const selectHasSucceeded = createSelector([selectLoadingState], loadingSt
export const selectHasFailed = createSelector([selectLoadingState], loadingState => loadingState === 'failed');
export const selectAllTasks = (state, { account, chainId }) => {
- const taskIds = state.requester.tasks.byAccount[account]?.byChainId[chainId]?.ids ?? [];
+ const taskIds = state.requester.tasks.byAccount[account]?.byChainId?.[chainId]?.ids ?? [];
return selectAllFilterByIds(taskIds)(state);
};
diff --git a/src/features/tasks/TaskStatusFilter.jsx b/src/features/tasks/TaskStatusFilter.jsx
index 18390a8b..660427cf 100644
--- a/src/features/tasks/TaskStatusFilter.jsx
+++ b/src/features/tasks/TaskStatusFilter.jsx
@@ -4,7 +4,9 @@ import styled from 'styled-components';
import { Badge, Select } from 'antd';
import theme from '~/features/ui/theme';
-export default function TaskStatusFilter({ fullWidth, onChange, defaultValue }) {
+export default function TaskStatusFilter({ fullWidth, onChange, value, defaultValue }) {
+ const controlledProps = value !== undefined ? { value } : {};
+
return (
{menu}}
$fullWidth={fullWidth}
- onChange={onChange}
defaultValue={defaultValue}
+ onChange={onChange}
options={filterOptions}
+ {...controlledProps}
/>
);
}
TaskStatusFilter.propTypes = {
onChange: t.func,
+ value: t.string,
defaultValue: t.string,
fullWidth: t.bool,
};
diff --git a/src/features/transactions/transactionsSlice.js b/src/features/transactions/transactionsSlice.js
index 3785dea0..1ca1c271 100644
--- a/src/features/transactions/transactionsSlice.js
+++ b/src/features/transactions/transactionsSlice.js
@@ -403,7 +403,7 @@ function* createTxNotification(
template: {
id: 'link',
params: {
- text: 'View on Etherscan',
+ text: 'View on Block Explorer',
url,
},
},
diff --git a/src/features/translator/tasksSlice.js b/src/features/translator/tasksSlice.js
index ff7bbdb7..e4b20b4a 100644
--- a/src/features/translator/tasksSlice.js
+++ b/src/features/translator/tasksSlice.js
@@ -80,7 +80,7 @@ export const selectStatusFilter = state => state.filters?.status ?? statusFilter
export const selectAllTasksFilter = state => state.filters?.allTasks ?? false;
export const selectLoadingState = (state, { account = null, chainId }) =>
- state.byAccount[account]?.byChainId[chainId]?.loadingState ?? 'idle';
+ state.byAccount[account]?.byChainId?.[chainId]?.loadingState ?? 'idle';
export const selectIsIdle = (state, { account, chainId }) => selectLoadingState(state, { account, chainId }) === 'idle';
export const selectIsLoading = (state, { account, chainId }) =>
selectLoadingState(state, { account, chainId }) === 'loading';
@@ -89,7 +89,7 @@ export const selectHasFetched = (state, { account, chainId }) =>
export const selectHasFailed = (state, { account, chainId }) =>
selectLoadingState(state, { account, chainId }) === 'failed';
-export const selectTaskIds = (state, { account, chainId }) => state.byAccount[account]?.byChainId[chainId]?.ids ?? [];
+export const selectTaskIds = (state, { account, chainId }) => state.byAccount[account]?.byChainId?.[chainId]?.ids ?? [];
export const selectors = {
selectStatusFilter,
diff --git a/src/features/ui/uiSlice.js b/src/features/ui/uiSlice.js
index 5eeaca84..9901ebc1 100644
--- a/src/features/ui/uiSlice.js
+++ b/src/features/ui/uiSlice.js
@@ -31,8 +31,8 @@ const { set } = preferences.actions;
export { dismiss as dismissAlert, notify, close as closeNotification, set as setPreference };
-export const selectAlertIsVisible = id => state => alerts.selectors.selectIsVisible(id)(state.ui.alerts);
-export const selectPreference = key => state => preferences.selectors.selectByKey(key)(state.ui.preferences);
+export const selectAlertIsVisible = id => state => alerts.selectors.selectIsVisible(id)(state.ui.alerts ?? {});
+export const selectPreference = key => state => preferences.selectors.selectByKey(key)(state.ui.preferences ?? {});
export const sagas = {
...popupNotifications.sagas,
diff --git a/src/features/web3/WalletConnectionModal.jsx b/src/features/web3/WalletConnectionModal.jsx
index a076b0ed..b82b32ba 100644
--- a/src/features/web3/WalletConnectionModal.jsx
+++ b/src/features/web3/WalletConnectionModal.jsx
@@ -80,6 +80,8 @@ export default WalletConnectionModal;
const StyledWalletButton = styled(Button)`
border-radius: 0.75rem;
+ height: 100%;
+
> span {
display: flex;
flex-flow: column nowrap;
@@ -87,8 +89,8 @@ const StyledWalletButton = styled(Button)`
padding: 1rem;
.logo {
- width: 60%;
- height: auto;
+ width: 64px;
+ height: 64px;
}
.description {
diff --git a/src/features/web3/supportedChains.js b/src/features/web3/supportedChains.js
index fae20816..c6745530 100644
--- a/src/features/web3/supportedChains.js
+++ b/src/features/web3/supportedChains.js
@@ -4,7 +4,7 @@ import { getBaseUrl } from './blockExplorer';
const env = process.env.NODE_ENV ?? 'development';
const defaultChainIdsPerEnv = {
- production: Number(process.env.DEFAULT_CHAIN_ID) ?? 1,
+ production: Number(process.env.DEFAULT_CHAIN_ID) ?? 100,
development: Number(process.env.DEFAULT_CHAIN_ID) ?? 77,
};
@@ -14,13 +14,13 @@ export const jsonRpcUrls = JSON.parse(process.env.JSON_RPC_URLS);
const supportedSideChains = {
// xDai
- // 100: {
- // chainId: 100,
- // chainName: 'xDAI Chain',
- // nativeCurrency: { name: 'xDAI', symbol: 'xDAI', decimals: 18 },
- // rpcUrls: [jsonRpcUrls[100]],
- // blockExplorerUrls: [getBaseUrl(100)],
- // },
+ 100: {
+ chainId: 100,
+ chainName: 'xDAI Chain',
+ nativeCurrency: { name: 'xDAI', symbol: 'xDAI', decimals: 18 },
+ rpcUrls: [jsonRpcUrls[100]],
+ blockExplorerUrls: [getBaseUrl(100)],
+ },
// Sokol
77: {
chainId: 77,
@@ -31,6 +31,17 @@ const supportedSideChains = {
},
};
+const counterPartyChainIdMap = {
+ 1: 100,
+ 42: 77,
+ 77: 42,
+ 100: 1,
+};
+
+export function getCounterPartyChainId(chainId) {
+ return counterPartyChainIdMap[chainId];
+}
+
export const supportedChainIds = [1, 42, ...map(prop('chainId'), Object.values(supportedSideChains))];
export function getSideChainParams(sideChainId) {
diff --git a/src/pages/Faq.jsx b/src/pages/Faq.jsx
index d3e06e81..b225664c 100644
--- a/src/pages/Faq.jsx
+++ b/src/pages/Faq.jsx
@@ -174,15 +174,15 @@ const StyledQA = styled.div`
const StyledQuestionAnchor = styled.a`
z-index: 2;
position: absolute;
- left: 0.5rem;
- top: 0.625rem;
+ left: 8px;
+ top: 12px;
text-align: center;
- color: ${p => p.theme.color.text.inverted};
+ color: ${p => p.theme.color.text.light};
transition: all 0.25s cubic-bezier(0.77, 0, 0.175, 1);
:hover,
:focus {
- color: ${p => p.theme.color.text.inverted};
+ color: ${p => p.theme.color.text.light};
filter: drop-shadow(0 0 2px ${p => p.theme.color.glow.default});
}
`;
diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx
index b838d8e1..9a4dc635 100644
--- a/src/pages/Home.jsx
+++ b/src/pages/Home.jsx
@@ -60,7 +60,7 @@ export default function Home() {
-
+
Work as a Translator
@@ -72,14 +72,14 @@ export default function Home() {
size="small"
checkedChildren={}
unCheckedChildren={}
- checked={defaultPage === r.TRANSLATOR_DASHBOARD}
- onClick={createClickHandler(r.TRANSLATOR_DASHBOARD)}
+ checked={defaultPage === `${r.TRANSLATOR_DASHBOARD}?status=open`}
+ onClick={createClickHandler(`${r.TRANSLATOR_DASHBOARD}?status=open`)}
/>
Set as default page for Linguo
-
+
Review Translations
@@ -91,8 +91,8 @@ export default function Home() {
size="small"
checkedChildren={}
unCheckedChildren={}
- checked={defaultPage === `${r.TRANSLATOR_DASHBOARD}?filter=inReview`}
- onClick={createClickHandler(`${r.TRANSLATOR_DASHBOARD}?filter=inReview`)}
+ checked={defaultPage === `${r.TRANSLATOR_DASHBOARD}?status=inReview&allTasks=true`}
+ onClick={createClickHandler(`${r.TRANSLATOR_DASHBOARD}?status=inReview&allTasks=true`)}
/>
Set as default page for Linguo
@@ -110,7 +110,7 @@ const StyledLayout = styled(Layout)`
max-width: 68rem;
background-color: ${props => props.theme.color.background.light};
box-shadow: 0 2px 3px ${props => props.theme.color.shadow.default};
- border-radius: 12px;
+ border-radius: 3px;
align-self: stretch;
@media (max-width: 575.98px) {
diff --git a/src/pages/RequesterDashboard/TaskListHeader.jsx b/src/pages/RequesterDashboard/TaskListHeader.jsx
index 45284a92..3492a004 100644
--- a/src/pages/RequesterDashboard/TaskListHeader.jsx
+++ b/src/pages/RequesterDashboard/TaskListHeader.jsx
@@ -38,7 +38,7 @@ function TaskStatusFilterContainer() {
[setFilters, allTasks]
);
- return ;
+ return ;
}
const StyledHeader = styled.header`
diff --git a/src/pages/TranslationRequest/LanguagesSelectionFields.jsx b/src/pages/TranslationRequest/LanguagesSelectionFields.jsx
index 4e48c43c..85c2a3a5 100644
--- a/src/pages/TranslationRequest/LanguagesSelectionFields.jsx
+++ b/src/pages/TranslationRequest/LanguagesSelectionFields.jsx
@@ -45,7 +45,7 @@ export default function LanguagesSelectionFields({ setFieldsValue }) {
return (
<>
-
+
FAQ page.
@@ -64,7 +64,7 @@ export default function LanguagesSelectionFields({ setFieldsValue }) {
}
/>
-
+
-
-
+ const content = (
+ <>
+ {!isSupportedSideChain(chainId) && (
+ <>
+
+ Currently it is not possible to request new translations on {getNetworkName(chainId)}.
+
+ Get more affordable gas fees:{' '}
+
+ .
+
+ >
+ }
+ />
+
+ >
+ )}
+
+
+
+ >
);
return (
@@ -23,10 +57,10 @@ function TranslationRequest() {
- {form}
+ {content}
diff --git a/src/pages/TranslationRequest/TranslationRequestForm.jsx b/src/pages/TranslationRequest/TranslationRequestForm.jsx
index 18379b6c..07b34dc3 100644
--- a/src/pages/TranslationRequest/TranslationRequestForm.jsx
+++ b/src/pages/TranslationRequest/TranslationRequestForm.jsx
@@ -156,7 +156,7 @@ function TranslationRequestForm() {
{currentStep !== 0 ? (
) : null}
diff --git a/src/pages/TranslatorDashboard/TaskListHeader.jsx b/src/pages/TranslatorDashboard/TaskListHeader.jsx
index b8e0f3ed..b39344f2 100644
--- a/src/pages/TranslatorDashboard/TaskListHeader.jsx
+++ b/src/pages/TranslatorDashboard/TaskListHeader.jsx
@@ -60,7 +60,7 @@ function TaskStatusFilterContainer() {
[setFilters, allTasks]
);
- return ;
+ return ;
}
const StyledHeader = styled.header`
diff --git a/src/shared/Card.jsx b/src/shared/Card.jsx
index 0bf2b7ea..6a559da4 100644
--- a/src/shared/Card.jsx
+++ b/src/shared/Card.jsx
@@ -35,7 +35,7 @@ const StyledWrapper = styled.section`
display: flex;
flex-flow: column nowrap;
border: none;
- border-radius: 12px;
+ border-radius: 3px;
box-shadow: 0 2px 3px ${props => props.theme.color.shadow.default};
font-size: 1rem;
color: ${props => props.theme.color.text.default};
diff --git a/src/shared/EthValue.jsx b/src/shared/EthValue.jsx
index 916adc9b..d41d3f44 100644
--- a/src/shared/EthValue.jsx
+++ b/src/shared/EthValue.jsx
@@ -207,7 +207,7 @@ function EthValue({ amount, maxIntDigits, decimals, unit, suffixType, render })
value={value}
decimals={decimals}
render={({ formattedValue }) =>
- render({ amount, value, formattedValue, suffix: unitInfo.suffix[suffixType] ?? '' })
+ render({ amount, value, formattedValue, suffix: unitInfo?.suffix?.[suffixType] ?? '' })
}
/>
);
diff --git a/src/shared/SystemTray/EmailNotifications.jsx b/src/shared/SystemTray/EmailNotifications.jsx
index 73ccc870..42d3373f 100644
--- a/src/shared/SystemTray/EmailNotifications.jsx
+++ b/src/shared/SystemTray/EmailNotifications.jsx
@@ -247,7 +247,7 @@ function EmailNotificationsForm({ onSubmit, onReset, settings }) {
}
>
diff --git a/yarn.lock b/yarn.lock
index 04507f28..91ada37e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1832,7 +1832,7 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.12.1":
+"@babel/runtime@^7.12.1", "@babel/runtime@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
@@ -3357,6 +3357,18 @@
multihashes "0.4.14"
web3 "^1.3.1"
+"@kleros/archon@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@kleros/archon/-/archon-2.2.0.tgz#72a08566eb01882692658ef2d11aecd2c5b81e6b"
+ integrity sha512-dQGRcfpLdZIrfHHknGWf1uCjEB8xrdTPdCS0oS4r0n9j5HV2B2b/lCSfer8d6lzt/Q9PWuHmay/Mmh+M4ZAcIQ==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ axios "^0.21.0"
+ iframe "^1.0.0"
+ js-sha3 "^0.8.0"
+ multihashes "0.4.14"
+ v8-sandbox "^2.2.2"
+
"@kleros/erc-792@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@kleros/erc-792/-/erc-792-7.0.0.tgz#dcd3efeebf04813f1be3edcb9a8d151b907ca171"
@@ -3367,10 +3379,10 @@
resolved "https://registry.yarnpkg.com/@kleros/ethereum-libraries/-/ethereum-libraries-7.0.0.tgz#5cc115e984612bd8bd338e1c73d70640fae143ea"
integrity sha512-wpKv70rQJi7uwF+yMYBlFVOvcvp/EY6SwIQXsE3ppAsnhIzAuKgr89UjuJU59ZtKZgrhOD1rBkKBu33jDwQ8kw==
-"@kleros/linguo-contracts@~0.4.0":
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/@kleros/linguo-contracts/-/linguo-contracts-0.4.0.tgz#54d2c0c2e804f739b6975c6c2a6b65f08927a732"
- integrity sha512-HczBrbdOE/Nj0oIXPde/RZJObqW6sY8ukw19W5iRHdKlGlZ/w8xNFkeSktR7sbzVE3TRK7mmouaZEBjzqKOc/g==
+"@kleros/linguo-contracts@~0.5.0":
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/@kleros/linguo-contracts/-/linguo-contracts-0.5.0.tgz#df73060f62aab86f24472c27119642204b8b9a76"
+ integrity sha512-aYOi2/skxJ2aQ8BGs8NEDZYr/I1ZF8nIYM8gdzCAgjsx8QJgMqSMKsDJ5nkiJ+MuSokO649I3Z6SU594E6YzDQ==
dependencies:
"@kleros/erc-792" "^7.0.0"
"@kleros/ethereum-libraries" "^7.0.0"
@@ -5025,7 +5037,7 @@ async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.0, async@^2.6
dependencies:
lodash "^4.17.14"
-async@^3.1.0:
+async@^3.1.0, async@^3.2.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.1.tgz#d3274ec66d107a47476a4c49136aacdb00665fc8"
integrity sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==
@@ -6557,7 +6569,7 @@ chokidar@^2.1.5, chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
-chownr@^1.1.1:
+chownr@^1.1.1, chownr@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
@@ -8224,6 +8236,11 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436"
integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==
+env-paths@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
+ integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+
envinfo@^7.3.1:
version "7.5.1"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236"
@@ -9843,7 +9860,7 @@ fs-extra@^9.0.0:
jsonfile "^6.0.1"
universalify "^1.0.0"
-fs-minipass@^1.2.5:
+fs-minipass@^1.2.5, fs-minipass@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
@@ -10246,6 +10263,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6,
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+graceful-fs@^4.2.2:
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
+ integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
+
grapheme-breaker@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz#5b9e6b78c3832452d2ba2bb1cb830f96276410ac"
@@ -14458,7 +14480,7 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
safe-buffer "^5.1.2"
yallist "^3.0.0"
-minizlib@^1.2.1:
+minizlib@^1.2.1, minizlib@^1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
@@ -15042,6 +15064,23 @@ node-gyp-build@~4.1.0:
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb"
integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==
+node-gyp@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-6.1.0.tgz#64e31c61a4695ad304c1d5b82cf6b7c79cc79f3f"
+ integrity sha512-h4A2zDlOujeeaaTx06r4Vy+8MZ1679lU+wbCKDS4ZtvY2A37DESo37oejIw0mtmR3+rvNwts5B6Kpt1KrNYdNw==
+ dependencies:
+ env-paths "^2.2.0"
+ glob "^7.1.4"
+ graceful-fs "^4.2.2"
+ mkdirp "^0.5.1"
+ nopt "^4.0.1"
+ npmlog "^4.1.2"
+ request "^2.88.0"
+ rimraf "^2.6.3"
+ semver "^5.7.1"
+ tar "^4.4.12"
+ which "^1.3.1"
+
node-libs-browser@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
@@ -15087,6 +15126,22 @@ node-pre-gyp@^0.13.0:
semver "^5.3.0"
tar "^4"
+node-pre-gyp@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
+ integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4.4.2"
+
node-releases@^1.1.61:
version "1.1.65"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.65.tgz#52d9579176bd60f23eba05c4438583f341944b81"
@@ -15207,7 +15262,7 @@ npm-run-path@^4.0.0:
dependencies:
path-key "^3.0.0"
-npmlog@^4.0.2:
+npmlog@^4.0.2, npmlog@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
@@ -18634,7 +18689,7 @@ request-promise-native@^1.0.5:
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
-request@^2.79.0, request@^2.85.0, request@^2.88.0:
+request@^2.79.0, request@^2.85.0, request@^2.88.0, request@^2.88.2:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
@@ -18812,7 +18867,7 @@ rimraf@2.6.3, rimraf@~2.6.2:
dependencies:
glob "^7.1.3"
-rimraf@^2.5.2, rimraf@^2.6.1, rimraf@^2.6.2:
+rimraf@^2.5.2, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@@ -19031,7 +19086,7 @@ semver-regex@^2.0.0:
resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338"
integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==
-"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -20278,6 +20333,19 @@ tar@^4, tar@^4.0.2:
safe-buffer "^5.1.2"
yallist "^3.0.3"
+tar@^4.4.12, tar@^4.4.2:
+ version "4.4.19"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3"
+ integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==
+ dependencies:
+ chownr "^1.1.4"
+ fs-minipass "^1.2.7"
+ minipass "^2.9.0"
+ minizlib "^1.3.3"
+ mkdirp "^0.5.5"
+ safe-buffer "^5.2.1"
+ yallist "^3.1.1"
+
tdigest@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.1.tgz#2e3cb2c39ea449e55d1e6cd91117accca4588021"
@@ -21136,6 +21204,19 @@ v8-compile-cache@^2.0.0, v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0:
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
+v8-sandbox@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/v8-sandbox/-/v8-sandbox-2.2.2.tgz#bbcf130a01dd2d7c4f28cce7c67a6aca09cdd2f2"
+ integrity sha512-QCKn3AQ7lfxVLL6IZfIQR0uIkUWuM05TfPbz8q0S1b+BwzQpwspGnpGzWB39D5cCO6PmiKDGM+ppa6O4tVu6Gg==
+ dependencies:
+ async "^3.2.0"
+ bindings "^1.5.0"
+ nan "^2.14.0"
+ node-gyp "^6.1.0"
+ node-pre-gyp "^0.14.0"
+ request "^2.88.2"
+ signal-exit "^3.0.2"
+
validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -22170,7 +22251,7 @@ yallist@^2.1.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3, yallist@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==