feat: add frontend import UI (refs #26)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Eric Gullickson
2026-01-11 19:58:17 -06:00
parent 068db991a4
commit 7a5579df7b
7 changed files with 712 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
/**
* @ai-summary API client for user data import
* @ai-context Uploads import archive, generates preview, executes import
*/
import { apiClient } from '../../../core/api/client';
import { ImportPreview, ImportResult } from '../types/import.types';
export const importApi = {
/**
* Generate preview of import data
*/
getPreview: async (file: File): Promise<ImportPreview> => {
const formData = new FormData();
formData.append('file', file);
const response = await apiClient.post('/user/import/preview', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
timeout: 120000, // 2 minute timeout for large files
});
return response.data;
},
/**
* Execute import with specified mode
*/
executeImport: async (
file: File,
mode: 'merge' | 'replace'
): Promise<ImportResult> => {
const formData = new FormData();
formData.append('file', file);
formData.append('mode', mode);
const response = await apiClient.post('/user/import', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
timeout: 120000, // 2 minute timeout for large imports
});
return response.data;
},
};