135 lines
4.6 KiB
JavaScript
135 lines
4.6 KiB
JavaScript
import * as R from 'ramda'
|
||
import React from 'react'
|
||
|
||
import { schema as CommissionsSchema } from 'src/pages/Commissions/helper'
|
||
import { LocaleSchema } from 'src/pages/Locales/helper'
|
||
import { WalletSchema } from 'src/pages/Wallet/helper'
|
||
import { fromNamespace, namespaces } from 'src/utils/config'
|
||
|
||
import Commissions from './components/Commissions'
|
||
import Locale from './components/Locales'
|
||
// import Notifications from './components/Notifications'
|
||
// import WizardOperatorInfo from './components/OperatorInfo'
|
||
import Twilio from './components/Twilio'
|
||
import Wallet from './components/Wallet/Wallet'
|
||
import Welcome from './components/Welcome'
|
||
|
||
const getConfiguredCoins = (config, crypto) => {
|
||
const wallet = fromNamespace(namespaces.WALLETS, config)
|
||
return R.filter(it =>
|
||
WalletSchema.isValidSync(fromNamespace(it.code, wallet))
|
||
)(crypto)
|
||
}
|
||
|
||
const hasValidWallet = (config, crypto) => {
|
||
const wallet = fromNamespace(namespaces.WALLETS, config)
|
||
const coins = R.map(it => fromNamespace(it.code, wallet))(crypto)
|
||
|
||
const hasValidConfig = R.compose(
|
||
R.any(R.identity),
|
||
R.map(it => WalletSchema.isValidSync(it))
|
||
)(coins)
|
||
|
||
return hasValidConfig
|
||
}
|
||
|
||
const hasValidLocale = config => {
|
||
const locale = fromNamespace(namespaces.LOCALE, config)
|
||
return LocaleSchema.isValidSync(locale)
|
||
}
|
||
|
||
const hasValidCommissions = config => {
|
||
const commission = fromNamespace(namespaces.COMMISSIONS, config)
|
||
return CommissionsSchema.isValidSync(commission)
|
||
}
|
||
|
||
const getWizardStep = (config, crypto) => {
|
||
if (!config) return 0
|
||
|
||
const validWallet = hasValidWallet(config, crypto)
|
||
if (!validWallet) return 1
|
||
|
||
const validLocale = hasValidLocale(config)
|
||
if (!validLocale) return 2
|
||
|
||
const validCommission = hasValidCommissions(config)
|
||
if (!validCommission) return 3
|
||
|
||
return 0
|
||
}
|
||
|
||
const STEPS = [
|
||
{
|
||
id: 'welcome',
|
||
Component: Welcome
|
||
},
|
||
{
|
||
id: 'wallet',
|
||
Component: Wallet,
|
||
exImage: '/assets/wizard/fullexample.wallet.png',
|
||
subtitle: 'Wallet settings',
|
||
text: `Your wallet settings are the first step for this wizard.
|
||
We'll start by setting up one of cryptocurrencies to get you up and running,
|
||
but you can later set up as many as you want.`
|
||
},
|
||
{
|
||
id: 'locale',
|
||
Component: Locale,
|
||
exImage: '/assets/wizard/fullexample.locale.png',
|
||
subtitle: 'Locales',
|
||
text: `From the Locales page, you can define some important default settings
|
||
of your machines. These values will be the default values of all
|
||
machines you'll later add to your network. Default settings keep you
|
||
from having to enther the same values everytime you add a new machine.
|
||
Once a machine is added, you may override some of these values in the
|
||
overrides section.`
|
||
},
|
||
{
|
||
id: 'twilio',
|
||
Component: Twilio,
|
||
exImage: '/assets/wizard/fullexample.twilio.png',
|
||
subtitle: 'Twilio (SMS service)',
|
||
text: (
|
||
<>
|
||
Twilio is used for SMS operator notifications, phone number collection
|
||
for compliance, and 1-confirmation redemptions on cash-out transactions.
|
||
<br />
|
||
You'll need to configure Twilio if you're offering cash-out or any
|
||
compliance options
|
||
</>
|
||
)
|
||
},
|
||
{
|
||
id: 'commissions',
|
||
Component: Commissions,
|
||
exImage: '/assets/wizard/fullexample.commissions.png',
|
||
subtitle: 'Commissions',
|
||
text: `From the Commissions page, you can define all the commissions of your
|
||
machines. The values set here will be default values of all machines
|
||
you'll later add to your network. Default settings keep you from
|
||
having to enter the same values everytime you add a new machine. Once
|
||
a machine is added, you may override these values per machine and per
|
||
cryptocurrency in the overrides section.`
|
||
}
|
||
// {
|
||
// id: 'notifications',
|
||
// Component: Notifications,
|
||
// exImage: '/assets/wizard/fullexample.notifications.png',
|
||
// subtitle: 'Notifications',
|
||
// text: `Your notification settings will allow customize what notifications you
|
||
// get and where. You can later override all default balance alerts setup
|
||
// here.`
|
||
// },
|
||
// {
|
||
// id: 'operatorInfo',
|
||
// Component: WizardOperatorInfo,
|
||
// exImage: '/assets/wizard/fullexample.operatorinfo.png',
|
||
// subtitle: 'Operator info',
|
||
// text: `Your contact information is important for your customer to be able
|
||
// to contact you in case there’s a problem with one of your machines.
|
||
// In this page, you also be able to set up what you want to share with
|
||
// Coin ATM Radar and add the Terms & Services text that is displayed by your machines.`
|
||
// }
|
||
]
|
||
|
||
export { getWizardStep, STEPS, getConfiguredCoins }
|