maemo.org Bugzilla – Bug 5452
Don't overwrite pre-existing contact info
Last modified: 2011-01-10 14:33:30 UTC
You need to log in before you can comment on or make changes to this bug.
SOFTWARE VERSION: 41.10 hermes 0.6 STEPS TO REPRODUCE THE PROBLEM: 1) Update a contact's photo with hermes 2) Change that photo manually 3) re-run hermes EXPECTED OUTCOME: Hermes detects a conflict and asks the user what they prefer. ACTUAL OUTCOME: Right now, for images in particular, it just gets set on the contact and overwrites previous settings. If you click on the choices of image for a contact hermes's images don't get added to that list. Once you change away the image that hermes sets the only way to get it back is to re-run hermes. REPRODUCIBILITY: always EXTRA SOFTWARE INSTALLED: OTHER COMMENTS: User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.4 Safari/532.1
This is the difference between "Retrieve" and "Update", with the latter to cater for people who want to keep of the frequent changes in profile pictures spme Facebook users make. Is this, therefore, a documentation issue rather than a behaviour one? Or should I try and find a way of storing contacts that have been enriched by Hermes and only update those? If so, how to enable people to overwrite existing images? Finally, the image chooser dialogue never shows previously selected images, there is not really anything Hermes can do here. Unless Hermes stored all images for a user and allowed you to select one. This could also solve the overwriting issue.
Hm. I am a bit confused by your response. Clear documentation on the difference between retrieve and update might help a bunch :)
(In reply to comment #2) > Clear documentation on the difference between retrieve and update might help a > bunch :) Well it is v0.0.6 :-p "Retrieve" will "Get contacts' missing info" - i.e., if they don't have a photo; or a birthday; it will download them and add them if possible. "Update" will "Update contacts' info" - i.e., it will overwrite a photo or birthday if it finds a match.
Andrew and I discussed using the term "Refresh" instead of update (which may help this issue). Thinking out loud: What if "Retrieve" was renamed "Update"? So, te two buttons were: [Update] [Refresh] Opinions?
Update and refresh are equally as confusing to me. If I have previously used Hermes to download information and it added a photo for person A and I later changed that photo which button will overwrite that to what Hermes originally downloaded?
(In reply to comment #4) > Andrew and I discussed using the term "Refresh" instead of update (which may > help this issue). Thinking out loud: What if "Retrieve" was renamed "Update"? > So, te two buttons were: > > [Update] [Refresh] Sounds good to me. mgedmin was also expressing confusion that "Retrieve" and "Update" made it sound like a two-step process. Version after 0.1.0 might have to be 0.2.0 with the cool UI changes Tim's pushing :-) I've also added "show all images Hermes has downloaded, and anything which was already there" to the medium-term development roadmap, visible at http://hermes.garage.maemo.org/
(In reply to comment #5) > Update and refresh are equally as confusing to me. If I have previously used > Hermes to download information and it added a photo for person A and I later > changed that photo which button will overwrite that to what Hermes originally > downloaded? The one on the right ;-) Is the fundamental question, should there be two modes (until the "show me everything Hermes has ever retrieved or overwritten" is implemented)? I *can* see use cases for both...
I think that's a good idea Andrew. I think a good way to do it is to have one button "Retrieve Information" and an option "Allow Hermes to overwrite pre-existing data."
What's the status on this bug ? For me (hermes 0.2.2), *retrieve* still reproducibly overwrites images (my guess is those that were manually updated).
(In reply to comment #9) > What's the status on this bug ? For me (hermes 0.2.2), *retrieve* still > reproducibly overwrites images (my guess is those that were manually updated). If you can export a VCard of the user who gets overwritten, that would help. I would guess that the contact doesn't have an image as far as the master contact is concerned, but it does have an IM avatar. This would then mean that when Hermes asked if the contact had a photo, it said "no". If so, I can probably add a check to see if it has an avatar as well - but these are often lower resolution than Facebook photos.
Created an attachment (id=1590) [details] vcf of a user whose image gets overwritten
(In reply to comment #11) > Created an attachment (id=1590) [details] [details] > vcf of a user whose image gets overwritten Thanks. Is this before or after its been overwritten?
Before. The person in question also has a facebook account and the facebook image overwrites the one in this vcf.
*** This bug has been confirmed by popular vote. ***
I'm not familiar with the contacts API, but I've worked with vcf before. A simple suggestion is to use a X-hermes-image-MD5 key, with a computed MD5 sum of the image data. When updating (or refresh?), only update contacts whose image still match the MD5-sum set previously by Hermes. This also indicates when to (optionally) ask the user what to do.
Andrew: Is it possible (reliable, API wise) to set X-PROPERTIES on the VCards/Contacts - if so it should be fairly easy to only update/overwrite photos on contacts, where the photo from address book was set by Hermes. md5sum might be overkill, byte length perhaps too simple - but some sort of check would be nice methinks.
(In reply to comment #16) > Andrew: Is it possible (reliable, API wise) to set X-PROPERTIES on the > VCards/Contacts I *think* so, but haven't fully checked. It should be possible to put an additional parameter on the PHOTO property; we've got parameter handling code to deal with the phone number types. > - if so it should be fairly easy to only update/overwrite > photos on contacts, where the photo from address book was set by Hermes. We'd also have to add a general "Settings" screen so that photos *could* be overridden if people wanted (or we stick with the two buttons and make the left one update images if set by Hermes - but this'll increase bandwidth usage).
This is what I do: 1) Disable all accounts except Gravatar, do a Refresh to overwrite all photos. 2) Enable all accounts, and 3) only use Retreive. This is because Gravatar (and LinkedIn) images are generally a photo of the actual person. The "photos" on Facebook, twitter etc changes quite often and is quite commonly NOT a photo showing the person in question. So (I'm branching suggestions here): A) With a general setting "update photos: yes/no", we could save bandwidth (feature) but still use Refresh to get new or changed information. We would not use any X-SET-BY-HERMES=true property on the photo (or similar) - this as simple as all or none. B) With the addition of a X-SET-BY-HERMES=true property on photos we update, that will allow for a third option: "update photos: all(yes above)/only update contacts without a photo, or with a photo previously set by Hermes/no" Option A would be enough for me. (BTW: Is this off topic - open a separate issue?)
Yes, I (without having read the guidelines recently) believe this is getting off-topic and may be better served (although not sure if still the right place) by a talk.maemo.org thread. Option A would be reasonable, but I'd love (and had been thinking of already) option B as the ideal way to do it.
I'm tempted to just put a confirm dialogue on _Refresh_; as bug 11702 shows there are other instances where people don't want certain classes of information (such as nicknames) overwritten. Lots of options is a poor UI; reducing the screen to only having a single button isn't much better. Therefore, to change the screen from having two buttons to only one mode (possibly with options) pulls at a thread which might require a fundamental rethink of the UI.
*** Bug 11702 has been marked as a duplicate of this bug. ***
*** Bug 11752 has been marked as a duplicate of this bug. ***
@Andrew: Just like you said, I was using "Refresh" and that was overwriting everything. "Retrieve" doesnt overwrite the "Nickname" but it does overwrite the picture (using linkedin?) I understand that the logic for this was that the linkedin picture was more likely be an actual picture of the user. True as it may be, but in my experience its pretty stale vs. a facebook picture which is more likely to be kept current, even though it may not be an actual picture of the user. Some users (including myself) would prefer fb over linkedin/twitter and rather be given an option to choose where the current picture is retrieved from. On the topic of naming convention, how about "Update" and "Sync" instead of "Retrieve" and "Refresh" respectively since "Retrieve" is "updating" the details of the contact and "Refresh" is "syncing" everything from the start?