I am attempting to create a ‘Streak’, somewhat similar to the feature available on Snapchat. The end-goal I would like to achieve is to be able to count the number of consecutive entries (within a time frame of 24 hours between each)
I am struggling to create this and would appreciate some thought-starters as to how this would be done.
I’m sure there are many ways to go about this. Here’s one idea:
Assuming you have a list of entries held within another thing (let’s call it entry_grouping for simplicity) you can add a new custom field to entry_grouping: streak (number, default = 0)
With this you can do the following to update streak: Every time an entry is created/added to entry_grouping, run conditionals on your workflow actions prior to creating the new entry:
Less than 24 hours have elapsed since last entry was created in the current entry_grouping
When [Do a search for entry’s [parent entry_grouping = this entry’s entry_grouping] [sorted desc by date created] first item’s creation date [plus + ] 24 hours is [greater than < ] Current date/time then increase streak by 1:
(Note: query in pictures should read Search for entry’s, not entry_grouping)
More than 24 hours have elapsed since last entry was created in the current entry_grouping
When [Do a search for entry’s [parent entry_grouping = this entry’s entry_grouping] [sorted desc by date created] first item’s creation date [plus + ] 24 hours is [less than < ] Current date/time then reset streak to 0:
Update: I realized you probably don’t want the streak to go up by 1 every time a new entry is added. To address this, you can add a new field to entry_grouping: **streak_last_updated** (date) – with this, you can run an additional conditional to check if streak_last_updated + 24 hours > Current date/time. If true, then make updates to the streak count as well as the streak_last_updated date.
Update 2: I may not have given this enough thought (meaning the above may not work as expected) After playing around in Bubble and experimenting, it hit me: recurring API workflows may be your best option here instead of conditionals on their own. If I complete a working prototype matching Snapchat’s functionality I’ll share the link here.
I also would like this streak to be user-specific. Hence, I added an additional condition in the workflow to search for the latest entry posted by the current user.
I’ve given your initial solution a go, but it appears that the streak counter does not increase each time a new entry is posted.
Would appreciate it if you could share that recurring API workflow you mentioned.