listing
Informational and booking page for listings
Listing Page Overview
This is an informational page for a Listing
. Users can use this page to view listing details or Reviews
, book a trip for this property, or message the Listing owner
. Both the AirDate/TimePicker Booking Start
and AirDate/TimePicker Booking End
inputs are given a list of dates - Blocked dates
- which represent the dates that a user cannot select in the inputs. This list of dates is comprised of the Dates (list)
field for all of that listing’s Blocked Dates
.
Key Workflows
Button Confirm My Booking is clicked
After a user is shown a visual confirmation of the booking details, they officially create the booking through this workflow
Creates a
Booking
instancePopulates the
Price
andFee
through calculations run in several “hidden” groups (please see the Database section above for calculation details)The
Start
andEnd
dates are adjusted to be the very beginning of the selected days
The
temp_booking
state onPopup Confirm Booking
is used to delete this booking if the payment failsA Stripe payment is attempted, using an API connector call
If the payment succeeds, we populate the booking with the
Charge ID
andTotal amount charged (Stripe)
[this is in US cents], which are both returned from Stripe, and trigger thepayment_success
workflowIf the payment fails - if an error is thrown during the attempt - the
payment_failure
workflow is triggered
Button Flag Listing is clicked
Allows the user to flag (i.e., report) a listing with an optional reasons
Creates a
Flag
viewable to app admins
Button Send Message is clicked
Sends a message from the currently logged in user to the listing’s owner. This creates a
Message
and aThread
if no thread already exists between the two usersEmails sent to the message recipient includes a link that directly accesses the relevant thread on the dashboard
Button Change CC is clicked
Allows the user to update their credit card information before creating a booking
Uses Bubble’s built-in “Collect the user’s cc information” action
payment_failure [Custom workflow]
Triggered only if an error occurs during the payment attempt from the
Confirm My Booking
workflowDeletes the previously created
Booking
payment_success [Custom workflow]
Triggered from a successful payment attempt from the
Confirm My Booking
workflowCreates a new
Thread
between theBooked User
and theListing Owner
if one does not already existCreates a new
Blocked Date
for the booking, which represents the time range of the booking and allows the app to prevent duplicate bookings on these daysCreates a new
Transaction
, pulling in data from theBooking
instanceSchedules an API workflow for after the booking
End date
to send an email, which reminds the user to leave a review for the listing (this API workflow ID is saved so that it can be cancelled if the booking is cancelled at a later time)Sends a confirmation email to both the
Booked User
andListing Owner
and shows a confirmation pop-up to the user
Button Confirm My Booking has an error running a workflow
Triggered when an error occurs during the “Charge a user using saved CC” action from the Button
Confirm My Booking is clicked
workflowIt is expected that an error will occur if the user’s payment method is invalid or if there is something disrupting the connection between Stripe and the Bubble app
Signifies an unsuccessful payment and triggers the
payment_failure
custom workflow
Key Elements
Group Invalid Dates
This group is visible when any of a set of conditions that represent an invalid booking
Start
and/orEnd
date evaluate to trueWhen this group is visible (if the user-selected start and end values are not valid), then the
Book
button is disabledGroup Invalid Dates
is visible under these conditions:Either the start or end value is empty
The start value is greater than the end value
The start value is the same as the end value
The range (start value < - range -> end value) overlaps with the range of any of the
Blocked Dates
for that listing
RepeatingGroup Reviews
Displays every
Review
created for that page’s listing
Last updated