From 9e93cc621c6a64b4560c69a6b31e259056acfb49 Mon Sep 17 00:00:00 2001 From: Henrique Barcelos Date: Wed, 20 Oct 2021 09:47:28 -0300 Subject: [PATCH 1/7] chore: updated Sokol contracts addresses --- netlify.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netlify.toml b/netlify.toml index 5f95d30e..8cfe0358 100644 --- a/netlify.toml +++ b/netlify.toml @@ -7,7 +7,7 @@ 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"]}}' [context.production.environment] DEFAULT_CHAIN_ID='1' From cff1faed5e503c426109f3f51d53a494d5ae47b7 Mon Sep 17 00:00:00 2001 From: Henrique Barcelos Date: Wed, 20 Oct 2021 09:49:24 -0300 Subject: [PATCH 2/7] fix: improve text on txn notification and clear data button --- src/features/transactions/transactionsSlice.js | 2 +- src/shared/SystemTray/EmailNotifications.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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/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 }) { } > From 0ae4554aac76e6a31a41b1388bb12554cf98bd59 Mon Sep 17 00:00:00 2001 From: Henrique Barcelos Date: Wed, 20 Oct 2021 09:50:14 -0300 Subject: [PATCH 3/7] style: fix wallet provider icon sizes on wallet connection modal --- src/features/web3/WalletConnectionModal.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 { From 05c1153bc68846b971b00752413a095b903f98e3 Mon Sep 17 00:00:00 2001 From: Henrique Barcelos Date: Wed, 20 Oct 2021 09:51:39 -0300 Subject: [PATCH 4/7] fix: prevent app from breaking when using unsupported chain EthValue component could not obtain a valid ETH unit when using an unsupported chain. --- src/shared/EthValue.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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] ?? '' }) } /> ); From fa15f5d165d08eaa6e376ebe6c4d4037d85ac03f Mon Sep 17 00:00:00 2001 From: Henrique Barcelos Date: Wed, 20 Oct 2021 14:01:14 -0300 Subject: [PATCH 5/7] feat: add xDAI Chain support - [x] Add xDAI Chain parameters = [x] Prevent new translation tasks from being requested on Ethereum networks --- netlify.toml | 4 +- package.json | 2 +- src/app/MainRouter.jsx | 116 ++++++++++++------ src/features/linguo/api/createContractApi.js | 4 + src/features/requester/requesterSlice.js | 4 +- src/features/translator/tasksSlice.js | 4 +- src/features/ui/uiSlice.js | 4 +- src/features/web3/supportedChains.js | 27 ++-- src/pages/Faq.jsx | 8 +- src/pages/Home.jsx | 2 +- .../LanguagesSelectionFields.jsx | 6 +- .../TranslationRequest/TranslationRequest.jsx | 56 +++++++-- .../TranslationRequestForm.jsx | 2 +- src/shared/Card.jsx | 2 +- yarn.lock | 101 +++++++++++++-- 15 files changed, 255 insertions(+), 87 deletions(-) diff --git a/netlify.toml b/netlify.toml index 8cfe0358..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":["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"]}}' + 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..9e5deb29 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@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/react-components": "^6.0.0", 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/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/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/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..e47916c2 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.jsx @@ -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/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/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/yarn.lock b/yarn.lock index 04507f28..2e227607 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" @@ -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== From a822c3d386e192371384e37f8592475ab7b21378 Mon Sep 17 00:00:00 2001 From: Henrique Barcelos Date: Wed, 20 Oct 2021 16:28:02 -0300 Subject: [PATCH 6/7] chore: update @kleros/linguo-contracts dependency to v0.5.0 --- package.json | 2 +- src/features/linguo/api/createApiFacade.js | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 9e5deb29..ab72a268 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@hot-loader/react-dom": "^17.0.1", "@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/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/yarn.lock b/yarn.lock index 2e227607..91ada37e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3379,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" From 15c660b50cb81018e7d9dd3a2aa9fbaf24c0d607 Mon Sep 17 00:00:00 2001 From: Henrique Barcelos Date: Wed, 20 Oct 2021 16:57:55 -0300 Subject: [PATCH 7/7] fix: make task status filter to be controllable --- src/features/tasks/TaskStatusFilter.jsx | 8 ++++++-- src/pages/Home.jsx | 12 ++++++------ src/pages/RequesterDashboard/TaskListHeader.jsx | 2 +- src/pages/TranslatorDashboard/TaskListHeader.jsx | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) 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/pages/Home.jsx b/src/pages/Home.jsx index e47916c2..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 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/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`