Switched from "Public with email" to "Public", now some problems arise

My app’s URL: https://doiqualify.me/

I built out my app last week as “Public with email”, but it was causing some friction that was reducing usage so I switched it to “Public”. But now I have some components that are behaving funny and I wonder if it’s related. I have a Checkbox and two Buttons on the main Tab/Screen that is viewed when the User goes to the app. The Checkbox is linked to a Boolean Column in the User Table, and controls the visibility of the two Buttons - Bordered / dead Button when Checkbox is false, Filled / Navigate to tab Button when the Checkbox is true. But now the Checkbox is greyed out and unclickable and the Button is invisible. It seems no matter what I do I can’t fix this - even deleting them and recreating them. This blocks the User from going further in the app and so I need this resolved badly.

Edit: The Checkbox and two Buttons show up in the Glide Builder and work fine, but not in the web/mobile apps.

So the checkbox links to each signed-in user, is that correct? I assume you are using that as a normal column, not a user-specific one?

I suppose yes because the User Email is the Row Owner. But the Checkbox Component itself doesn’t have any conditions related to the User Email. Now you’ve got me thinking, because I suppose no one that is not a Signed-in User has used the app since the switch.

Edit: I was in the process of trying to implement the Show Sign In later in the app workflow, but didn’t get there yet.

I don’t have any User Specific Columns. I’ve never actually tried that feature yet.

A non signed-in user won’t have that checkbox available to them, based on your descriptions. You should only show those components when user’s email is not empty I guess.

(Sorry for the late reply.) Okay, so I’m just realizing that User Profiles can only be used after Sign In, but the part I find strange is that Public Users aren’t tracked in any way through the GDE. You can’t see that someone is using your app, or what they’re doing - is this correct?

From the docs - “To use user profiles, your app needs to use Public with Email or Allowed Email List.”

In this case, how does the Show Sign In trigger fit into this requirement? You need to have the app set to Public. Does this trigger switch the Users that Sign In with this to be treated as though the app is Public with email?

If the Users have not signed in, do any kind of components that would write to a Table become hidden or inactive? This seems to be what’s happening in my case.

Is there a way to trigger a User that is not Signed In to be added to a Row in the User Table, say with the newly generated RowID being the Row Owner? For example, I had a program built years ago whereas I wanted the Sign Up at the end of a long form where the User was selecting multiple options. The data was stored temporarily until the User either Signed Up, then the User profile was created, or they closed the browser and the data was discarded. This worked awesome for encouraging usage. I think this is comparable to the example given of an e-commerce site that will save the items to your cart even if you’re not Signed In, and then add them to your User profile after Sign In.

Edit: I wonder if the Email Column could be populated with a temporary, throwaway email when a User opens the app, but is not Signed In. Once the User Signed In that email could be replaced with their own. A long shot LOL.

Just adding this here as well.
Have the users fill out the form, or multi-step form (it’s not a form in Glide, but screens, actually), at the end of the “form” they input their email, and you use a set columns action to store all of that into a new row.

2 Likes

Amazing Jesus, thanks for the help! I’m going to try this out now. I think this method is critical to add to the Glide docs.

BTW - my app is totally broken as shown LOL. I’m rebuilding it from being Screen based to Tabs based. I’m also trying the If / Then / Else from the Tables for component visibility, rather than the If / And / Or from the Component Visibility view.

I added a new Table, Sign Up, which has all the same Columns as the User Table. Then my Button Component has a custom Action where I Add a new row to the Sign Up Table and this works to add the form info to Sign Up. I’ve tried it both ways with Set Columns, User Table, and Sign Up Table, but I don’t see the difference. I also added Delete Row, This Row, to clear the information from the User Table.

The big issue I still have is that any component that would write to a Table is still inactive/invisible if I don’t have an email address pre-populated in the User Table. I don’t have any Row Owner Columns, which was an issue I had before. I’ve tried removing the RowID and Email columns from the User Table, to see if there were any difference from some background logic, but no deal…

Edit: I wondered what would happen if I changed the source of the Components from the User Table to the Sign Up Table… it wiped the Components off my Tab :man_facepalming:

So it seems like your tab is built on top of the User Table. If you don’t have any rows in it then there’s no row to attach the screen to. Do you have any filters on the tab level?

Yes, this is as a consequence of creating the app as Public with Email, then switching to Public. When apps are created as Public or Private a User Table isn’t created it seems. This is going to lead me to build the app from scratch, which kind of feels like the fourth time now… But I’m still unsure how this will be fixed if I start with a different Table, it will still be an empty Row to start with.

No, I haven’t done this yet.