Issue 796 (#807)

* consume gnosis componentes from npm

* set safe-apps url from environment variable

* fix apps padding and border radius

* Apps updates

* update disclaimer

* fix Loader in TXList

* Fix invalid origin

Co-authored-by: Agustín Longoni <agustin.longoni@altoros.com>
This commit is contained in:
nicolas 2020-04-27 11:28:10 -03:00 committed by GitHub
parent 76c673ac4d
commit 5014e86c3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 738 additions and 41 deletions

View File

@ -136,9 +136,9 @@
}, },
"dependencies": { "dependencies": {
"@gnosis.pm/safe-contracts": "1.1.1-dev.2", "@gnosis.pm/safe-contracts": "1.1.1-dev.2",
"@gnosis.pm/util-contracts": "2.0.6", "@gnosis.pm/util-contracts": "2.0.6",
"@ledgerhq/hw-transport-node-hid": "5.12.0", "@gnosis.pm/safe-react-components": "https://github.com/gnosis/safe-react-components.git#a057248",
"@gnosis.pm/safe-react-components": "https://github.com/gnosis/safe-react-components.git#71e6fed", "@ledgerhq/hw-transport-node-hid": "5.12.0",
"@material-ui/core": "4.9.10", "@material-ui/core": "4.9.10",
"@material-ui/icons": "4.9.1", "@material-ui/icons": "4.9.1",
"@material-ui/lab": "4.0.0-alpha.39", "@material-ui/lab": "4.0.0-alpha.39",

View File

@ -4,7 +4,7 @@ import styled from 'styled-components'
export const Wrapper = styled.div` export const Wrapper = styled.div`
display: grid; display: grid;
grid-template-columns: 245px auto; grid-template-columns: 245px auto;
grid-template-rows: 500px; grid-template-rows: 514px;
min-height: 525px; min-height: 525px;
.background { .background {
@ -33,6 +33,7 @@ export const Menu = styled.div.attrs(() => ({ className: 'background' }))`
export const Content = styled.div.attrs(() => ({ className: 'background' }))` export const Content = styled.div.attrs(() => ({ className: 'background' }))`
grid-column: 2; grid-column: 2;
border-top-right-radius: 8px; border-top-right-radius: 8px;
border-bottom-right-radius: 8px;
background-color: white; background-color: white;
` `

View File

@ -26,6 +26,8 @@ const APPS_STORAGE_KEY = 'APPS_STORAGE_KEY'
const APPS_LEGAL_DISCLAIMER_STORAGE_KEY = 'APPS_LEGAL_DISCLAIMER_STORAGE_KEY' const APPS_LEGAL_DISCLAIMER_STORAGE_KEY = 'APPS_LEGAL_DISCLAIMER_STORAGE_KEY'
const StyledIframe = styled.iframe` const StyledIframe = styled.iframe`
padding: 24px;
box-sizing: border-box;
width: 100%; width: 100%;
height: 100%; height: 100%;
display: ${(props) => (props.shouldDisplay ? 'block' : 'none')}; display: ${(props) => (props.shouldDisplay ? 'block' : 'none')};
@ -36,7 +38,6 @@ const Centered = styled.div`
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
` `
const operations = { const operations = {
SEND_TRANSACTIONS: 'SEND_TRANSACTIONS', SEND_TRANSACTIONS: 'SEND_TRANSACTIONS',
ON_SAFE_INFO: 'ON_SAFE_INFO', ON_SAFE_INFO: 'ON_SAFE_INFO',
@ -151,7 +152,7 @@ function Apps({ closeModal, closeSnackbar, enqueueSnackbar, openModal }: Props)
<a href="https://gnosis-safe.io/terms" rel="noopener noreferrer" target="_blank"> <a href="https://gnosis-safe.io/terms" rel="noopener noreferrer" target="_blank">
Terms Terms
</a>{' '} </a>{' '}
and this Disclaimer, and agree to be bound by . and this Disclaimer, and agree to be bound by them.
</Text> </Text>
</> </>
} }

View File

@ -3,10 +3,12 @@ import axios from 'axios'
import appsIconSvg from '~/routes/safe/components/Transactions/TxsTable/TxType/assets/appsIcon.svg' import appsIconSvg from '~/routes/safe/components/Transactions/TxsTable/TxType/assets/appsIcon.svg'
export const GNOSIS_APPS_URL = 'https://gnosis-apps.netlify.app' export const staticAppsList = [
{ url: `${process.env.REACT_APP_GNOSIS_APPS_URL}/compound`, disabled: false },
const appsUrl = process.env.REACT_APP_GNOSIS_APPS_URL ? process.env.REACT_APP_GNOSIS_APPS_URL : GNOSIS_APPS_URL { url: `${process.env.REACT_APP_GNOSIS_APPS_URL}/uniswap`, disabled: false },
export const staticAppsList = [{ url: `${appsUrl}/compound`, disabled: false }] { url: `${process.env.REACT_APP_GNOSIS_APPS_URL}/nexus-mutual`, disabled: false },
{ url: `${process.env.REACT_APP_GNOSIS_APPS_URL}/ens`, disabled: false },
]
export const getAppInfoFromOrigin = (origin: string) => { export const getAppInfoFromOrigin = (origin: string) => {
try { try {
@ -18,13 +20,17 @@ export const getAppInfoFromOrigin = (origin: string) => {
} }
export const getAppInfoFromUrl = async (appUrl: string) => { export const getAppInfoFromUrl = async (appUrl: string) => {
let res = { id: undefined, url: cleanedUpAppUrl, name: 'unknown', iconUrl: appsIconSvg, error: true }
if (!appUrl) {
return res
}
let cleanedUpAppUrl = appUrl.trim() let cleanedUpAppUrl = appUrl.trim()
if (cleanedUpAppUrl.substr(-1) === '/') { if (cleanedUpAppUrl.substr(-1) === '/') {
cleanedUpAppUrl = cleanedUpAppUrl.substr(0, cleanedUpAppUrl.length - 1) cleanedUpAppUrl = cleanedUpAppUrl.substr(0, cleanedUpAppUrl.length - 1)
} }
let res = { id: undefined, url: cleanedUpAppUrl, name: 'unknown', iconUrl: appsIconSvg, error: true }
try { try {
const appInfo = await axios.get(`${cleanedUpAppUrl}/manifest.json`) const appInfo = await axios.get(`${cleanedUpAppUrl}/manifest.json`)

View File

@ -40,6 +40,7 @@ const TxType = ({ origin, txType }: { txType: TransactionType, origin: string |
const parsedOrigin = getAppInfoFromOrigin(origin) const parsedOrigin = getAppInfoFromOrigin(origin)
if (!parsedOrigin) { if (!parsedOrigin) {
setForceCustom(true) setForceCustom(true)
setLoading(false)
return return
} }
const appInfo = await getAppInfoFromUrl(parsedOrigin.url) const appInfo = await getAppInfoFromUrl(parsedOrigin.url)
@ -52,7 +53,7 @@ const TxType = ({ origin, txType }: { txType: TransactionType, origin: string |
} }
getAppInfo() getAppInfo()
}, [txType]) }, [origin, txType])
if (forceCustom || !origin) { if (forceCustom || !origin) {
return <IconText iconUrl={typeToIcon[txType]} text={typeToLabel[txType]} /> return <IconText iconUrl={typeToIcon[txType]} text={typeToLabel[txType]} />

744
yarn.lock

File diff suppressed because it is too large Load Diff