···1111pub mod login_error;
1212pub mod middleware_errors;
1313pub mod profile_import_error;
1414+pub mod share_bluesky_error;
1415pub mod url_error;
1516pub mod view_event_error;
1617pub mod web_error;
···2425pub(crate) use login_error::LoginError;
2526pub(crate) use middleware_errors::WebSessionError;
2627pub(crate) use profile_import_error::ProfileImportError;
2828+pub(crate) use share_bluesky_error::ShareBlueskyError;
2729pub(crate) use url_error::UrlError;
2830pub(crate) use view_event_error::ViewEventError;
2931pub(crate) use web_error::WebError;
+17
src/http/errors/share_bluesky_error.rs
···11+use thiserror::Error;
22+33+/// Represents errors that can occur when sharing an RSVP to Bluesky.
44+#[derive(Debug, Error)]
55+pub(crate) enum ShareBlueskyError {
66+ /// Error when the AT Protocol server returns an error response.
77+ #[error("error-smokesignal-share-bluesky-1 Failed to create post: {message}")]
88+ PostCreationFailed { message: String },
99+1010+ /// Error when the event is not found.
1111+ #[error("error-smokesignal-share-bluesky-2 Event not found: {aturi}")]
1212+ EventNotFound { aturi: String },
1313+1414+ /// Error when the user does not have a "going" RSVP to the event.
1515+ #[error("error-smokesignal-share-bluesky-3 No going RSVP found for event")]
1616+ NoGoingRsvp,
1717+}
+8
src/http/errors/web_error.rs
···2020use super::lfg_error::LfgError;
2121use super::login_error::LoginError;
2222use super::middleware_errors::MiddlewareAuthError;
2323+use super::share_bluesky_error::ShareBlueskyError;
2324use super::url_error::UrlError;
24252526/// Represents all possible errors that can occur in the HTTP layer.
···158159 /// such as creating, viewing, or deactivating LFG records.
159160 #[error(transparent)]
160161 LfgError(#[from] LfgError),
162162+163163+ /// Share to Bluesky errors.
164164+ ///
165165+ /// This error occurs when there are issues with sharing RSVP to Bluesky,
166166+ /// such as post creation failures or event not found.
167167+ #[error(transparent)]
168168+ ShareBlueskyError(#[from] ShareBlueskyError),
161169}
162170163171/// Implementation of Axum's `IntoResponse` trait for WebError.
···16161717/// Cookie name for session storage.
1818/// Updated version to force re-authentication when cookie format changes.
1919-pub(crate) const AUTH_COOKIE_NAME: &str = "session20260118";
1919+pub(crate) const AUTH_COOKIE_NAME: &str = "session20260122";
20202121#[derive(Clone)]
2222pub(crate) enum Auth {
+1
src/http/mod.rs
···6262pub mod handle_search;
6363pub mod handle_set_language;
6464pub mod handle_settings;
6565+pub mod handle_share_rsvp_bluesky;
6566pub mod handle_unaccept_rsvp;
6667pub mod handle_unsubscribe;
6768pub mod handle_view_event;