This branch adds UI strings for warning the user when a newly added pending contact has the same handshake key as another pending contact, and for helping the user to specify whether they're retrying the same pending contact (which I expect will be common) or whether they've been sent the same link by different people (which could be an attack aimed at discovering who their pending contacts are). I'm imagining the UX working as follows:
- After the user enters the link and nickname and taps "Add Contact", we check for duplicates
- If a duplicate is detected, we show a dialog
- The dialog's title is "Duplicate Link"
- The dialog's text is "You already have a pending contact with this link: X. Are X and Y the same person?"
- The buttons are "Same Person" and "Different Person" (are these too long to use as dialog buttons in other languages?)
- If the user chooses "Same Person", we replace the pending contact and show a toast saying "Pending contact updated"
- If the user chooses "Different Person", we show a second dialog
- The second dialog's title is "Duplicate Link" again
- Maybe the second dialog has a warning icon?
- The second dialog's text is "X and Y sent you the same link. One of them may be trying to discover who your contacts are. Don't tell them you received the same link from someone else."
- The second dialog has one button: "OK"
- When the second dialog is dismissed we discard the new pending contact
Using two dialogs is a little bit clunky, but we're not expecting users to go down the "different person" path in real life so I reckon designing a wizard with a variable number of steps is probably overkill.
Part of #1565 (closed).