Files
motovaultpro/frontend/src/features/settings/hooks/useExportUserData.ts

39 lines
1.1 KiB
TypeScript

/**
* @ai-summary React Query hook for user data export
* @ai-context Downloads tar.gz archive with all user data
*/
import { useMutation } from '@tanstack/react-query';
import toast from 'react-hot-toast';
import { exportApi } from '../api/export.api';
interface ApiError {
response?: {
data?: {
error?: string;
};
};
message?: string;
}
export const useExportUserData = () => {
return useMutation({
mutationFn: () => exportApi.downloadUserExport(),
onSuccess: (blob) => {
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
link.download = `motovaultpro_export_${timestamp}.tar.gz`;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
toast.success('Data exported successfully');
},
onError: (error: ApiError) => {
toast.error(error.response?.data?.error || 'Failed to export data');
},
});
};