[New Plugin] Listopia - Your Utopia for Mastering Lists in Bubble ( 🚀 Tutorial)

Hi,

I bought the Listopia plugin, but I have a problem with Keeper Data Updated Trigger.

My problem
I use Algolia to make my Bubble.io database searchable. If the user enters a search term, the Algolia plugin from Zeroqode returns a list of unique IDs of the items (episodes) that match the search term. I want to display these items (episodes) in a repeating group. To do this, I perform a “Do a search” in Bubble with the constraint that the unique ID is in the list of IDs of the Algolia plugin. The result of this search is a list of episodes, but their order differs from the order of the unique IDs in the Algolia plugin.

My suboptimal solution
I use Listopia to re-sort the result of the “Do a Search” bubble based on the unique IDs in Algolia. Specifically, the solution looks like this:

Step 1
I use a Keeper Element with the Data Type set to “Text” and List One = “Search for Episodes:each item’s unique id” where the constraint is that the unique id is in the result of the Algolia plugin (see screenshot A). This keeper element therefore contains the unique IDs of the episodes in the “wrong” order.

Step 2
I use the Index Finder workflow and search for the list of unique IDs from the Algolia plugin in the keeper element from step 1 (see screenshot B).

Step 3
I use a second keeper element of the type “Episodes” whose datasource is a “Do a search” with the constraint that the unique ID is in the list of unique IDs from the Algolia plugin. This keeper element therefore contains the episodes (not only unique IDs) in the “wrong” order (see screenshot C).

Step 4
To get the list of episodes from step 3 into the “correct” order (order of the unique IDs from the Algolia plugin), I use the sub list workflow with the result from step 2 (see screenshot D). Subsequently, the result state of the keeper element from step 3 contains the episodes in the correct order.

In principle, this procedure works very well. However, I am currently still using button clicks for step 2 and step 4 to trigger the workflows.

In the future, the sorting of the list should of course happen automatically when the user enters a new search term and the list of Unique IDs in the Algolia plugin changes and thus also List One of the Keeper element from step 1.

I actually wanted to use the Keeper A Data Updated event for this. The problem, however, is that this event is triggered multiple times during a single update operation.

Even if I insert the condition “Action Name is Source Updated”, this workflow is triggered 8 times and if I subsequently enter search terms, the event is triggered 2 times (to check this, I have inserted a number state that is increased by 1 each time the event is triggered → see screenshot E).

Is this a bug? What am I doing wrong or how do I make sure that I really only isolate the source update? Is there maybe another way (maybe smarter way) to organize my desired result (order an item list based on a list of unique IDs)?

PS: I have already considered triggering all actions by clicking on the search button. However, it takes a moment for the Algolia search to run through and I want to avoid triggering the sorting before the search is actually finished (custom events are not an option here, as the search is triggered in the visual element and not via workflow).

I would be very grateful for any information. Best regards from Hamburg! :slight_smile:





1 Like

Hello @florian.adomeit
I hope you’re doing well.

Thank you for utilizing our plugin and providing a detailed explanation of your use case.

The reason for the data being updated multiple times is due to the way Bubble handles the plugin data, triggering updates several times.


I have a question, the Algolia plugin doesn’t have an event for when the search has been completed?


A potential solution might be to input the data into the Keeper element through actions, allowing you to assign a name for each action and create a sequence of workflows by these names. With this approach, the event would only be triggered once. Is this a method you have already tried?

Best

Hi @NoCodeDataArtisan ,

thanks for the quick response.

Unfortunately, Algolia does not have an event for a completed search. There is an “Algolia is loading” event, but it triggers before the search is really complete.

I have already tried to load the data into the keeper element through actions. The problem is that I am missing the right trigger/event in bubble-native. I have tried the following options:

Option 1
Load data when clicking on the “Search” button. However, this does not work because the data is loaded into the keeper element before Algolia is completed.

Option 2
I format the unique ids provided by the Algolia plugin as a string and save this text in a custom state. Then I use a “Do when condition is true” trigger, which is activated every time the unique ids of the Algolia plugin formatted as a string differ from the custom state (Bubble unfortunately has no native way of comparing two lists). In this event, I then load the data and update the custom state. This should theoretically work, but it returns an error message (see screenshot A).

Screenshot A

However, I have found a workaround that works (see screenshot B):

Screenshot B

I load my “Do a search” for episodes with the constraint that the unique ids are in the unique ids of the algolia search into a List Shifter Element as an original list. List Shifter has a “A ListShifterPro Initialized/Updated” event, which is only activated once if you enter the condition that the list must not be empty. In the workflow, I then load the List Shifter list into the Keeper element and trigger all other workflows.

This works smoothly, but seems unnecessarily complicated to me, as I now have to use two very similar plugins. It would be great if I could map all this with Listopia and there was some way to isolate the “update” triggers.

But maybe I’m just too stupid and you can think of a better solution :sweat_smile:

P.S. Of course, the ideal solution would be to have the option of sorting a list directly in Listopia using another (non-numerical) list (list 1 has episodes, list 2 has ids of the epsiodes in a different order → Listopia-Action to sort list 1 using list 2).

1 Like

Hi @florian.adomeit,

Your assistance in enhancing the plugin is greatly appreciated. :pray:

I’ll try to create a distinct event dedicated to the initial list loading, ensuring it’s triggered only for the main lists when the page loads.

I believe this action could be incorporated into the keeper. Essentially, the goal is to sort a list of items by their respective IDs, correct?

1 Like

Hi @NoCodeDataArtisan ,

That would be really great. Thanks a million!

Yes, exactly. But just to be on the safe side, here is the use case I have in mind.

I have a list of items that have the following unique IDs:

1638021336472x973485621350
1638021336483x573912745128
1638021336495x134568732912
1638021336506x987654321098

I would like to have this list sorted as follows:

1638021336483x573912745128
1638021336506x987654321098
1638021336495x134568732912
1638021336472x973485621350

This means I want to be able to sort the items in a list as I wish by simply entering a list of unique IDs in the correct order. If this works directly from the keeper without having to build complicated logic, that would be awesome!

1 Like