39 lines
1.1 KiB
TypeScript
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');
|
|
},
|
|
});
|
|
};
|