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 instance

    • Populates the Price and Fee through calculations run in several “hidden” groups (please see the Database section above for calculation details)

    • The Start and End dates are adjusted to be the very beginning of the selected days

  • The temp_booking state on Popup Confirm Booking is used to delete this booking if the payment fails

  • A Stripe payment is attempted, using an API connector call

  • If the payment succeeds, we populate the booking with the Charge ID and Total amount charged (Stripe) [this is in US cents], which are both returned from Stripe, and trigger the payment_success workflow

  • If 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 a Thread if no thread already exists between the two users

  • Emails 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 workflow

  • Deletes the previously created Booking

payment_success [Custom workflow]

  • Triggered from a successful payment attempt from the Confirm My Booking workflow

  • Creates a new Thread between the Booked User and the Listing Owner if one does not already exist

  • Creates 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 days

  • Creates a new Transaction, pulling in data from the Booking instance

  • Schedules 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 and Listing 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 workflow

  • It 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/or End date evaluate to true

  • When this group is visible (if the user-selected start and end values are not valid), then the Book button is disabled

  • Group 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