refactor: improve type safety and error handling in vacation management components

- Updated the `AprovarFerias.svelte` component to use specific types for `solicitacao` and `gestorId`, enhancing type safety.
- Improved error handling by refining catch blocks to handle errors more accurately.
- Made minor adjustments to ensure consistent code formatting and readability across the component.
This commit is contained in:
2025-10-31 13:39:41 -03:00
parent 5dec7d7da7
commit 5cb63f9437
20 changed files with 155 additions and 112 deletions

View File

@@ -1,6 +1,7 @@
<script lang="ts">
import { useConvexClient } from "convex-svelte";
import { api } from "@sgse-app/backend/convex/_generated/api";
import type { Id, Doc } from "@sgse-app/backend/convex/_generated/dataModel";
interface Periodo {
dataInicio: string;
@@ -8,9 +9,14 @@
diasCorridos: number;
}
type SolicitacaoFerias = Doc<"solicitacoesFerias"> & {
funcionario?: Doc<"funcionarios"> | null;
gestor?: Doc<"usuarios"> | null;
};
interface Props {
solicitacao: any;
gestorId: string;
solicitacao: SolicitacaoFerias;
gestorId: Id<"usuarios">;
onSucesso?: () => void;
onCancelar?: () => void;
}
@@ -27,7 +33,7 @@
$effect(() => {
if (modoAjuste && periodos.length === 0) {
periodos = solicitacao.periodos.map((p: any) => ({...p}));
periodos = solicitacao.periodos.map((p) => ({...p}));
}
});
@@ -59,12 +65,12 @@
await client.mutation(api.ferias.aprovar, {
solicitacaoId: solicitacao._id,
gestorId: gestorId as any,
gestorId: gestorId,
});
if (onSucesso) onSucesso();
} catch (e: any) {
erro = e.message || "Erro ao aprovar solicitação";
} catch (e) {
erro = e instanceof Error ? e.message : String(e);
} finally {
processando = false;
}
@@ -82,13 +88,13 @@
await client.mutation(api.ferias.reprovar, {
solicitacaoId: solicitacao._id,
gestorId: gestorId as any,
gestorId: gestorId,
motivoReprovacao,
});
if (onSucesso) onSucesso();
} catch (e: any) {
erro = e.message || "Erro ao reprovar solicitação";
} catch (e) {
erro = e instanceof Error ? e.message : String(e);
} finally {
processando = false;
}
@@ -101,13 +107,13 @@
await client.mutation(api.ferias.ajustarEAprovar, {
solicitacaoId: solicitacao._id,
gestorId: gestorId as any,
gestorId: gestorId,
novosPeriodos: periodos,
});
if (onSucesso) onSucesso();
} catch (e: any) {
erro = e.message || "Erro ao ajustar e aprovar solicitação";
} catch (e) {
erro = e instanceof Error ? e.message : String(e);
} finally {
processando = false;
}

View File

@@ -110,10 +110,16 @@ class AuthStore {
{}
);
if (usuarioAtualizado && this.state.usuario) {
if (usuarioAtualizado) {
// Preservar role e primeiroAcesso do estado atual
this.state.usuario = {
...this.state.usuario,
...usuarioAtualizado,
role: this.state.usuario?.role || {
_id: "",
nome: "Usuário",
nivel: 999,
},
primeiroAcesso: this.state.usuario?.primeiroAcesso ?? false,
};
localStorage.setItem(