maemo.org Bugzilla – Bug 5452
Don't overwrite pre-existing contact info
Last modified: 2011-01-10 14:33:30 UTC
You need to
before you can comment on or make changes to this bug.
STEPS TO REPRODUCE THE PROBLEM:
1) Update a contact's photo with hermes
2) Change that photo manually
3) re-run hermes
Hermes detects a conflict and asks the user what they prefer.
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.
EXTRA SOFTWARE INSTALLED:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1
(KHTML, like Gecko) Chrome/184.108.40.206 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
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
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 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
(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
I've also added "show all images Hermes has downloaded, and anything which was
already there" to the medium-term development roadmap, visible at
(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
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
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
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. ***
Just like you said, I was using "Refresh" and that was overwriting everything.
"Retrieve" doesnt overwrite the "Nickname" but it does overwrite the picture
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?