63 lines
2.6 KiB
Rust
63 lines
2.6 KiB
Rust
use super::{callbacks::*, handlers::*, types::*};
|
|
use crate::{case, handle_error::with_error_handler, BotHandler, Command, DialogueRootState};
|
|
use teloxide::{dptree, prelude::*, types::Update};
|
|
|
|
// Create the dialogue handler tree for new listing wizard
|
|
pub fn new_listing_handler() -> BotHandler {
|
|
dptree::entry()
|
|
.branch(
|
|
Update::filter_message()
|
|
.branch(
|
|
dptree::entry()
|
|
.filter_command::<Command>()
|
|
.chain(case![Command::NewListing])
|
|
.endpoint(with_error_handler(handle_new_listing_command)),
|
|
)
|
|
.branch(
|
|
case![DialogueRootState::NewListing(
|
|
NewListingState::AwaitingDraftField { field, draft }
|
|
)]
|
|
.endpoint(with_error_handler(handle_awaiting_draft_field_input)),
|
|
)
|
|
.branch(
|
|
case![DialogueRootState::NewListing(
|
|
NewListingState::EditingDraftField { field, draft }
|
|
)]
|
|
.endpoint(with_error_handler(handle_editing_field_input)),
|
|
),
|
|
)
|
|
.branch(
|
|
Update::filter_callback_query()
|
|
.branch(
|
|
case![DialogueRootState::NewListing(
|
|
NewListingState::SelectingListingType
|
|
)]
|
|
.endpoint(with_error_handler(handle_selecting_listing_type_callback)),
|
|
)
|
|
.branch(
|
|
case![DialogueRootState::NewListing(
|
|
NewListingState::AwaitingDraftField { field, draft }
|
|
)]
|
|
.endpoint(with_error_handler(handle_awaiting_draft_field_callback)),
|
|
)
|
|
.branch(
|
|
case![DialogueRootState::NewListing(
|
|
NewListingState::ViewingDraft(draft)
|
|
)]
|
|
.endpoint(with_error_handler(handle_viewing_draft_callback)),
|
|
)
|
|
.branch(
|
|
case![DialogueRootState::NewListing(
|
|
NewListingState::EditingDraft(draft)
|
|
)]
|
|
.endpoint(with_error_handler(handle_editing_draft_callback)),
|
|
)
|
|
.branch(
|
|
case![DialogueRootState::NewListing(
|
|
NewListingState::EditingDraftField { field, draft }
|
|
)]
|
|
.endpoint(with_error_handler(handle_editing_draft_field_callback)),
|
|
),
|
|
)
|
|
}
|