import React, { useState, useEffect, useContext } from 'react'
import openSocket from 'socket.io-client'
import { makeStyles } from '@material-ui/core/styles'
import Paper from '@material-ui/core/Paper'
import Typography from '@material-ui/core/Typography'
import Container from '@material-ui/core/Container'
import Select from '@material-ui/core/Select'
import { toast } from 'react-toastify'
import api from '../../services/api'
import { i18n } from '../../translate/i18n.js'
import toastError from '../../errors/toastError'
import TextField from '@material-ui/core/TextField'
import Button from '@material-ui/core/Button'
//--------
import { AuthContext } from '../../context/Auth/AuthContext'
import { Can } from '../../components/Can'
import { boolean } from 'yup'
// import Button from "@material-ui/core/Button";
const IntegerInput = ({ value, onChange }) => {
const handleChange = (event) => {
const inputValue = event.target.value
// Only allow digits 0-9
if (/^\d{0,3}$/.test(inputValue)) {
onChange(inputValue)
}
}
return (
)
}
const useStyles = makeStyles((theme) => ({
root: {
display: 'flex',
alignItems: 'center',
padding: theme.spacing(4),
},
paper: {
padding: theme.spacing(2),
display: 'flex',
alignItems: 'center',
},
settingOption: {
marginLeft: 'auto',
},
margin: {
margin: theme.spacing(1),
},
}))
const Settings = () => {
const classes = useStyles()
//--------
const { user } = useContext(AuthContext)
const [settings, setSettings] = useState([])
const [number1, setNumber1] = useState('')
const [number2, setNumber2] = useState('')
const handleNumber1Change = (value) => {
setNumber1(value)
}
const handleNumber2Change = (value) => {
setNumber2(value)
}
const handleGetValues = () => {
let e = {
target: {
value: 'enabled', name: 'remoteTicketSendControll', obj: (number1.trim().length > 0 && number2.trim().length > 0) ? { seconds1: number1, seconds2: number2 } : null
}
}
handleChangeSetting(e)
}
useEffect(() => {
const fetchSession = async () => {
try {
const { data } = await api.get('/settings')
console.log('data.settings: ', data.settings)
setSettings(data.settings)
if (data?.settings) {
let { obj } = data.settings.find((s) => s.key === 'remoteTicketSendControll')
if (!obj) return
obj = JSON.parse(obj)
console.log('SETTING obj: ', obj)
setNumber1(obj.seconds1)
setNumber2(obj.seconds2)
}
} catch (err) {
toastError(err)
}
}
fetchSession()
}, [])
useEffect(() => {
const socket = openSocket(process.env.REACT_APP_BACKEND_URL)
socket.on('settings', (data) => {
console.log('settings updated ----------------------------')
if (data.action === 'update') {
setSettings((prevState) => {
const aux = [...prevState]
const settingIndex = aux.findIndex((s) => s.key === data.setting.key)
aux[settingIndex].value = data.setting.value
return aux
})
}
})
return () => {
socket.disconnect()
}
}, [])
const handleChangeSetting = async (e) => {
const selectedValue = e.target.value
const settingKey = e.target.name
try {
await api.put(`/settings/${settingKey}`, {
value: selectedValue,
// obj: e.target?.obj ? e.target.obj : null
})
if (settingKey === 'farewellMessageByQueue' &&
selectedValue === 'enabled' &&
getSettingValue('farewellMessageByStatusChatEnd') === 'enabled') {
await api.put(`/settings/farewellMessageByStatusChatEnd`, {
value: 'disabled',
})
}
if (settingKey === 'farewellMessageByStatusChatEnd' &&
selectedValue === 'enabled' &&
getSettingValue('farewellMessageByQueue') === 'enabled') {
await api.put(`/settings/farewellMessageByQueue`, {
value: 'disabled',
})
}
toast.success(i18n.t('settings.success'))
} catch (err) {
toastError(err)
}
}
const getSettingValue = (key, _obj = false) => {
const { value, obj } = settings.find((s) => s.key === key)
if (_obj)
return obj
return value
}
const isSaveDisabled = (settings &&
settings.length > 0 &&
getSettingValue('remoteTicketSendControll') === 'disabled')
return (
(
{i18n.t('settings.title')}
{i18n.t('settings.settings.userCreation.name')}
Editar ura
Editar fila
Contato conversar com whatsapps distintos no omnihit
Whatsapp Cloud API
Escopo de transferência de usuario por filas atribuidas a conexão e usuarios atribuido a filas
Modulo campanha
Respostas rápidas por fila
Mensagem de encerramento por fila
Mensagem de encerramento por status de fechamento
Exibir contatos por fila
Controle de envio de mensagem de ticket remoto por numero
{/*
Tempo aleatorio em segundos
*/}
Noficar quando entrar novo ticket na fila
Bloquear mídias de Audio e Video
Mostrar tempo de espera dos tickets aguardando
)}
/>
)
}
export default Settings