Closed thescurry closed 5 years ago
Find Friends list sort order priority:
handle
if in following list, first last
otherwise)@bengtan please link any relevant backend tickets here and remove the Blocked label when they're ready.
Server side tickets:
https://github.com/hippware/wocky/issues/1974 Research and/or implement SMS integration
New API to upload a list of contacts and send invites to them https://github.com/hippware/wocky/issues/1975
If a user is already friends with any existing contacts, they will appear with "following" (this will probably NOT be the case for many users initially) If a user is NOT already following someone on the list, then "invite" appears
@thescurry:
Uh, there's a third case in between those two.
What if the contact is already on tinyrobot but not followed by the user? Still show 'invite' (by sms)?
Hmmmm... @irfirl what do you think? I doubt it's something we run into today, but we should disucss how to handle the issue. Maybe we should have a section that shows contacts who are already on the platform that you can simply "follow"?
We should discuss "following" versus "being friends" while we are here in LA. Since the app is now very private, we may want to reconsider or at least discuss how users connect.
@bengtan I updated the screens to include contacts that are already on tinyrobot: https://zpl.io/bWkNj91 and https://zpl.io/2ZkDQD1. A few changes to note, however, we're changing the terminology of "follow" to "connect" and then "following" to "friends" because it makes more sense now that all bots are private.
We should also update the "Updates" screen to reflect these changes: https://zpl.io/2plyQxM
I don't understand the difference here between 'sent' and 'invited'. Or 'connect' and 'invite'
Connect means they're already on the app and invite are for those that are not on the app. Sent means you've sent them a request, and invited means you've invited them to the app.
then "following" to "friends" because
This is potentially changing existing usage and could cause confusion if we don't first clarify and communicate to everyone.
Currently, following and friends have two distinct meanings. 'Following' is in one direction, and friends is bidirectional, reciprocal following.
So ...
This is changing terminology. Are you aware of this? Are you sure you want to do this?
(Using old terminology) Following another user doesn't mean that they'll necessarily follow back. There is no (bidirectional) 'friend' relationship (yet) So, for example, they can't send a DM to someone they follow (unless they follow back).
cc @irfirl @thescurry
@bengtan we have no active users currently and because of that, I'm not worried about confusing anyone with a change in wording. I think if we have a private'ish app, using the term "follow/following" doesn't necessarily re-enforce the idea of private or privacy. So our goal is to make the wording work for the type of app we've pivoted to. I think we'll be fine, but it could be confusing for us while we sort this wording change.
Happy to discuss this during the afternoon...
I other words, this app only works if you have friends to connect with and share your location. To that point, it no longer makes sense to follow or have followers. This is more or less cleanup/polish...
Hey @bengtan let's add this to our discussion agenda tonight.
From https://github.com/hippware/rn-chat/issues/3023#issuecomment-441772719...
https://zpl.io/bPdleyl is meant to replace https://zpl.io/V4JKLG4 (the existing Location permission warning screen)
@toland @bernardd with userBulkLookup
and friendBulkInvite
this is unblocked on the backend, correct?
If you're asking if it's ready, yes it is (at least in it's initial form - let me know if you need any changes).
~@thescurry for the contacts permission description I've temporarily added...~
~"We use your contact list to find other tinyrobot users and allow you to invite friends who may enjoy the app."~
~Let me know if you want to replace that.~
Never mind, I forgot the wording was on the Zeplin already
Once a user taps "invite" and the server acknowledges that it received the request to invite, the text is then updated to "invited" (this point might require some discussion).
Inviting users is a one-shot deal at the moment, correct? In other words, there's no UI/screen for a user to go back and check the status of their contact invites later. If that's true and we don't see a need for that in the near future, it's not a big deal to flip the text to "invited" because we don't have to worry about checking that value later (after a background/foreground/reinstall).
UPDATE: talked it over with Steve and Alan and my assumption above was correct.
Question please (@thescurry @irfirl).
A phone contact may have more than one number. What is displayed in that case?
Let's say that the phone contacts include:
And on the server side, 555-BBB-0002, 555-CCC-0002 and 555-CCC-0003 are three distinct existing accounts.
(AAA, BBB, CCC are placeholders)
In the Friends List screen (ie. https://zpl.io/bWkNj91) ...
Alice has two phone numbers, both of which are not an existing account.
Does Alice get listed once or once for each phone number (ie. twice)? If twice, then how does the user know which listing is 555-AAA-0001 and which is 555-AAA-0002? I think the phone number would have to be displayed under the name so the user can disambiguate?
To extrapolate this further, I think it could be argued that for all listings which are not an existing account, the phone number should be displayed. This provides visual cues to the user.
For example, I might have a contact 'Next door neighbour' with a phone number for their home. It's not a mobile number. It's the phone number of the home and SMS cannot be sent to it. If the user can see the phone number (and realises it's not a mobile number), then they (hopefully) won't try to send an invite to it.
Bob has two phone numbers, one is an existing account, the other is not.
Is Bob listed as an account (ie. 'Connect' CTA) or a non-account (ie. 'Invite' CTA), or is Bob listed twice (once as an acount, once as a non-account)?
If listed twice, should there be some sort of visual cue so the user can see that the listings are related?
AFAIK, the current requirements say that accounts are listed first, followed by non-accounts.
If Bob is listed twice, once as an account, and once as a non-account, then the two items may be quite far apart. Is this a problem?
Similar to Bob, but with an added dilemma.
Cathy has phone numbers which correspond to TWO existing accounts. This should never happen, but the client needs to be able to handle it nonetheless. We can use the same answers (and rules) that apply to Bob. But do we want to treat this situation even more carefully/specially?
I think if the user is already on the app, they don't need to be invited again through sms so we can just show the portrait with the 'connect' button to add them directly.
I updated https://zpl.io/bWkNj91 to display phone numbers on the second line for those that are in contacts but not on the app.
If a contact has more than one number, I think it should automatically pick the most likely one that they'll get the invite message. From looking at the list of labels, I think it should be in the following order:
If someone has a phone number connected to two accounts. I think we can just display both of the accounts (if its not much work).
^^ @bengtan thoughts on this? Happy to discuss tonight via Slack.
Quoting @irfirl:
If a contact has more than one number, I think it should automatically pick the most likely one that they'll get the invite message.
Keep in mind that labels are not always accurate. I don't know how accurate they are, on average. For some people, or parts of the population, it could be very inaccurate.
If you list all numbers instead of just the 'most likely' one, the user can choose the correct one. That's much more accurate ... but at the expense of the user having to do their own checking.
Hmmm ...
Or another alternative ... for a multiple-number contact, we could list them once, and then send SMS to all their phone numbers (if they are chosen).
Which makes me think of something else.
Some phone contacts might not have a mobile number ie. they are an email-only contact. These should be just omitted from being displayed, I think.
Quoting @thescurry:
thoughts on this? Happy to discuss tonight via Slack.
Should be fine. It's not a tricky topic, just details.
Agree, let's omit email only contacts for now.
Note:
The dynamic invite links which are triggered by the CTAs in this ticket are server generated and the server's responsibility.
As currently configured, the Testing, next
and Staging servers don't actually send out SMSes. Instead, there are sent to a sandbox/black-hole which just ignores them (albeit logged to Loggly). Only Production/us1
sends out real SMSes.
This has been done for cost reasons (I guess?).
However, QA might actually want real SMSes to be sent for next
and Staging so they can verify that the server generated dynamic links are correct. This can be done (ie. it's just configuration) but I'm not sure if we do want it or not.
@thescurry, what do you think?
(cc @mstidham)
Let's turn it on for staging for sure.
I talked with Bernard.
After communicating the reason for enabling it for Staging, he applied to same logic and decided to also enable it for next
.
The server side PR is https://github.com/hippware/wocky/pull/2230
There is, however, a caveat.
SMSes will only be sent if the user is onboarding from a firebase number.
If the user account is a bypass number/account, SMSes will not be sent (but ignored instead).
I created a new bugsnag ticket for the issue I saw while testing this. I'm unable to get contacts to load, the spinner spins once and then freezes. Should I expect this to load my contacts at this time? #3344
@mstidham it should work so that's definitely a bug.
Codepush Staging-Eric worked to get contacts to populate.
Issue #1 - Invite button doesn't seem to do anything. (Sent button doesn't show) also a bugsnag was created when I tapped Invite. #3346 Issue #2 - Phone numbers are not displaying. Issue #3 - Previous friends are not showing "Friends" button. Issue #4 - Should contacts be in alphabetical order? Issue #5 - Some contacts are blank, no name or number. I also see
Friends Button not displaying
Missing Contact name & numbers:
Missing Avatar:
I think contacts should be in alphabetical order for first name so users can find them easily. We should also omit contacts that have both blank first and last names (but keep ones that have one or the other) We should also omit users who are already friends.
OK, I took this mock to mean that we were showing friends.
Makes sense to omit if no first or last name.
~In terms of alphabetical order, what if they have a last name but not a first name?~ For alpha sorting I'll just combine the first and last name and sort by that...should cover all cases.
@mstidham I just codepushed 'more Invite Friends fixes'. I realize you're probably done for the day, but if you could just download that codepush and allow it to grab your contacts I've added a temporary Mixpanel event to collect that data so I can figure out what's bonking with your particular dataset.
@mstidham I think your first 2 problems are related...if phone #s aren't populating then the SMS invite won't work. I haven't been able to repro those problems yet.
As for the rest I'm filtering out existing friends, sorting alphabetically, and filtering out contacts with no first or last name.
Codepush Staging-Eric "more Invite Friends fixes"
@southerneer Contacts were blank after installing that codepush.
Ha! My job here is done.
Ok, I've got the data from Mixpanel. I'll run it on my end and try to figure out what else needs fixing.
@mstidham I think I have the issues figured out. 1) I messed up the filtering code...it should be fixed now. 2) You only have 2 contacts in that phone with associated phone #s.
I codepushed again ('Invite Friends: fix contact filtering') and now you should see 2 results. Those you should be able to attempt an SMS invite. Or maybe you want to load up some more valid phone numbers for testing and then try the new codepush.
I just ran a test with the latest codepush and was able to send an SMS invite to @irfirl .
@southerneer I have tons of contacts on that account so I'm seeing way more than just 2. I have tapped invite on Don (has Staging) & Ally (doesn't have Staging) and they have not received a SMS invite. I'm also not seeing the phone number still.
@bernardd I'm unable to send/receive sms with invite and @southerneer is able to send them just fine. Could this possibly be due to an issue with phone carrier through our sms services? I use Pioneer/Verizon.
I think the inability to send/receive SMS is due to the fact that the Overseer test that tests our connectivity with Twilio has used up all of our capacity. I have disabled the test and we can regroup on this issue on Monday.
Nah, that's not it - the limit we hit was on the particular test number I was using, and was a wocky feature not a Twilio one. However it's possible that, if you've been testing it a lot, you've hit the same limit for your user. @mstidham What's your user handle?
I have used @miranda and @don.
Okay, neither of them have actually got any successful sends marked against them, so that's not it.
There's no traffic logs for either @miranda or @don that show the friendBulkInvite
call, so whatever's going on, it's not getting as far as the server from what I can see.
@mstidham (and anyone else QAing) I can't figure out why phone numbers aren't populating in the screenshots above. I've pulled the contacts datasets from the different phones you're testing with and used those datasets to test locally and the flow works as expected. Here's an example with one of the phone contact datasets:
The only difference is I'm using my own Firebase account and not Miranda's. So I've introduced the nuclear option via Codepush on StagingEric: 'Invite Friends nuclear option'. A few caveats:
contactsBulkResult
) to pull the dataset returned from our backend with phone->account matches based on your account. This should allow me to mimic fully what's going on for anyone still experiencing problems while testing this flow.@southerneer:
FWIW, I tested the appearance of the 'Find Friends' screen on my phone (4.1.2 and the 'nuclear option' codepush) and it looks fine.
For 4.1.2, phone numbers are populated. There was a contact that appeared that didn't have a phone number associated (It was a facetime email-only contact).
But when I used the 'nuclear option' codepush, the facetime email-only contact didn't appear.
So, overall, the Find Friends screen is working fine for me.
I didn't go as far as to actually press 'Invite' nor 'Connect' though.
More information for future reference:
I didn't go as far as to actually press 'Invite' nor 'Connect' though.
I tried an 'Invite' button (codepush: 'Nuclear option') and received an sms with the following text:
@bengtan has invited you to tinyrobot. Please visit https://tinyrobot.page.link/S8sNt97jemZRJNpZ6 to join.
So it seems to be working ... for me, at least.
Also, if anyone wants to view the decision flowchart for these links, append ?d=1
to the end ie. https://tinyrobot.page.link/S8sNt97jemZRJNpZ6?d=1
Cool, thanks for the info @bengtan
Verified on Staging Version: 4.1.3
LGTM!
I'm running into a couple of issues with this ticket on Prod Version: 4.15.0. I have created a new ticket.
Ingest of phone contact list and inviting friends is next.
Please see the following Zeplin mocks:
https://zpl.io/adPzXql
https://zpl.io/29PwK8p
https://zpl.io/VQ9QDL5
https://zpl.io/bWkNj91
https://zpl.io/2ZkDQD1
cc: @southerneer @aksonov @bengtan @irfirl