Skip to content

Commit 5d3ccae

Browse files
authored
Merge branch 'main' into pinkesh/update-action-parameters-callbacks
2 parents f9c16c4 + 7225523 commit 5d3ccae

File tree

19 files changed

+325
-146
lines changed

19 files changed

+325
-146
lines changed
Binary file not shown.

docs/ff-concepts/alerts-notification/push-notifications.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,6 @@ These steps are mandatory if you want to send push notifications to iOS devices:
3838

3939
Here are the steps to send push notifications:
4040

41-
1. [Enabling push notification](#enabling-push-notification)
42-
2. [Only for iOS: Configuring iOS app](#only-for-ios-configuring-ios-app)
43-
3. [Sending push notifications](#sending-push-notifications)
44-
4541
### Enabling push notification
4642

4743
:::warning
@@ -54,12 +50,18 @@ Here are the steps to send push notifications:
5450

5551
To enable push notifications:
5652

57-
1. Click on the **Settings and Integrations** -> App Settings -> **Push Notifications** and
53+
1. Navigate to the **Settings and Integrations -> App Settings -> Push Notifications** and
5854
**Enable Push Notifications**.
5955
2. Now, click on the **Deploy** button. This will create and deploy the *Cloud Functions* in your
6056
Firebase project that are necessary for push notifications to work.
6157

62-
![img.png](imgs/img.png)
58+
![img.png](imgs/enable-push-notification.avif)
59+
60+
:::info
61+
By default, the **Automatically Prompt Users for Permission** option is enabled, meaning your app will automatically prompt users requesting for permission to receive push notifications when the app is started. However, this may be disruptive to your user sign-in flow.
62+
63+
If you disable it, you can control when the permission is requested. To do so, you will need to manually [**Request Permission**](../../resources/projects/settings/project-setup.md#request-permission-action) at the appropriate point in your app. **It is recommended to keep this option always enabled**.
64+
:::
6365

6466
### Only for iOS: Configuring iOS app
6567

docs/ff-concepts/file-handling/download-file.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ The **Download File** action allows you to enable users to download or save file
4444

4545
:::
4646

47-
## Add Download File [Action]
47+
## Download File [Action]
4848

49-
To add a download file action, select the **Widget** (e.g., button or any interactive widget) where you want users to initiate the file download and set the **Source** to one of the following.
49+
To add a Download File action, select the **Widget** (e.g., button or any interactive widget) where you want users to initiate the file download and set the **Source** to one of the following.
5050

5151
- **From URL**: Use this option for downloading files that are accessible through a direct link and specify the URL of the file that should be downloaded.
5252
- **From File (Bytes)**: Use this option when the file is uploaded to the device using the [Local Upload (Widget State)](upload-data.md#local-upload-widget-state). You can access the file via ***Widget State > Uploaded Local File***.
5353

5454
Optionally, you can specify a **Filename** to be used when the file is downloaded.
5555

56-
![file-download-action](imgs/file-download-action.avif)
56+
![file-download-action](imgs/file-download-action.avif)

docs/ff-integrations/authentication/firebase-auth/google-login.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,4 +158,8 @@ allowFullScreen style={{ width: '100%', height: '600px' }}></iframe>
158158
To confirm the successful integration of Google authentication and the creation of users, navigate
159159
to your **Firebase project > Authentication > Users** and check the entries.
160160

161-
![verify-google-auth-users.png](../imgs/verify-google-auth-users.png)
161+
![verify-google-auth-users.png](../imgs/verify-google-auth-users.png)
162+
163+
:::info
164+
To ensure that your Android release will authenticate to Google, make sure to use Google Play Console's SHA keys - see how to [**Get SHA keys for release mode**](auth-initial-setup.md#getting-sha-keys-for-release-mode).
165+
:::

docs/ff-integrations/authentication/supabase-auth/auth-actions.md

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Follow the steps below to add Email Login action:
3131
By using this action, you can provide your users with the flexibility to create their accounts in different ways, according to their preferences.
3232

3333
:::note
34-
As of now, we support creating accounts with Email/Password and Google.
34+
As of now, we support creating accounts with Email/Password, Google and Apple auth providers.
3535
:::
3636

3737
Follow the steps below to add email signup action:
@@ -62,7 +62,7 @@ Follow the steps below to add this action:
6262

6363
![img_6.png](img_6.png)
6464

65-
## Reset Password [Action]
65+
## Send Reset Password Email [Action]
6666

6767
This action allows users to reset their password by sending a reset link to their registered email address.
6868

@@ -104,7 +104,7 @@ Here’s how you can add the Supabase reset password feature to your app:
104104

105105
1. On the **ForgotPassword Page**, add the **Send Reset Password Email** action and set the **Email Field** dropdown to the widget that accepts the user's email address. This action will send the reset password link to the provided email.
106106
2. The reset link sent to the user will open the **UpdatePassword Page**. On that page, add the **Update Password** action and set the **Password Field** and **Confirm Password Field** to the respective input widgets.
107-
3. Copy the route name of the **UpdatePassword Page** and paste it into the **Supabase Dashboard > Authentication > Email Templates > Reset Password > Source**. Just after **`"{{ .ConfirmationURL}}[here]"`**. This ensures that when users click the reset link, they are directed to the **UpdatePassword** page to set their new password.
107+
3. Copy the route name of the **UpdatePassword Page** and paste it into the **Supabase Dashboard > Authentication > Email Templates > Reset Password > Source**. After **`"{{ .ConfirmationURL}}"`** add **`"/[here]"`** only if you're not using a [custom redirect URL](#use-custom-redirect-urls). If using a custom redirect URL, the confirmation URL will redirect directly to your specified path.
108108
4. [Deploy your app to the web](../../../testing-deployment-publishing/publishing/web-publishing.md).
109109
5. Copy the URL of your deployed project and paste it into the **Supabase Dashboard > Authentication > URL Configuration > Site URL**.
110110

@@ -140,7 +140,41 @@ Here’s how you can add the Supabase reset password feature to your app:
140140
</div>
141141
<p></p>
142142

143+
### Use Custom Redirect URLs
143144

145+
Instead of relying on the default `{{ .ConfirmationURL }}` path, you could optionally configure a **custom redirect URL** in Supabase. This option allows you to bypass the default setup and send users directly to a custom page in your app for resetting their password.
146+
147+
To configure a custom redirect URL:
148+
149+
1. When adding the **Send Reset Password Email** action in FlutterFlow, enter the **Redirect To** URL. For example `http://my-site.com/resetPassword`.
150+
2. Whitelist this custom URL by navigating to **Supabase Dashboard > Authentication > URL Configuration > Redirect URL**, and click **Add URL** to include it.
151+
3. Update the reset password template. Go to **Supabase Dashboard > Authentication > Email Templates > Reset Password > Source** and ensure only `{{ .ConfirmationURL }}` is present in the template (remove any appended route names).
152+
153+
<div style={{
154+
position: 'relative',
155+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
156+
height: 0,
157+
width: '100%'}}>
158+
<iframe
159+
src="https://demo.arcade.software/TaAYPINhn20QEgR6TR5F?embed&show_copy_link=true"
160+
title=""
161+
style={{
162+
position: 'absolute',
163+
top: 0,
164+
left: 0,
165+
width: '100%',
166+
height: '100%',
167+
colorScheme: 'light'
168+
}}
169+
frameborder="0"
170+
loading="lazy"
171+
webkitAllowFullScreen
172+
mozAllowFullScreen
173+
allowFullScreen
174+
allow="clipboard-write">
175+
</iframe>
176+
</div>
177+
<p></p>
144178

145179
## Delete User
146180

docs/ff-integrations/authentication/supabase-auth/email-supabase.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,11 @@ Here's how it looks:
7979

8080
### Adding Log In [Action]
8181

82-
To allow users to log in with their credentials, you can use [this](auth-actions.md#log-in-action) action.
82+
To allow users to log in with their credentials, you can use the [**Log In**](auth-actions.md#log-in-action) action.
8383

8484
### Adding Logout [Action]
8585

86-
To let users log out of your app, you can use [this](auth-actions.md#log-out-action) action.
86+
To let users log out of your app, you can use the [**Log Out**](auth-actions.md#log-out-action) action.
8787

8888
### Verify user creation
8989

docs/ff-integrations/database/cloud-firestore/firestore-actions.md

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -261,26 +261,37 @@ com/embed/238400b5445b444db712f492584b0d6e?sid=7b496882-0280-4920-924c-640fddeff
261261

262262
To do so:
263263

264-
1. Ensure you have **Query Collection** or **Document from Reference** added on a widget with **Single Time Query** disabled.
265-
2. Now select the widget, head over to **Actions**, and click **+ Add Action**.
266-
3. Select the **On Data Change** tab. That means actions added under this will be called whenever the data changes.
267-
4. Now, you can
268-
[add any Action](../../../resources/control-flow/functions/action-flow-editor.md#adding-an-action-example)
269-
here.
264+
1. Ensure you have added a **Query Collection** or **Document from Reference** on a widget with **Single Time Query** disabled.
265+
2. Now, on the widget with **Query Collection** or **Document from Reference**, open the **Action Flow Editor** and set **On Data Change** as the [Action Trigger](../../../resources/control-flow/functions/action-triggers.md). This ensures that any actions you add will be triggered whenever the data is updated, added, or deleted.
266+
3. You can now [add any action](../../../resources/control-flow/functions/action-flow-editor.md#adding-an-action-example) you want to perform, such as showing a notification, refreshing the UI, or fetching related data.
270267

271268
:::info
272-
* Actions will be triggered whenever the data is added, updated, or deleted.
273-
* If you are adding this on ListView, ensure you disable the infinite scroll.
269+
If you are using this trigger on a ListView, make sure to **disable** the **Infinite Scroll**.
274270
:::
275271

276-
Here is an example showing the
277-
[**Snackbar**](../../../resources/ui/pages/page-elements.md#show-snackbar-action)
278-
message when the data
279-
changes in a collection.
280-
281-
<figure>
282-
![img_27.png](img_27.png)
283-
<figcaption class="centered-caption">Trigger snackbar action on data change</figcaption>
284-
</figure>
285-
272+
<div style={{
273+
position: 'relative',
274+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
275+
height: 0,
276+
width: '100%'}}>
277+
<iframe
278+
src="https://demo.arcade.software/ghFiQWGsQuJu5reUyXnl?embed&show_copy_link=true"
279+
title=""
280+
style={{
281+
position: 'absolute',
282+
top: 0,
283+
left: 0,
284+
width: '100%',
285+
height: '100%',
286+
colorScheme: 'light'
287+
}}
288+
frameborder="0"
289+
loading="lazy"
290+
webkitAllowFullScreen
291+
mozAllowFullScreen
292+
allowFullScreen
293+
allow="clipboard-write">
294+
</iframe>
295+
</div>
296+
<p></p>
286297

docs/ff-integrations/database/supabase/database-actions.md

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,17 @@ Let's see how to filter the Supabase table to display only desired items:
174174
- Find the **Value** property and set it to an appropriate value and click Confirm.
175175

176176
:::tip
177-
You could choose a Filter relation based on your requirements. For example, to show only completed assignments, set the Field Name to the column that holds completed status, e.g., is_done, set the Relation to Equal To, and set the Value to True. Here's another example. For showing only users older than 30, create a column called Age, set the Relation to Greater Than, and set the Value to 30.
177+
You could choose a filter relation based on your requirements. For example:
178+
179+
- **Equal To**: To show only completed assignments, set the **Field Name** to the column that holds the completion status (e.g., **is_done**), set the **Relation** to **Equal To**, and set the **Value** to **True**.
180+
- **Greater Than**: To show only users older than 30, set the **Field Name** to the **age** column, set the **Relation** to **Greater Than**, and set the **Value** to 30.
181+
- **Like**: For filtering addresses with zip codes starting with '35,' set the **Field Name** to the **zip_code** column, set the **Relation** to **LIKE**, and set the **Value** to **35%**. In the value field, you use the following wildcards to perform flexible pattern matching to filter your data effectively.
182+
- **Percent (`%`) Wildcard**: Represents zero, one, or multiple characters.
183+
- Example: `'A%'` matches any string starting with `'A'` (e.g., `'Apple'`, `'Apex'`).
184+
- Example: `'%A%'` matches any string containing `'A'` (e.g., `'Canada'`, `'Australia'`).
185+
- **Underscore (`_`) Wildcard**: Represents a single character.
186+
- Example: `'A_'` matches any two-character string starting with `'A'` (e.g., `'An'`, `'At'`).
187+
- Example: `'A__'` matches any three-character string starting with `'A'` (e.g., `'Ant'`, `'Art'`).
178188
:::
179189

180190
<div class="video-container"><iframe src="https://www.loom.
@@ -204,6 +214,42 @@ com/embed/244eea2a4f694120b08524b7b8cf67de?sid=13d47ef5-5d48-4986-88da-d335ce23b
204214
Additional Note: Currently, you can only add "and" conditions to Supabase query filters. If you want to add an "or" filter like "status == 5 or status == 8", you can consider logic to apply "status in (5,8)" or any other logic. Fully customizable using API calls or custom actions.
205215
:::
206216

217+
## Trigger Action On Data Change
207218

219+
Sometimes, you may want to trigger an action whenever data changes in a Supabase table. For instance, in an ecommerce app, you might want to notify users on the orders page when the status of their order is updated.
208220

221+
To respond to data changes in a Supabase table:
209222

223+
1. Ensure you have added a **Supabase Query** to a widget (e.g., a ListView) with **Single Time Query** disabled to enable real-time updates.
224+
2. On the widget with the **Supabase Query**, open the **Action Flow Editor** and set **On Data Change** as the [Action Trigger](../../../resources/control-flow/functions/action-triggers.md). This ensures that any actions you add will be triggered whenever the data is updated, added, or deleted.
225+
3. You can now [add any action](../../../resources/control-flow/functions/action-flow-editor.md#adding-an-action-example) you want to perform, such as showing a notification, refreshing the UI, or fetching related data.
226+
227+
:::info
228+
If you are using this trigger on a ListView, make sure to **disable** the **Infinite Scroll**.
229+
:::
230+
231+
<div style={{
232+
position: 'relative',
233+
paddingBottom: 'calc(56.67989417989418% + 41px)', // Keeps the aspect ratio and additional padding
234+
height: 0,
235+
width: '100%'}}>
236+
<iframe
237+
src="https://demo.arcade.software/ghFiQWGsQuJu5reUyXnl?embed&show_copy_link=true"
238+
title=""
239+
style={{
240+
position: 'absolute',
241+
top: 0,
242+
left: 0,
243+
width: '100%',
244+
height: '100%',
245+
colorScheme: 'light'
246+
}}
247+
frameborder="0"
248+
loading="lazy"
249+
webkitAllowFullScreen
250+
mozAllowFullScreen
251+
allowFullScreen
252+
allow="clipboard-write">
253+
</iframe>
254+
</div>
255+
<p></p>

0 commit comments

Comments
 (0)