diff --git a/src/services/indexedDBMigrationService.ts b/src/services/indexedDBMigrationService.ts index 979cbc22..45d83c35 100644 --- a/src/services/indexedDBMigrationService.ts +++ b/src/services/indexedDBMigrationService.ts @@ -654,17 +654,25 @@ function compareAccounts(dexieAccounts: Account[], sqliteDids: string[]) { * ``` */ function contactsEqual(contact1: Contact, contact2: Contact): boolean { + const ifEmpty = (arg: any, def: any) => !!arg ? arg : def; + const contact1Methods = + contact1.contactMethods && Array.isArray(contact1.contactMethods) && contact1.contactMethods.length > 0 + ? JSON.stringify(contact1.contactMethods) + : "[]"; + const contact2Methods = + contact2.contactMethods && Array.isArray(contact2.contactMethods) && contact2.contactMethods.length > 0 + ? JSON.stringify(contact2.contactMethods) + : "[]"; return ( - contact1.did == contact2.did && - contact1.name == contact2.name && - contact1.notes == contact2.notes && - contact1.profileImageUrl == contact2.profileImageUrl && - contact1.publicKeyBase64 == contact2.publicKeyBase64 && - contact1.nextPubKeyHashB64 == contact2.nextPubKeyHashB64 && - contact1.seesMe == contact2.seesMe && - contact1.registered == contact2.registered && - JSON.stringify(contact1.contactMethods) == - JSON.stringify(contact2.contactMethods) + ifEmpty(contact1.did, "") == ifEmpty(contact2.did, "") && + ifEmpty(contact1.name, "") == ifEmpty(contact2.name, "") && + ifEmpty(contact1.notes, "") == ifEmpty(contact2.notes, "") && + ifEmpty(contact1.profileImageUrl, "") == ifEmpty(contact2.profileImageUrl, "") && + ifEmpty(contact1.publicKeyBase64, "") == ifEmpty(contact2.publicKeyBase64, "") && + ifEmpty(contact1.nextPubKeyHashB64, "") == ifEmpty(contact2.nextPubKeyHashB64, "") && + !!contact1.seesMe == !!contact2.seesMe && + !!contact1.registered == !!contact2.registered && + contact1Methods == contact2Methods ); }