chore: update
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import { useState } from 'react'
|
||||
import {
|
||||
Box,
|
||||
Button,
|
||||
FormControl,
|
||||
FormLabel,
|
||||
HStack,
|
||||
Input,
|
||||
Modal,
|
||||
ModalBody,
|
||||
@@ -14,6 +16,7 @@ import {
|
||||
Radio,
|
||||
RadioGroup,
|
||||
Stack,
|
||||
Switch,
|
||||
Text,
|
||||
useToast,
|
||||
} from '@chakra-ui/react'
|
||||
@@ -32,7 +35,14 @@ interface CreateDemoModalProps {
|
||||
export function CreateDemoModal({ isOpen, onClose, onCreated, leadId, lockedUsername }: CreateDemoModalProps) {
|
||||
const toast = useToast()
|
||||
const [username, setUsername] = useState(lockedUsername ?? '')
|
||||
|
||||
const [enableTelegram, setEnableTelegram] = useState(false)
|
||||
const [telegramBotToken, setTelegramBotToken] = useState('')
|
||||
|
||||
const [enableNowPayments, setEnableNowPayments] = useState(false)
|
||||
const [nowPaymentsApiKey, setNowPaymentsApiKey] = useState('')
|
||||
const [nowPaymentsIpnSecret, setNowPaymentsIpnSecret] = useState('')
|
||||
|
||||
const [storageDriver, setStorageDriver] = useState<StorageDriver>('local')
|
||||
const [s3Bucket, setS3Bucket] = useState('')
|
||||
const [s3Endpoint, setS3Endpoint] = useState('')
|
||||
@@ -40,7 +50,11 @@ export function CreateDemoModal({ isOpen, onClose, onCreated, leadId, lockedUser
|
||||
|
||||
const reset = () => {
|
||||
setUsername(lockedUsername ?? '')
|
||||
setEnableTelegram(false)
|
||||
setTelegramBotToken('')
|
||||
setEnableNowPayments(false)
|
||||
setNowPaymentsApiKey('')
|
||||
setNowPaymentsIpnSecret('')
|
||||
setStorageDriver('local')
|
||||
setS3Bucket('')
|
||||
setS3Endpoint('')
|
||||
@@ -65,7 +79,9 @@ export function CreateDemoModal({ isOpen, onClose, onCreated, leadId, lockedUser
|
||||
const params: CreateDemoParams = {
|
||||
username: username.trim(),
|
||||
leadId,
|
||||
telegramBotToken: telegramBotToken.trim() || undefined,
|
||||
telegramBotToken: enableTelegram ? telegramBotToken.trim() || undefined : undefined,
|
||||
nowPaymentsApiKey: enableNowPayments ? nowPaymentsApiKey.trim() || undefined : undefined,
|
||||
nowPaymentsIpnSecret: enableNowPayments ? nowPaymentsIpnSecret.trim() || undefined : undefined,
|
||||
storageDriver,
|
||||
...(storageDriver === 's3'
|
||||
? { s3Bucket: s3Bucket.trim(), s3Endpoint: s3Endpoint.trim() }
|
||||
@@ -104,20 +120,70 @@ export function CreateDemoModal({ isOpen, onClose, onCreated, leadId, lockedUser
|
||||
/>
|
||||
</FormControl>
|
||||
|
||||
{/* --- Telegram --- */}
|
||||
<FormControl isDisabled={submitting}>
|
||||
<FormLabel>Token bot Telegram</FormLabel>
|
||||
<Input
|
||||
placeholder="123456:ABC-DEF..."
|
||||
value={telegramBotToken}
|
||||
onChange={(e) => setTelegramBotToken(e.target.value)}
|
||||
type="password"
|
||||
autoComplete="off"
|
||||
/>
|
||||
<Text fontSize="xs" color="gray.500" mt={1}>
|
||||
Optionnel — laissez vide si le bot n'est pas encore prêt.
|
||||
</Text>
|
||||
<HStack justify="space-between">
|
||||
<FormLabel mb={0}>Bot Telegram</FormLabel>
|
||||
<Switch
|
||||
isChecked={enableTelegram}
|
||||
onChange={(e) => setEnableTelegram(e.target.checked)}
|
||||
/>
|
||||
</HStack>
|
||||
</FormControl>
|
||||
{enableTelegram && (
|
||||
<Box pl={3} borderLeftWidth="2px" borderColor="primary.500">
|
||||
<FormControl isDisabled={submitting}>
|
||||
<FormLabel fontSize="sm">Token bot Telegram</FormLabel>
|
||||
<Input
|
||||
placeholder="123456:ABC-DEF..."
|
||||
value={telegramBotToken}
|
||||
onChange={(e) => setTelegramBotToken(e.target.value)}
|
||||
type="password"
|
||||
autoComplete="off"
|
||||
/>
|
||||
</FormControl>
|
||||
</Box>
|
||||
)}
|
||||
|
||||
{/* --- NowPayments --- */}
|
||||
<FormControl isDisabled={submitting}>
|
||||
<HStack justify="space-between">
|
||||
<FormLabel mb={0}>NowPayments (paiement crypto)</FormLabel>
|
||||
<Switch
|
||||
isChecked={enableNowPayments}
|
||||
onChange={(e) => setEnableNowPayments(e.target.checked)}
|
||||
/>
|
||||
</HStack>
|
||||
</FormControl>
|
||||
{enableNowPayments && (
|
||||
<Stack spacing={3} pl={3} borderLeftWidth="2px" borderColor="primary.500">
|
||||
<FormControl isDisabled={submitting}>
|
||||
<FormLabel fontSize="sm">Clé API NowPayments</FormLabel>
|
||||
<Input
|
||||
placeholder="clé API du compte marchand"
|
||||
value={nowPaymentsApiKey}
|
||||
onChange={(e) => setNowPaymentsApiKey(e.target.value)}
|
||||
type="password"
|
||||
autoComplete="off"
|
||||
/>
|
||||
</FormControl>
|
||||
<FormControl isDisabled={submitting}>
|
||||
<FormLabel fontSize="sm">Secret IPN NowPayments</FormLabel>
|
||||
<Input
|
||||
placeholder="secret configuré côté NowPayments"
|
||||
value={nowPaymentsIpnSecret}
|
||||
onChange={(e) => setNowPaymentsIpnSecret(e.target.value)}
|
||||
type="password"
|
||||
autoComplete="off"
|
||||
/>
|
||||
<Text fontSize="xs" color="gray.500" mt={1}>
|
||||
Laissez vide pour garder celui pré-généré automatiquement.
|
||||
</Text>
|
||||
</FormControl>
|
||||
</Stack>
|
||||
)}
|
||||
|
||||
{/* --- Stockage --- */}
|
||||
<FormControl isDisabled={submitting}>
|
||||
<FormLabel>Stockage des fichiers</FormLabel>
|
||||
<RadioGroup value={storageDriver} onChange={(v) => setStorageDriver(v as StorageDriver)}>
|
||||
@@ -129,17 +195,17 @@ export function CreateDemoModal({ isOpen, onClose, onCreated, leadId, lockedUser
|
||||
</FormControl>
|
||||
|
||||
{storageDriver === 's3' && (
|
||||
<Stack spacing={4} pl={1} borderLeftWidth="2px" borderColor="primary.500">
|
||||
<FormControl isRequired isDisabled={submitting} pl={3}>
|
||||
<FormLabel>Nom du bucket</FormLabel>
|
||||
<Stack spacing={4} pl={3} borderLeftWidth="2px" borderColor="primary.500">
|
||||
<FormControl isRequired isDisabled={submitting}>
|
||||
<FormLabel fontSize="sm">Nom du bucket</FormLabel>
|
||||
<Input
|
||||
placeholder="mon-bucket-demo"
|
||||
value={s3Bucket}
|
||||
onChange={(e) => setS3Bucket(e.target.value)}
|
||||
/>
|
||||
</FormControl>
|
||||
<FormControl isRequired isDisabled={submitting} pl={3}>
|
||||
<FormLabel>Endpoint S3</FormLabel>
|
||||
<FormControl isRequired isDisabled={submitting}>
|
||||
<FormLabel fontSize="sm">Endpoint S3</FormLabel>
|
||||
<Input
|
||||
placeholder="https://s3.exemple.com"
|
||||
value={s3Endpoint}
|
||||
|
||||
@@ -78,6 +78,8 @@ export interface CreateDemoParams {
|
||||
username: string
|
||||
leadId?: string
|
||||
telegramBotToken?: string
|
||||
nowPaymentsApiKey?: string
|
||||
nowPaymentsIpnSecret?: string
|
||||
storageDriver: StorageDriver
|
||||
s3Bucket?: string
|
||||
s3Endpoint?: string
|
||||
@@ -167,6 +169,8 @@ export const api = {
|
||||
username: params.username,
|
||||
...(params.leadId ? { lead_id: params.leadId } : {}),
|
||||
...(params.telegramBotToken ? { telegram_bot_token: params.telegramBotToken } : {}),
|
||||
...(params.nowPaymentsApiKey ? { nowpayments_api_key: params.nowPaymentsApiKey } : {}),
|
||||
...(params.nowPaymentsIpnSecret ? { nowpayments_ipn_secret: params.nowPaymentsIpnSecret } : {}),
|
||||
storage_driver: params.storageDriver,
|
||||
...(params.storageDriver === 's3'
|
||||
? { s3_bucket: params.s3Bucket, s3_endpoint: params.s3Endpoint }
|
||||
|
||||
Reference in New Issue
Block a user