New workflow for adding contacts via QR codes
Testers have had trouble with the QR code workflow in the past. Some testers expected to be able to add multiple contacts by scanning a series of QR codes. We can get closer to meeting this expectation by dividing the workflow into two phases: scanning and showing.
In the scanning phase, the user scans any number of QR codes. In the background, her device connects to each scanned device and delivers a contact request. If the scanned device has already sent a contact request to the scanning device, the devices proceed with contact exchange.
In the showing phase, the user's device shows a QR code for other users to scan. A snackbar shows incoming contact requests. Touching the snackbar opens a list of contact requests sent, received and completed. Received requests are marked "scan to confirm". Touching a received request opens the scanning screen.
Pending requests are also indicated by a snackbar at the bottom of the contact list, so the user can leave the contact exchange feature to deal with other tasks, then come back and continue adding contacts.
Separating the initial contact request from the subsequent contact exchange allows users to scan each other's codes in any order. The list of contact requests allows them to keep track of which contacts need to be confirmed.