ultisuite-client/lib/api/hooks/use-mail-signatures.ts
R3D347HR4Y 5304790ed5
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
feat(auth): enhance session management and identity provider settings
- Added SessionGuard component to manage session expiration and online status.
- Updated AuthProvider to streamline session fetching and handling.
- Introduced IdentityProvidersSection for managing OAuth, SAML, and LDAP identity providers.
- Implemented identity provider guides for easier configuration.
- Enhanced mail settings with infinite scroll option for improved user experience.
- Updated global styles and layout components for better consistency across the application.
2026-06-09 09:36:46 +02:00

65 lines
1.9 KiB
TypeScript

'use client'
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { apiClient } from '../client'
import { useAuthReady } from '../use-auth-ready'
import type { ApiMailSignature, CreateMailSignaturePayload } from '../types'
const SIGNATURES_KEY = ['mail-signatures'] as const
async function fetchSignatures(): Promise<ApiMailSignature[]> {
const res = await apiClient.get<ApiMailSignature[] | { signatures: ApiMailSignature[] }>(
'/mail/signatures'
)
return Array.isArray(res) ? res : (res.signatures ?? [])
}
export function useMailSignatures() {
const { ready, authenticated } = useAuthReady()
return useQuery({
queryKey: SIGNATURES_KEY,
queryFn: fetchSignatures,
staleTime: 5 * 60_000,
enabled: ready && authenticated,
})
}
export function useCreateMailSignature() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (payload: CreateMailSignaturePayload) =>
apiClient.post<{ id: string }>('/mail/signatures', payload),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: SIGNATURES_KEY })
},
})
}
export function useUpdateMailSignature() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: ({
signatureId,
...payload
}: CreateMailSignaturePayload & { signatureId: string }) =>
apiClient.put(`/mail/signatures/${signatureId}`, payload),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: SIGNATURES_KEY })
queryClient.invalidateQueries({ queryKey: ['identities'] })
},
})
}
export function useDeleteMailSignature() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (signatureId: string) =>
apiClient.delete(`/mail/signatures/${signatureId}`),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: SIGNATURES_KEY })
queryClient.invalidateQueries({ queryKey: ['identities'] })
},
})
}