Signal-Android icon indicating copy to clipboard operation
Signal-Android copied to clipboard

Names of known contacts removed after they uninstalled Signal

Open bepaald opened this issue 1 year ago • 1 comments

  • [x] I have searched open and closed issues for duplicates
  • [x] I am submitting a bug report for existing functionality that does not work as intended
  • [x] I have read https://github.com/signalapp/Signal-Android/wiki/Submitting-useful-bug-reports
  • [x] This isn't a feature request or a discussion topic

Bug description

I have various chats with contacts in my contact list that have since uninstalled Signal. These contacts are still in my phone contact list with name and number. Suddenly, they are all shown as "Deleted contact" instead of by their name as it appears in the system contacts list.

Funny thing is, when I extract a backup and inspect the SQL database, it is filled with all contacts from my phone's contact list (even if they are not ­— and have never been — on Signal) including phone numbers and names filled in. Obviously the contacts that still have Signal, also have their names filled in (Signal profile names or system names). But those few that used to have Signal, but have left have had their name(s) removed. Before:

$ SELECT _id, e164, aci, pni, system_given_name, system_family_name, system_joined_name FROM recipient WHERE _id = 6;
               _id = 6
              e164 = +316154xxxxx
               aci = 60f2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
               pni = PNI:f562xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 system_given_name = Mxxx
system_family_name = Pxxxxxxx
system_joined_name = Mxxx Pxxxxxxx

After:

$ SELECT _id, e164, aci, pni, system_given_name, system_family_name, system_joined_name FROM recipient WHERE _id = 6;
               _id = 6
              e164 = +316154xxxxx
               aci = 60f2xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
               pni = PNI:f562xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
 system_given_name = 
system_family_name = 
system_joined_name =

The first result is from a backup from a month ago, the second is from last week. Obviously, there's a lot more columns in this table, but all others are unchanged between the two versions as far as I can tell. Note again, these are contacts that are still in my phone's system contact list.

Actual result: I now have multiple chats titled "Deleted account" in my chat list. Expected result: I expect the names of known contacts to be shown in the chat list. Of course, I do not expect to be able to message these people (through Signal), but up until a week or so ago, the bottom of the chat simply stated "Invite Mxxx Pxxxxxxxx to Signal to keep the conversation here", that has now changed into "Invite Deleted account to Signal to keep the conversation here".

Screenshots

signal-2024-03-16-144114

Device info

Device: Samsung Galaxy S10e Android version: 12 Signal version: 7.0.2

Thanks!

bepaald avatar Mar 16 '24 14:03 bepaald

Extra info: looking closer at the contacts who have lost their names, it seems they all still have registered = 1 (= yes) in the database. So I suppose they are technically still 'on Signal'? The contacts that have removed Signal, but retained their names (from the system list) are the ones with registered = 2 (= no). So I suppose that's the reason? But I if they are registered, I don't understand why Signal asks me to invite them in the chat instead of offering to just send a message? Is there a distinction between being registered and having the app installed/being active on it?

So, as far as I can tell

  • registered, active contacts are shown by system_joined_name (if available)
  • unregistered, inactive contacts are shown by system_joined_name (if available)
  • registered, inactive contacts lose their system name and are shown by signal_profile_name, or "Deleted contact" if the profile name is empty.

Either way, I think the system contact name should be used for all contacts if available, whether they are registered or not.

bepaald avatar Mar 16 '24 21:03 bepaald

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar May 18 '24 19:05 stale[bot]

This is still unchanged as far as I can tell. Although the new 'nickname' feature has made it a much smaller problem practically.

bepaald avatar Jun 03 '24 08:06 bepaald

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Aug 03 '24 20:08 stale[bot]

There's a lot of tricky scenarios that you can run into with the new phone number privacy settings. It's a lot to explain in full detail, but users can mark themselves as "undiscoverable" in the signal directory, and when they do that, they appear mostly-indistinguishable from being unregistered in certain contexts. When that happens, we can't actually say for sure whether a chat you have is actually still associated with a system contact. They could have changed their number to something else, for instance. So there's situations where we can't really rely on using the system contact name anymore, particularly when users become unregistered.

FWIW we'll only use "Deleted account" if the use has no usable name (meaning no contact name, e164, or other display name) and is also currently unregistered.

greyson-signal avatar Aug 05 '24 16:08 greyson-signal