offline data prototype

This commit is contained in:
j3d1 2026-08-01 01:49:49 +02:00
parent 7df585d774
commit cbceaaf9dc
7 changed files with 474 additions and 20 deletions

View file

@ -103,20 +103,50 @@ export default {
exportKey() {
const key = this.userIdentityRecord;
},
fileToBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => {
const buffer = reader.result;
if (!(buffer instanceof ArrayBuffer)) {
reject(new Error('Could not read file'));
return;
}
const data = new Uint8Array(buffer);
const base64 = btoa(data.reduce((acc, byte) => acc + String.fromCharCode(byte), ''));
resolve(base64);
};
reader.onerror = (error) => reject(error);
reader.readAsArrayBuffer(file);
});
},
async importData() {
if (!this.selectedFile) {
alert('Please select a file to import');
return;
}
alert('Data import not implemented');
return;
const formData = new FormData();
formData.append('file', this.selectedFile);
console.log(formData);
const servers = await this.getHomeServers();
const data = await servers.postRaw(this.signHashedAuth, '/api/import/', formData);
console.log(data);
try {
const base64 = await this.fileToBase64(this.selectedFile);
const servers = await this.getHomeServers();
const summary = await servers.post(this.signAuth, '/api/import/', {zip: base64});
if (summary && summary.detail) {
alert('Data import failed: ' + summary.detail);
return;
}
alert('Data imported successfully: ' +
`${summary.inventory_items || 0} inventory items, ` +
`${summary.friends || 0} friends, ` +
`${summary.locations || 0} locations, ` +
`${summary.files || 0} files.`);
this.selectedFile = null;
const fileInput = document.getElementById('inputFile');
if (fileInput) {
fileInput.value = '';
}
} catch (error) {
console.error('Data import failed', error);
alert('Data import failed: ' + error);
}
},
async exportData() {
const servers = await this.getHomeServers();