Skip to content

Commit 79a8a2c

Browse files
authored
Merge branch 'main' into pinkesh/deploy-for-environment
2 parents a69dadf + 2ed2320 commit 79a8a2c

File tree

8 files changed

+153
-45
lines changed

8 files changed

+153
-45
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-integrations/authentication/supabase-auth/auth-actions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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. 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

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>

docs/marketplace/creators-hub/submit-item-for-reivew.md

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ Please review our [**Submission Guidelines**](submission-criteria.md) and our [*
2020

2121
## How to Submit an Item
2222

23+
An item can be an enitre project (in the case of Temlate Apps or Libraries), a page or a component (in the case of Template Page & Components) or a Custom Function, Action or Widget (in the case of Custom Code).
24+
2325
### 1. Set your project as a Marketplace project
2426

2527
Marketplace items should belong to projects that are specifically made to publish Marketplace items (i.e., they should not be inside of a production project).
@@ -91,21 +93,37 @@ Provide clear and concise instructions on how to implement and utilize your item
9193

9294
#### Marketplace Item Type
9395

94-
Three types of items can be submitted:
96+
Four types of items can be submitted:
97+
98+
- Libraries
99+
- Template Apps
100+
- Template Page or Components
101+
- Custom Code
102+
95103

96-
**Template AppPage or ComponentCustom Code**
97104
<Tabs>
98-
<TabItem value="1" label="Template App" default>
105+
<TabItem value="1" label="Libraries" default>
106+
Libraries allow you to share resources like API endpoints, UI components, custom data types, custom code, action blocks and more with complete version control.
107+
108+
To submit a Library to the Marketplace, first publish your project as a Library. Note that there are some limitations on Library projects - most notably there is currently no support for Firebase or Pages.
109+
110+
For more details, see the [documentation on Libraries](/docs/resources/projects/libraries.md).
111+
112+
:::note
113+
*Libraries* can be monetized. The minimum price for Libraries is $50.
114+
:::
115+
</TabItem>
116+
<TabItem value="2" label="Template App" default>
99117
Template apps contain multiple screens. There are 2 sub-types:
100118

101119
- **Full App:** an app with authentication, complete navigation, multiple pages/flows, database schema, complete action trees, etc.
102120
- **UI Kit**: purely design-based templates and layouts
103121

104122
:::note
105-
*Template Apps* can be monetized. The minimum price for Template Apps is $200.
123+
*Template Apps* can be monetized. The minimum price for Full Apps is $400 while the minimum for UI Kits is $50.
106124
:::
107125
</TabItem>
108-
<TabItem value="2" label="Page or Component">
126+
<TabItem value="3" label="Page or Component">
109127
Pages or Components are assembled modules that can be used within FlutterFlow. There are 2 sub-types:
110128

111129
- **Page:** a single page in a FlutterFlow project
@@ -115,7 +133,7 @@ Pages or Components are assembled modules that can be used within FlutterFlow. T
115133
*Pages and Components* cannot be monetized at this time.
116134
:::
117135
</TabItem>
118-
<TabItem value="3" label="Custom Code">
136+
<TabItem value="4" label="Custom Code">
119137
Custom Code is Dart code that can be used within FlutterFlow projects. There are 3 sub-types:
120138

121139
- **Custom Functions:** synchronous functions that do not have external dependencies.

docs/marketplace/submit-feedback.md

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,49 @@ keywords: [FlutterFlow, MarketPlace, Submit Feedback]
1111

1212
At FlutterFlow Marketplace, your feedback is crucial to improving the quality and reliability of the items available. There are three main ways to submit feedback:
1313

14-
### Contact the Item Creator
14+
## Contact the Item Creator
1515

1616
For direct feedback or questions, we recommend contacting the item creator. This is great for providing constructive feedback or for support with minor item issues:
1717

18+
**Via Item Detail Page:**
19+
20+
1. Navigate to the item's detail page on Marketplace.
21+
2. Click the **Contact the creator** button. This action will launch a new email draft with the creator's official email address pre-filled.
22+
23+
**Via Creator's Profile:**
24+
1825
1. Navigate to the creator's profile on Marketplace.
1926
2. Click the **Contact** button. This action will copy the creator's official email address to your clipboard.
2027
3. Send an Email to the copied email address.
2128

22-
### Rate an Item
29+
## Rate an Item
2330

2431
You can rate items you have used, which helps other users make informed decisions:
2532

33+
**Via Item Detail Page:**
34+
35+
1. Navigate to the item's detail page on Marketplace.
36+
2. Navigate to the **Reviews** tab.
37+
3. Click **Add a review**.
38+
4. Select a star rating from 1 to 5, where 5 is the highest.
39+
5. Optionally, add a comment to your rating. Please keep your feedback respectful and honest.
40+
41+
**Via Dashboard:**
42+
2643
1. Go to the **Usage History** tab of your [dashboard](https://marketplace.flutterflow.io/dashboard).
2744
2. Find the item you want to rate and click on the stars next to it.
2845
3. Select a star rating from 1 to 5, where 5 is the highest.
2946
4. Optionally, add a comment to your rating. Please keep your feedback respectful and honest.
3047

31-
### Report an Item
48+
## Report an Item
3249

3350
If you encounter any issues with an item that may require our attention, such as copyright or trademark infringements, or severe quality issues, you can report it. Reports are submitted anonymously and will alert both the creator and our Marketplace team.
3451

3552
1. Navigate to the item's detail page in Marketplace.
36-
2. Click **Report this item**
53+
2. Click **Report this item** button.
3754
3. Choose a report type and clearly describe the issue, including external URLs if necessary.
3855
4. Click **Submit**
3956

4057
:::tip
4158
If you are the original author or copyright holder of content that has been uploaded to the FlutterFlow Marketplace without your permission, you can file DMCA takedown request following the instructions in [**FlutterFlow's Terms of Service**](https://flutterflow.io/tos).
42-
:::
59+
:::

docs/resources/control-flow/backend-logic/api/rest-api.md

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -615,14 +615,18 @@ To make the API call private, open the **Advanced Settings** tab, turn on the **
615615

616616
Optionally, you can force a user to be authenticated via the Firebase authentication to make this API call. To do so, turn on the **Require Authentication** toggle.
617617

618+
618619
:::info
619-
* If you make the API call private, **Firebase** should be connected to your project. Follow the
620-
instructions on
621-
[**this page**](../../../../ff-integrations/firebase/connect-to-firebase-setup.md) for integrating Firebase with FlutterFlow.
622-
* If you enable the **Require Authentication** toggle, **Firebase Authentication** must be
623-
configured appropriately. Check out
624-
[this page](../../../../ff-integrations/authentication/firebase-auth/auth-initial-setup.md) for
625-
setting up authentication.
620+
621+
Private APIs are deployed as [**Cloud Functions**](https://firebase.google.com/docs/functions) within your Firebase project. While deploying, you can configure the following options:
622+
623+
- **Use Custom Name for Cloud Function**: When enabled, allows you to specify a custom name for the deployed Cloud Function. By default, this option is disabled and Cloud Function is named as `ffPrivateApiCall`.
624+
- **Private API Cloud Function Instances**: You can configure the number of Cloud Function instances to optimize performance and manage costs.
625+
- **Min Instances**: Set the minimum number of active instances to reduce latency and avoid cold starts. Setting this value greater than 0 will keep instances warm but may incur additional costs.
626+
- **Max Instances**: Define the maximum number of instances that can be scaled up based on demand.
627+
628+
**Note**: To minimize costs, you can set the **Min Instances** value to 0. For detailed pricing information, refer to the [**Cloud Functions Pricing page**](https://cloud.google.com/functions/pricing-overview).
629+
626630
:::
627631

628632
<div style={{
@@ -632,7 +636,7 @@ Optionally, you can force a user to be authenticated via the Firebase authentica
632636
width: '100%'
633637
}}>
634638
<iframe
635-
src="https://demo.arcade.software/xoPi2UVZuw3JMqyXPeau?embed&show_copy_link=true"
639+
src="https://demo.arcade.software/TLjzzkK3n9PQGBFDte4L?embed&show_copy_link=true"
636640
title=""
637641
style={{
638642
position: 'absolute',
@@ -651,6 +655,16 @@ Optionally, you can force a user to be authenticated via the Firebase authentica
651655
</iframe>
652656
</div>
653657

658+
:::note
659+
* If you make the API call private, **Firebase** should be connected to your project. Follow the
660+
instructions on
661+
[**this page**](../../../../ff-integrations/firebase/connect-to-firebase-setup.md) for integrating Firebase with FlutterFlow.
662+
* If you enable the **Require Authentication** toggle, **Firebase Authentication** must be
663+
configured appropriately. Check out
664+
[**this page**](../../../../ff-integrations/authentication/firebase-auth/auth-initial-setup.md) for
665+
setting up authentication.
666+
:::
667+
654668
### Process Streaming Response
655669

656670
When working with APIs that send data continuously, like Server Sent Events (SSE), you can enable this option. This ensures your app can handle the ongoing flow of data over a long-lasting HTTP connection to display real-time updates.

0 commit comments

Comments
 (0)