Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Onboarding 4: Invite Friends #3045

Closed
11 tasks
thescurry opened this issue Nov 2, 2018 · 48 comments
Closed
11 tasks

Onboarding 4: Invite Friends #3045

thescurry opened this issue Nov 2, 2018 · 48 comments
Assignees
Labels
Needs Estimate Please estimate the effort required to complete this ticket.

Comments

@thescurry
Copy link

thescurry commented Nov 2, 2018

Ingest of phone contact list and inviting friends is next.

Please see the following Zeplin mocks:

https://zpl.io/adPzXql

  • User has the option to skip this step
  • When user taps "Find Friends", they get a pop-up on the next screen

https://zpl.io/29PwK8p

  • If user tapped "Find Friends" on the previous screen, they will receive this pop-up
  • If user taps "Don't Allow", pop-up goes away and the user can then choose to tap the "Skip" CTA (which will take them to onboarding 5)
  • If user taps "OK", then contacts are ingested and user advances to the next screen

https://zpl.io/VQ9QDL5

  • Spinner appears as contacts are loaded and presented to the user

https://zpl.io/bWkNj91

  • Once contacts are loaded, they are presented to the user
  • 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

https://zpl.io/2ZkDQD1

  • Once a user taps "invite" an invitation is sent from the server to the selected user(s).
    • 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).

cc: @southerneer @aksonov @bengtan @irfirl

@thescurry thescurry added Enhancement Needs Estimate Please estimate the effort required to complete this ticket. and removed Enhancement labels Nov 2, 2018
@southerneer
Copy link
Contributor

Find Friends list sort order priority:

  1. following
  2. alpha by displayName (handle if in following list, first last otherwise)

@southerneer
Copy link
Contributor

@bengtan please link any relevant backend tickets here and remove the Blocked label when they're ready.

@bengtan
Copy link
Contributor

bengtan commented Nov 6, 2018

Server side tickets:

hippware/wocky#1974
Research and/or implement SMS integration

New API to upload a list of contacts and send invites to them
hippware/wocky#1975

@bengtan
Copy link
Contributor

bengtan commented Nov 6, 2018

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)?

@thescurry
Copy link
Author

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.

@irfirl
Copy link
Contributor

irfirl commented Nov 6, 2018

@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

@southerneer
Copy link
Contributor

I don't understand the difference here between 'sent' and 'invited'. Or 'connect' and 'invite'

@irfirl
Copy link
Contributor

irfirl commented Nov 6, 2018

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.

@bengtan
Copy link
Contributor

bengtan commented Nov 7, 2018

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 ...

  1. This is changing terminology. Are you aware of this? Are you sure you want to do this?

  2. (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

@thescurry
Copy link
Author

thescurry commented Nov 7, 2018

@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...

@thescurry
Copy link
Author

Hey @bengtan let's add this to our discussion agenda tonight.

@southerneer
Copy link
Contributor

From #3023 (comment)...

https://zpl.io/bPdleyl is meant to replace https://zpl.io/V4JKLG4 (the existing Location permission warning screen)

@southerneer
Copy link
Contributor

@toland @bernardd with userBulkLookup and friendBulkInvite this is unblocked on the backend, correct?

@bernardd
Copy link

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).

@southerneer southerneer assigned southerneer and unassigned bengtan Jan 23, 2019
@southerneer
Copy link
Contributor

southerneer commented Jan 23, 2019

@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

@southerneer
Copy link
Contributor

southerneer commented Jan 23, 2019

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.

@bengtan bengtan self-assigned this Jan 29, 2019
@bengtan
Copy link
Contributor

bengtan commented Jan 31, 2019

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:

  • 'Alice Smith' with phone numbers 555-AAA-0001 and 555-AAA-0002
  • 'Bob Doe' with phone numbers 555-BBB-0001 and 555-BBB-0002
  • 'Cathy Cat' with phone numbers 555-CCC-0001 and 555-CCC-0002 and 555-CCC-0003

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

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?

Display phone numbers in general

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

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?

Sort order

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?

Cathy

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?

@irfirl
Copy link
Contributor

irfirl commented Jan 31, 2019

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:

  1. main
  2. mobile
  3. iPhone
  4. home
  5. work
  6. other
    excluded: home fax, work fax

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).

@thescurry
Copy link
Author

^^ @bengtan thoughts on this? Happy to discuss tonight via Slack.

@bengtan
Copy link
Contributor

bengtan commented Feb 1, 2019

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.

@bengtan
Copy link
Contributor

bengtan commented Feb 8, 2019

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 hippware/wocky#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).

@mstidham
Copy link

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

@southerneer
Copy link
Contributor

@mstidham it should work so that's definitely a bug.

@mstidham
Copy link

mstidham commented Feb 14, 2019

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
image

Missing Contact name & numbers:
snip20190214_10

Missing Avatar:
snip20190214_11

@irfirl
Copy link
Contributor

irfirl commented Feb 14, 2019

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.

@southerneer
Copy link
Contributor

southerneer commented Feb 14, 2019

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.

@southerneer
Copy link
Contributor

southerneer commented Feb 14, 2019

@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.

@mstidham
Copy link

mstidham commented Feb 14, 2019

Codepush Staging-Eric "more Invite Friends fixes"

@southerneer Contacts were blank after installing that codepush.

image

@southerneer
Copy link
Contributor

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.

@southerneer
Copy link
Contributor

@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.

@southerneer
Copy link
Contributor

I just ran a test with the latest codepush and was able to send an SMS invite to @irfirl .

@mstidham
Copy link

mstidham commented Feb 15, 2019

@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.

image

@mstidham
Copy link

@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.

@toland
Copy link
Contributor

toland commented Feb 15, 2019

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.

@bernardd
Copy link

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?

@mstidham
Copy link

I have used @miranda and @don.

@bernardd
Copy link

Okay, neither of them have actually got any successful sends marked against them, so that's not it.

@bernardd
Copy link

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.

@southerneer
Copy link
Contributor

@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:

image

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:

  1. This is rigged to always show the Find Friends slide of Onboarding. If you want to run a new test, just kill and reload and it'll take you right back to that slide.
  2. In addition to the contacts dataset I've also added a temporary Mixpanel event (called 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.

@bengtan
Copy link
Contributor

bengtan commented Feb 18, 2019

@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.

@bengtan
Copy link
Contributor

bengtan commented Feb 18, 2019

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

@southerneer
Copy link
Contributor

Cool, thanks for the info @bengtan

@mstidham
Copy link

Verified on Staging Version: 4.1.3

@thescurry
Copy link
Author

LGTM!

@mstidham
Copy link

mstidham commented Jul 2, 2019

I'm running into a couple of issues with this ticket on Prod Version: 4.15.0. I have created a new ticket.
#3880

@mstidham mstidham closed this as completed Jul 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs Estimate Please estimate the effort required to complete this ticket.
Projects
None yet
Development

No branches or pull requests

7 participants