Public/public w/email question

Working on a new app and can’t get past the sign in process working the way I want. My other app is whitelist so I haven’t experienced this before.

Here the flow I’m trying to make work…tried two options:

Privacy set to public: There is a tab to create your profile, and the tab disappears as soon as you complete the form (writes to a user profiles sheet). That works fine but the tab doesn’t disappear because the user isn’t “signed in”. Since this didn’t work, I tried plan B…

Privacy set to public with email: Now the sign-in is writing the email to the user profiles sheet. WHY? Shouldn’t the sign in only write to the App Login sheet? The user lands on the tab where there is a form to create profile, as intended. Unfortunately this creates a second row on the user profiles sheet. So now there is a row with just the user’s email (generated when they signed in) and a second row with all of their profile info and the same email. Because there are 2 rows on the user profile sheet with the same email, the app doesn’t know what to do.

How do I fix this? Ideally I would like to use the first approach but I don’t think there is a way. How do we stop the sign in from writing a row to the user profiles sheet? Also, why doesn’t the tab recognize the condition (Show when username is empty) once the profile form is completed?

Can’t believe I’m stuck at the sign-in process…Thanks for any help!

If you have user profiles enabled, it will create a new record in whatever you designate as the user profile sheet. If you don’t want that to happen, then disable user profiles, but you will then lose the ability to use user profile values throughout the app. If you are using user profiles and a form, they will most definitely create two records. You should instead be editing the existing record that glide created for you.

I haven’t played around with a public app and the login button. I would assume that it would work the same with user profiles enabled, but I don’t know for sure.

1 Like

Yep, trying to figure out how to make the profile write to the same row that already has the email from the login - I tried using the special value for email (since user is logged in), and it works, but still writing to user profiles sheet as a second row. Does it make sense that logging in writes to user profiles? This is super frustrating. I feel like sign in flow shouldn’t be this hard. I definitely don’t want to turn off user profiles! :upside_down_face: So how do you “edit the existing record that Glide created”? I can’t make it work and this really seems fundamental.

This may help New user profile setup

I have seen this discussed many times on the forum

1 Like

Yes, it makes sense that logging in creates a row. That was the intention of user profiles. It create the row for you and the user can then edit the existing row or authorities and roles can be set on that row. Again if you don’t want that to happen, then you can disable user profiles.

1 Like

No no, I agree and understand. I want to know how to edit the row. I will re-read some old threads that Jason sent. I did search and review a lot of the info but obviously I’m missing something simple! Thanks Jeff!

It would be the same as editing any other row in glide. You can show the detail style layout filtered by signed in user and either place entry components on the screen, or open up editing so they can click on the edit pencil to edit their profile.

1 Like

Yeah, I’m trying to use a form to edit the row and I can’t. I think using the column value or email special value should enable this but it doesn’t. I do understand that forms create new rows. I will try using direct entry fields on that tab, vs. the form.

2 Likes

This has come up several times and I always struggle to find my original response where I questioned why the user was allowing user profiles to create rows and also using a form to create new rows as well. This all stems from several people using the original Instagram template that was built before user profiles were a feature. It used a form button to create the profile from scratch. The user profiles came around were designed to create the row for you and if you took a user directly to their user profile when the signed in for the first time, there would be an automatic row for the profile screen to attach to. Otherwise they would be stuck on a screen that wasn’t attached to any row at all.

It’s to save a step having to have the user create the row first. I guess

2 Likes

There is a problem, everywhere you turn - every approach that solves one problem, creates another. Conditional visibility on the profile tab also screws up the flow. I hope that the new “onboarding” screens will be released soon because a proper flow to onboard to an app shouldn’t be this hard.

1 Like

The proper flow I have built for many apps is like this:

  • Have a “Profile Done?” number column, set it to user-specific, in your user profiles sheet.

  • Have a “Sign up” tab, filter it by email is signed-in user, only show it when Profile Done doesn’t equal 1. Then add as many entry components as you want to it so the user can fill out their profile.

  • Show a “Complete sign up” button only when the user has filled out all the fields you want them to. That button is set to increment the Profile Done column by 1.

Show all other tabs only when Profile Done equals 1.

3 Likes

Yeah, like @ThinhDinh says, it’s just a matter of establishing all the fields that you require for a profile to be complete with If/Then columns. Use that for your conditional tab visibility instead of just checking if the row exists or not.

1 Like

Late to the party and no idea if this helps, but I’ve been playing with public + email due to the new pricing changes. I also need user profiles. When the user first logs in then Glide creates a record in my users sheet, but it will have no name, just an email. I can therefore determine which users need “onboarding”. Part of the onboarding process has them add a name. At which point I know they are onboarded.

2 Likes

Yep, same use case here - but it’s getting sticky for me because I’m trying to sort how to set up the onboarding. I am working on what @ThinhDinh just shared.

1 Like

Ok. I just use IsEmpty on the Name column in the User Profile row. Works for me, but maybe too simplistic for your use case. Good luck anyway.

1 Like

No no, I’d like to know how you’re doing it! I tried the same with when username is empty but if I use the form it writes a new row and if I use text entry, it disappears when entering the first character. How are you collecting the name?

@ThinhDinh Thank you, I am trying!

When I add the button component, and set it to increment the Profile Done column to 1, the button doesn’t show on the screen. :persevere: Any idea why? No conditional visibility set to it yet.

Yeah that’s what I do.

Using if - then - else.

If name is empty false
If avatar is empty false
Else true

(Don’t need to worry about is email empty as already captured on profile sheet when user signs in)

Then I can filter whatever I want using this check - is the user signed up no = false, yes = true

1 Like

I think some have used buttons with an increment action to move to the next screen. Set it up so the button won’t show until all required fields are filled. Then once the button shows, they can click on it, it will increment a value, and that value can be used to show the next screen or tab.

image

I just use the existence of the name to determine tab visibility