67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
import * as Yup from 'yup'
|
|
|
|
import {
|
|
SecretInput,
|
|
TextInput,
|
|
Autocomplete,
|
|
} from '../../../components/inputs/formik'
|
|
|
|
import { secretTest, buildCurrencyOptions } from './helper'
|
|
|
|
const schema = markets => {
|
|
return {
|
|
code: 'bitstamp',
|
|
name: 'Bitstamp',
|
|
title: 'Bitstamp (Exchange)',
|
|
elements: [
|
|
{
|
|
code: 'clientId',
|
|
display: 'Client ID',
|
|
component: TextInput,
|
|
face: true,
|
|
long: true,
|
|
},
|
|
{
|
|
code: 'key',
|
|
display: 'API key',
|
|
component: TextInput,
|
|
face: true,
|
|
long: true,
|
|
},
|
|
{
|
|
code: 'secret',
|
|
display: 'API secret',
|
|
component: SecretInput,
|
|
},
|
|
{
|
|
code: 'currencyMarket',
|
|
display: 'Currency market',
|
|
component: Autocomplete,
|
|
inputProps: {
|
|
options: buildCurrencyOptions(markets),
|
|
labelProp: 'display',
|
|
valueProp: 'code',
|
|
},
|
|
face: true,
|
|
},
|
|
],
|
|
getValidationSchema: account => {
|
|
return Yup.object().shape({
|
|
clientId: Yup.string('The client ID must be a string')
|
|
.max(100, 'The client ID is too long')
|
|
.required('The client ID is required'),
|
|
key: Yup.string('The API key must be a string')
|
|
.max(100, 'The API key is too long')
|
|
.required('The API key is required'),
|
|
secret: Yup.string('The API secret must be a string')
|
|
.max(100, 'The API secret is too long')
|
|
.test(secretTest(account?.secret, 'API secret')),
|
|
currencyMarket: Yup.string(
|
|
'The currency market must be a string',
|
|
).required('The currency market is required'),
|
|
})
|
|
},
|
|
}
|
|
}
|
|
|
|
export default schema
|