offline data prototype
This commit is contained in:
parent
7df585d774
commit
cbceaaf9dc
7 changed files with 474 additions and 20 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue