diff --git a/src/app/components/address-book/address-book.component.ts b/src/app/components/address-book/address-book.component.ts
index 2962598..e7609bc 100644
--- a/src/app/components/address-book/address-book.component.ts
+++ b/src/app/components/address-book/address-book.component.ts
@@ -403,7 +403,7 @@ export class AddressBookComponent implements OnInit, AfterViewInit, OnDestroy {
const fileData = event.target['result'] as string;
try {
const importData = JSON.parse(fileData);
- if (!importData.length || !importData[0].account) {
+ if (!importData.length || (!importData[0].account && !importData[0].address)) {
return this.notificationService.sendError(this.translocoService.translate('address-book.bad-import-data-make-sure-you-selected-a-nault-address-book'));
}
diff --git a/src/app/components/import-address-book/import-address-book.component.html b/src/app/components/import-address-book/import-address-book.component.html
index dc70193..10777b6 100644
--- a/src/app/components/import-address-book/import-address-book.component.html
+++ b/src/app/components/import-address-book/import-address-book.component.html
@@ -38,7 +38,7 @@
New Name
Current Name
-
Account
+
Account
diff --git a/src/app/components/import-address-book/import-address-book.component.ts b/src/app/components/import-address-book/import-address-book.component.ts
index 47d7ee7..1a2b21a 100644
--- a/src/app/components/import-address-book/import-address-book.component.ts
+++ b/src/app/components/import-address-book/import-address-book.component.ts
@@ -39,7 +39,7 @@ export class ImportAddressBookComponent implements OnInit {
try {
let importBlob;
- if (originalString && originalString.includes('account')) {
+ if (originalString && ( originalString.includes('account') || originalString.includes('address') )) {
importBlob = JSON.parse(originalString); // new binary format
} else {
importBlob = JSON.parse(binary); // old non-binary version
@@ -49,28 +49,56 @@ export class ImportAddressBookComponent implements OnInit {
return this.importDataError(`Bad import data. Check your link and try again.`);
}
this.validImportData = true;
- this.importData = importBlob;
this.activePanel = 'import';
- // Now, find conflicting accounts
+ let importDataAddress = {};
+ let importData = [];
+
for (const entry of importBlob) {
- if (!entry.account || !entry.name) {
+ // support common fields that address book exports from other apps may contain
+ const entryName = entry.name ?? entry.nickname;
+ const entryAddress = entry.account ?? entry.address;
+
+ if (!entryAddress || !entryName) {
continue; // Data missing?
}
- entry.originalName = this.addressBook.getAccountName(entry.account);
- entry.originalTrackBalance = this.addressBook.getBalanceTrackingById(entry.account);
- entry.originalTrackTransactions = this.addressBook.getTransactionTrackingById(entry.account);
- if (!entry.originalName) {
+
+ if ( importDataAddress[entryAddress] != null ) {
+ continue; // Duplicate
+ }
+ importDataAddress[entryAddress] = true;
+
+ const originalTrackBalance = this.addressBook.getBalanceTrackingById(entryAddress);
+ const originalTrackTransactions = this.addressBook.getTransactionTrackingById(entryAddress);
+
+ const importEntry = {
+ account: entryAddress,
+ originalName: this.addressBook.getAccountName(entryAddress),
+ name: entryName,
+ originalTrackBalance,
+ trackBalance: entry.trackBalance ?? originalTrackBalance,
+ originalTrackTransactions,
+ trackTransactions: entry.trackTransactions ?? originalTrackTransactions,
+ }
+
+ if (!importEntry.originalName) {
this.newEntries++;
- } else if (entry.originalName === entry.name && entry.originalTrackBalance === entry.trackBalance &&
- entry.originalTrackTransactions === entry.trackTransactions) {
- this.existingEntries++;
+ } else if (
+ (importEntry.originalName === entryName)
+ && (importEntry.originalTrackBalance === importEntry.trackBalance)
+ && (importEntry.originalTrackTransactions === importEntry.trackTransactions)
+ ) {
+ this.existingEntries++;
} else {
this.conflictingEntries++;
}
+
+ importData.push(importEntry);
}
+ this.importData = importData;
} catch (err) {
+ console.log(err);
return this.importDataError(`Unable to decode import data. Check your link and try again.`);
}
}