chore: use monorepo organization

This commit is contained in:
Rafael Taranto 2025-05-12 10:52:54 +01:00
parent deaf7d6ecc
commit a687827f7e
1099 changed files with 8184 additions and 11535 deletions

View file

@ -0,0 +1,185 @@
import { useQuery, useMutation, gql } from "@apollo/client";
import * as R from 'ramda'
import React, { useState } from 'react'
import { H4, Info3 } from 'src/components/typography'
import FormRenderer from 'src/pages/Services/FormRenderer'
import WarningIcon from 'src/styling/icons/warning-icon/comet.svg?react'
import { Button, SupportLinkButton } from 'src/components/buttons'
import { RadioGroup } from 'src/components/inputs'
import _schema from 'src/pages/Services/schemas'
import bitgo from 'src/pages/Services/schemas/singlebitgo'
import classes from './Shared.module.css'
import { getItems } from './getItems'
const GET_CONFIG = gql`
{
accounts
accountsConfig {
code
display
class
cryptos
}
cryptoCurrencies {
code
display
}
}
`
const SAVE_ACCOUNTS = gql`
mutation Save($accounts: JSONObject) {
saveAccounts(accounts: $accounts)
}
`
const isConfigurable = it =>
R.contains(it)(['infura', 'bitgo', 'trongrid', 'galoy'])
const isLocalHosted = it =>
R.contains(it)([
'bitcoind',
'geth',
'litecoind',
'dashd',
'zcashd',
'bitcoincashd'
])
const ChooseWallet = ({ data: currentData, addData }) => {
// no need to fetch exchange config here
const schema = _schema()
const { data } = useQuery(GET_CONFIG)
const [saveAccounts] = useMutation(SAVE_ACCOUNTS, {
onCompleted: () => submit()
})
const [selected, setSelected] = useState(null)
const [error, setError] = useState(false)
const accounts = data?.accounts ?? []
const accountsConfig = data?.accountsConfig ?? []
const coin = currentData.coin
const wallets = getItems(accountsConfig, accounts, 'wallet', coin)
const saveWallet = name => wallet => {
const accounts = { [name]: wallet }
return saveAccounts({ variables: { accounts } })
}
const submit = () => {
if (!selected) return setError(true)
addData({ wallet: selected })
}
const onSelect = e => {
setSelected(e.target.value)
setError(false)
}
return (
<div className={classes.mdForm}>
<H4 className={error && classes.error}>Choose your wallet</H4>
<RadioGroup
labelClassName={classes.radioLabel}
className={classes.radioGroup}
options={R.union(wallets.filled, wallets.unfilled)}
value={selected}
onChange={onSelect}
/>
{isLocalHosted(selected) && (
<>
<div className={classes.infoMessage}>
<WarningIcon />
<Info3>
To set up {selected} please read the node wallet instructions from
our support portal.
</Info3>
</div>
<SupportLinkButton
link="https://support.lamassu.is/hc/en-us/articles/115001209552-Setting-up-your-node-wallets"
label="Support article"
/>
</>
)}
{!isConfigurable(selected) && (
<Button size="lg" onClick={submit} className={classes.button}>
Continue
</Button>
)}
{selected === 'bitgo' && (
<>
<div className={classes.infoMessage}>
<WarningIcon />
<Info3>
Make sure you set up a BitGo wallet to enter the necessary
information below. Please follow the instructions on our support
page if you havent.
</Info3>
</div>
<SupportLinkButton
link="https://support.lamassu.is/hc/en-us/articles/360024455592-Setting-up-BitGo"
label="Support article"
/>
<H4 noMargin>Enter wallet information</H4>
<FormRenderer
value={accounts.bitgo}
save={saveWallet(selected)}
elements={bitgo(coin).elements}
validationSchema={bitgo(coin).validationSchema}
buttonLabel={'Continue'}
buttonClass={classes.formButton}
/>
</>
)}
{selected === 'infura' && (
<>
<H4 noMargin>Enter wallet information</H4>
<FormRenderer
value={accounts.infura}
save={saveWallet(selected)}
elements={schema.infura.elements}
validationSchema={schema.infura.getValidationSchema(
accounts.infura
)}
buttonLabel={'Continue'}
buttonClass={classes.formButton}
/>
</>
)}
{selected === 'trongrid' && (
<>
<H4 noMargin>Enter wallet information</H4>
<FormRenderer
value={accounts.trongrid}
save={saveWallet(selected)}
elements={schema.trongrid.elements}
validationSchema={schema.trongrid.getValidationSchema(
accounts.trongrid
)}
buttonLabel={'Continue'}
buttonClass={classes.formButton}
/>
</>
)}
{selected === 'galoy' && (
<>
<H4 noMargin>Enter wallet information</H4>
<FormRenderer
value={accounts.galoy}
save={saveWallet(selected)}
elements={schema.galoy.elements}
validationSchema={schema.galoy.getValidationSchema(accounts.galoy)}
buttonLabel={'Continue'}
buttonClass={classes.formButton}
/>
</>
)}
</div>
)
}
export default ChooseWallet