Contact Conversion Rewrite
I finally finished rewriting the code to convert contacts as it was overly complicated and some code was duplicated a few times. Along the way I was greeted with an error message I’ve never seen:
Error: XML descendants internal method called on incompatible Object
The cause: I put two periods where only one was needed..
I previously mentioned that copying or moving a card would make it lose the attributes added by this extension, but this is now fixed. It does slow down copying and, more noticably, moving cards, so there is a new preference to disable this.
Miscellaneous Bug Fixes
I’ve been searching for bugs to fix and found a few. Not all of the preferences worked, but I think they should be fixed now. The Home section of the card view was sometimes visible when none of the relevant attributes were present, as well, due to a mistake I made in the overlay.
While working on overriding the method to copy/move cards, I crashed Thunderbird by calling the deleteSelectedCards method of the address book view when no cards were selected. After using gdb to look at the backtrace, I found that calling nsIAbMDBDirectory::DeleteCards crashes if null is passed to it. I wrote a unit test and patch, but I am installing FreeBSD and compiling Gnome and it’s dependencies on my slow laptop (on which I test patches in Windows), so I have not tested the patch or test in Windows yet.
Removing the Auth Token
I have now added and tested a button to remove the auth token on the first tab of the extension preferences. If you ever wish to remove the extension, I suggest you remove the auth token. Additionally, if you are getting authentication errors, remove the auth token, close the Address Book if it was open, and re-open the Address Book to sign in again.