diff --git a/src/front/Components/Layouts/MyAccount/index.tsx b/src/front/Components/Layouts/MyAccount/index.tsx index 937ef3c7..07c35853 100644 --- a/src/front/Components/Layouts/MyAccount/index.tsx +++ b/src/front/Components/Layouts/MyAccount/index.tsx @@ -35,9 +35,37 @@ export default function MyAccount() { }); }, []); + const downloadBackupFile = (backupFile: string, filename: string = 'backup.json') => { + try { + // Create a blob with the backup data + const blob = new Blob([backupFile], { type: 'application/json' }); + + // Create a download link + const url = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = filename; + + // Trigger the download + document.body.appendChild(link); + link.click(); + + // Clean up + document.body.removeChild(link); + window.URL.revokeObjectURL(url); + } catch (error) { + console.error('Error downloading backup file:', error); + } + }; + const handleCreateRestorationFile = () => { MessageBus.getInstance().exportBackupFile().then((backupFile) => { - console.log(backupFile); + // Generate filename with current date + const now = new Date(); + const dateString = now.toISOString().split('T')[0]; // YYYY-MM-DD format + const filename = `backup_${dateString}.json`; + + downloadBackupFile(backupFile, filename); }).catch((error) => { console.error(error); }); diff --git a/src/sdk/MessageBus.ts b/src/sdk/MessageBus.ts index 39d219a9..715357e6 100644 --- a/src/sdk/MessageBus.ts +++ b/src/sdk/MessageBus.ts @@ -649,7 +649,7 @@ export default class MessageBus { this.checkToken().then(() => { const messageId = `EXPORT_BACKUP_${uuidv4()}`; - const unsubscribe = EventBus.getInstance().on('BACKUP_RETRIEVED', (responseId: string, backupFile: any) => { + const unsubscribe = EventBus.getInstance().on('BACKUP_RETRIEVED', (responseId: string, backupFile: string) => { if (responseId !== messageId) { return; } @@ -896,6 +896,10 @@ export default class MessageBus { this.doHandleMessage(message.messageId, 'MERKLE_PROOF_VALIDATED', message, (message: any) => message.isValid); break; + case 'BACKUP_RETRIEVED': // EXPORT_BACKUP + this.doHandleMessage(message.messageId, 'BACKUP_RETRIEVED', message, (message: any) => message.backupFile); + break; + case 'ERROR': console.error('Error:', message); this.errors[message.messageId] = message.error;