pub mod callback;
pub mod channel;
pub mod client;
pub mod error;
pub(crate) mod presence;
pub(crate) mod protocol;
pub(crate) mod transport;
pub mod types;
pub use channel::{ChannelBuilder, RealtimeChannel};
pub use client::RealtimeClient;
pub use error::RealtimeError;
pub use types::{
BroadcastConfig, ChannelState, ColumnInfo, JoinConfig, JoinPayload,
PostgresChangePayload, PostgresChangesEvent, PostgresChangesFilter, PresenceConfig,
PresenceDiff, PresenceEntry, PresenceMeta, PresenceState, RealtimeConfig,
ReconnectConfig, SubscriptionStatus,
};
use supabase_client_core::SupabaseClient;
pub trait SupabaseClientRealtimeExt {
fn realtime(&self) -> Result<RealtimeClient, RealtimeError>;
}
impl SupabaseClientRealtimeExt for SupabaseClient {
fn realtime(&self) -> Result<RealtimeClient, RealtimeError> {
RealtimeClient::new(self.supabase_url(), self.api_key())
}
}
#[cfg(test)]
mod tests {
use super::*;
use supabase_client_core::config::SupabaseConfig;
#[test]
fn test_realtime_extension_trait() {
let config = SupabaseConfig::new("http://localhost:54321", "test-key");
let client = SupabaseClient::new(config).unwrap();
let realtime = client.realtime();
assert!(realtime.is_ok());
let realtime = realtime.unwrap();
assert!(realtime.is_connected() == false);
}
}