"feat-sharepoint-test-button-and-error-feedback"

This commit is contained in:
deploy
2026-04-29 15:40:21 +02:00
parent 0d5ddc7eb0
commit 9adacb17de
5 changed files with 58 additions and 6 deletions
+4 -1
View File
@@ -138,8 +138,11 @@ export default function NewInvoice() {
const sendRes = await api.post(`/invoices/${createRes.data.id}/send`);
return sendRes.data;
},
onSuccess: () => {
onSuccess: (data: any) => {
toast.success('Facture envoyée avec succès !');
if (data?.tracking_error) {
toast.error(`⚠️ Suivi SharePoint : ${data.tracking_error}`, { duration: 10000 });
}
qc.invalidateQueries({ queryKey: ['invoices'] });
createdInvoiceIdRef.current = null;
resetForm();
+16 -3
View File
@@ -316,6 +316,12 @@ function GraphSection() {
onError: (e: any) => toast.error(e.response?.data?.error ?? 'Erreur'),
});
const testSp = useMutation({
mutationFn: () => api.post('/settings/sharepoint/test'),
onSuccess: (r: any) => toast.success(r.data?.message ?? 'SharePoint OK'),
onError: (e: any) => toast.error(e.response?.data?.error ?? 'Erreur SharePoint', { duration: 8000 }),
});
function handleSubmit(e: React.FormEvent) {
e.preventDefault();
save.mutate({
@@ -399,9 +405,16 @@ function GraphSection() {
placeholder={data?.sharepoint_sheet_name ?? 'Feuil1'}
value={form.sheetName ?? ''} onChange={e => setForm(f => ({ ...f, sheetName: e.target.value }))} />
</div>
<button type="submit" disabled={save.isPending} className="btn-primary py-2 text-sm">
{save.isPending ? 'Sauvegarde…' : 'Sauvegarder'}
</button>
<div className="flex gap-2">
<button type="submit" disabled={save.isPending} className="btn-primary py-2 text-sm">
{save.isPending ? 'Sauvegarde…' : 'Sauvegarder'}
</button>
<button type="button" onClick={() => testSp.mutate()}
disabled={testSp.isPending || !isConfigured}
className="btn-secondary py-2 text-sm">
{testSp.isPending ? 'Test…' : 'Tester'}
</button>
</div>
</form>
)}
</div>