import { Button, Group, Space, TextInput, Notification, Switch, Modal, Select } from '@mantine/core'; import { useForm } from '@mantine/form'; import { useState } from 'react'; import { RegexAddForm } from '../js/models'; import { b64decode, b64encode, okNotify } from '../js/utils'; import { ImCross } from "react-icons/im" import { nfregex } from './NFRegex/utils'; type RegexAddInfo = { regex:string, mode:string, is_case_insensitive:boolean, deactive:boolean } function AddNewRegex({ opened, onClose, service }:{ opened:boolean, onClose:()=>void, service:string }) { const form = useForm({ initialValues: { regex:"", mode:"C", is_case_insensitive:false, deactive:false }, validate:{ regex: (value) => value !== "" ? null : "Regex is required", mode: (value) => ['C', 'S', 'B'].includes(value) ? null : "Invalid mode", } }) const close = () =>{ onClose() form.reset() setError(null) } const [submitLoading, setSubmitLoading] = useState(false) const [error, setError] = useState(null) const submitRequest = (values:RegexAddInfo) => { setSubmitLoading(true) const request:RegexAddForm = { is_case_sensitive: !values.is_case_insensitive, service_id: service, mode: values.mode?values.mode:"B", regex: b64encode(values.regex), active: !values.deactive } setSubmitLoading(false) nfregex.regexesadd(request).then( res => { if (!res){ setSubmitLoading(false) close(); okNotify(`Regex ${b64decode(request.regex)} has been added`, `Successfully added ${request.is_case_sensitive?"case sensitive":"case insensitive"} regex to ${request.service_id} service`) }else if (res.toLowerCase() === "invalid regex"){ setSubmitLoading(false) form.setFieldError("regex", "Invalid Regex") }else{ setSubmitLoading(false) setError("Error: [ "+res+" ]") } }).catch( err => { setSubmitLoading(false) setError("Request Failed! [ "+err+" ]") }) } return