feat: dispositivos e ajustes de csat e relatórios
This commit is contained in:
parent
25d2a9b062
commit
e0ef66555d
86 changed files with 5811 additions and 992 deletions
|
|
@ -273,9 +273,9 @@ function App() {
|
|||
const text = await res.text()
|
||||
const msg = text.toLowerCase()
|
||||
const isInvalid =
|
||||
msg.includes("token de máquina inválido") ||
|
||||
msg.includes("token de máquina revogado") ||
|
||||
msg.includes("token de máquina expirado")
|
||||
msg.includes("token de dispositivo inválido") ||
|
||||
msg.includes("token de dispositivo revogado") ||
|
||||
msg.includes("token de dispositivo expirado")
|
||||
if (isInvalid) {
|
||||
try {
|
||||
await store.delete("token"); await store.delete("config"); await store.save()
|
||||
|
|
@ -293,7 +293,7 @@ function App() {
|
|||
} catch {}
|
||||
} else {
|
||||
// Não limpa token em falhas genéricas (ex.: rede); apenas informa
|
||||
setError("Falha ao validar sessão da máquina. Tente novamente.")
|
||||
setError("Falha ao validar sessão da dispositivo. Tente novamente.")
|
||||
tokenVerifiedRef.current = true
|
||||
setTokenValidationTick((tick) => tick + 1)
|
||||
}
|
||||
|
|
@ -443,12 +443,12 @@ function App() {
|
|||
return
|
||||
}
|
||||
if (!validatedCompany) {
|
||||
setError("Valide o código de provisionamento antes de registrar a máquina.")
|
||||
setError("Valide o código de provisionamento antes de registrar a dispositivo.")
|
||||
return
|
||||
}
|
||||
const normalizedEmail = collabEmail.trim().toLowerCase()
|
||||
if (!normalizedEmail) {
|
||||
setError("Informe o e-mail do colaborador vinculado a esta máquina.")
|
||||
setError("Informe o e-mail do colaborador vinculado a esta dispositivo.")
|
||||
return
|
||||
}
|
||||
if (!emailRegex.current.test(normalizedEmail)) {
|
||||
|
|
@ -575,7 +575,7 @@ function App() {
|
|||
setError(null)
|
||||
}
|
||||
if (!currentActive) {
|
||||
setError("Esta máquina está desativada. Entre em contato com o suporte da Rever para reativar o acesso.")
|
||||
setError("Esta dispositivo está desativada. Entre em contato com o suporte da Rever para reativar o acesso.")
|
||||
setIsLaunchingSystem(false)
|
||||
return
|
||||
}
|
||||
|
|
@ -590,7 +590,7 @@ function App() {
|
|||
: ""
|
||||
setIsMachineActive(false)
|
||||
setIsLaunchingSystem(false)
|
||||
setError(message.length > 0 ? message : "Esta máquina está desativada. Entre em contato com o suporte da Rever.")
|
||||
setError(message.length > 0 ? message : "Esta dispositivo está desativada. Entre em contato com o suporte da Rever.")
|
||||
return
|
||||
}
|
||||
// Se sessão falhar, tenta identificar token inválido/expirado
|
||||
|
|
@ -604,9 +604,9 @@ function App() {
|
|||
const text = await hb.text()
|
||||
const low = text.toLowerCase()
|
||||
const invalid =
|
||||
low.includes("token de máquina inválido") ||
|
||||
low.includes("token de máquina revogado") ||
|
||||
low.includes("token de máquina expirado")
|
||||
low.includes("token de dispositivo inválido") ||
|
||||
low.includes("token de dispositivo revogado") ||
|
||||
low.includes("token de dispositivo expirado")
|
||||
if (invalid) {
|
||||
// Força onboarding
|
||||
await store?.delete("token"); await store?.delete("config"); await store?.save()
|
||||
|
|
@ -616,7 +616,7 @@ function App() {
|
|||
setConfig(null)
|
||||
setStatus(null)
|
||||
setIsMachineActive(true)
|
||||
setError("Sessão expirada. Reprovisione a máquina para continuar.")
|
||||
setError("Sessão expirada. Reprovisione a dispositivo para continuar.")
|
||||
setIsLaunchingSystem(false)
|
||||
const p = await invoke<MachineProfile>("collect_machine_profile")
|
||||
setProfile(p)
|
||||
|
|
@ -787,7 +787,7 @@ function App() {
|
|||
{error ? <p className="mt-3 rounded-md bg-rose-50 p-2 text-sm text-rose-700">{error}</p> : null}
|
||||
{!token ? (
|
||||
<div className="mt-4 space-y-3">
|
||||
<p className="text-sm text-slate-600">Informe os dados para registrar esta máquina.</p>
|
||||
<p className="text-sm text-slate-600">Informe os dados para registrar esta dispositivo.</p>
|
||||
<div className="grid gap-2">
|
||||
<label className="text-sm font-medium">Código de provisionamento</label>
|
||||
<div className="relative">
|
||||
|
|
@ -822,7 +822,7 @@ function App() {
|
|||
</p>
|
||||
) : (
|
||||
<p className="text-xs text-slate-500">
|
||||
Informe o código único fornecido pela equipe para vincular esta máquina a uma empresa.
|
||||
Informe o código único fornecido pela equipe para vincular esta dispositivo a uma empresa.
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
|
|
@ -832,7 +832,7 @@ function App() {
|
|||
<div className="space-y-1">
|
||||
<span className="block text-sm font-semibold text-emerald-800">{validatedCompany.name}</span>
|
||||
<span className="text-xs text-emerald-700/80">
|
||||
Código reconhecido. Esta máquina será vinculada automaticamente à empresa informada.
|
||||
Código reconhecido. Esta dispositivo será vinculada automaticamente à empresa informada.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -884,7 +884,7 @@ function App() {
|
|||
</div>
|
||||
) : null}
|
||||
<div className="mt-2 flex gap-2">
|
||||
<button disabled={busy || !validatedCompany || !isEmailValid || !collabName.trim() || provisioningCode.trim().length < 32} onClick={register} className="rounded-lg border border-black bg-black px-3 py-2 text-sm font-semibold text-white hover:bg-black/90 disabled:opacity-60">Registrar máquina</button>
|
||||
<button disabled={busy || !validatedCompany || !isEmailValid || !collabName.trim() || provisioningCode.trim().length < 32} onClick={register} className="rounded-lg border border-black bg-black px-3 py-2 text-sm font-semibold text-white hover:bg-black/90 disabled:opacity-60">Registrar dispositivo</button>
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue