pub struct BaseClient { /* private fields */ }
Expand description

A no IO Client implementation.

This Client is a state machine that receives responses and events and accordingly updates its state.

Implementations§

source§

impl BaseClient

source

pub fn new() -> Self

Create a new default client.

source

pub fn with_store_config(config: StoreConfig) -> Self

Create a new client.

§Arguments
  • config - An optional session if the user already has one from a previous login call.
source

pub fn clone_with_in_memory_state_store(&self) -> Self

Clones the current base client to use the same crypto store but a different, in-memory store config, and resets transient state.

source

pub fn session_meta(&self) -> Option<&SessionMeta>

Get the session meta information.

If the client is currently logged in, this will return a SessionMeta object which contains the user ID and device ID. Otherwise it returns None.

source

pub fn get_rooms(&self) -> Vec<Room>

Get all the rooms this client knows about.

source

pub fn get_rooms_filtered(&self, filter: RoomStateFilter) -> Vec<Room>

Get all the rooms this client knows about, filtered by room state.

source

pub fn get_or_create_room( &self, room_id: &RoomId, room_state: RoomState ) -> Room

Lookup the Room for the given RoomId, or create one, if it didn’t exist yet in the store

source

pub fn get_stripped_rooms(&self) -> Vec<Room>

👎Deprecated: Use get_rooms_filtered with RoomStateFilter::INVITED instead.

Get all the rooms this client knows about.

source

pub fn store(&self) -> &DynStateStore

Get a reference to the store.

source

pub fn logged_in(&self) -> bool

Is the client logged in.

source

pub async fn set_session_meta(&self, session_meta: SessionMeta) -> Result<()>

Set the meta of the session.

If encryption is enabled, this also initializes or restores the OlmMachine.

§Arguments
  • session_meta - The meta of a session that the user already has from a previous login call.

This method panics if it is called twice.

source

pub async fn regenerate_olm(&self) -> Result<()>

Available on crate feature e2e-encryption only.

Recreate an OlmMachine from scratch.

In particular, this will clear all its caches.

source

pub async fn sync_token(&self) -> Option<String>

Get the current, if any, sync token of the client. This will be None if the client didn’t sync at least once.

source

pub async fn room_joined(&self, room_id: &RoomId) -> Result<Room>

User has joined a room.

Update the internal and cached state accordingly. Return the final Room.

source

pub async fn room_left(&self, room_id: &RoomId) -> Result<()>

User has left a room.

Update the internal and cached state accordingly.

source

pub fn sync_lock(&self) -> &Mutex<()>

Get access to the store’s sync lock.

source

pub async fn receive_sync_response( &self, response: Response ) -> Result<SyncResponse>

Receive a response from a sync call.

§Arguments
  • response - The response that we received after a successful sync.
source

pub async fn receive_all_members( &self, room_id: &RoomId, request: &Request, response: &Response ) -> Result<()>

Receive a get member events response and convert it to a deserialized MembersResponse

This client-server request must be made without filters to make sure all members are received. Otherwise, an error is returned.

§Arguments
  • room_id - The room id this response belongs to.

  • response - The raw response that was received from the server.

source

pub async fn receive_filter_upload( &self, filter_name: &str, response: &Response ) -> Result<()>

Receive a successful filter upload response, the filter id will be stored under the given name in the store.

The filter id can later be retrieved with the get_filter method.

§Arguments
  • filter_name - The name that should be used to persist the filter id in the store.

  • response - The successful filter upload response containing the filter id.

source

pub async fn get_filter(&self, filter_name: &str) -> StoreResult<Option<String>>

Get the filter id of a previously uploaded filter.

Note: A filter will first need to be uploaded and persisted using receive_filter_upload.

§Arguments
  • filter_name - The name of the filter that was previously used to persist the filter.
source

pub async fn share_room_key( &self, room_id: &RoomId ) -> Result<Vec<Arc<ToDeviceRequest>>>

Available on crate feature e2e-encryption only.

Get a to-device request that will share a room key with users in a room.

source

pub fn get_room(&self, room_id: &RoomId) -> Option<Room>

Get the room with the given room id.

§Arguments
  • room_id - The id of the room that should be fetched.
source

pub async fn olm_machine(&self) -> RwLockReadGuard<'_, Option<OlmMachine>>

Available on crate feature e2e-encryption only.

Get the olm machine.

source

pub async fn get_push_rules(&self, changes: &StateChanges) -> Result<Ruleset>

Get the push rules.

Gets the push rules from changes if they have been updated, otherwise get them from the store. As a fallback, uses Ruleset::server_default if the user is logged in.

source

pub async fn get_push_room_context( &self, room: &Room, room_info: &RoomInfo, changes: &StateChanges ) -> Result<Option<PushConditionRoomCtx>>

Get the push context for the given room.

Tries to get the data from changes or the up to date room_info. Loads the data from the store otherwise.

Returns None if some data couldn’t be found. This should only happen in brand new rooms, while we process its state.

source

pub async fn update_push_room_context( &self, push_rules: &mut PushConditionRoomCtx, user_id: &UserId, room_info: &RoomInfo, changes: &StateChanges )

Update the push context for the given room.

Updates the context data from changes or room_info.

source

pub fn subscribe_to_ignore_user_list_changes(&self) -> Subscriber<Vec<String>>

Returns a subscriber that publishes an event every time the ignore user list changes

source

pub fn roominfo_update_receiver(&self) -> Receiver<RoomInfoUpdate>

Returns a new receiver that gets events for all future room info updates.

Each event contains the room and a boolean whether this event should trigger a room list update.

source§

impl BaseClient

source

pub async fn process_sliding_sync_e2ee( &self, extensions: &Extensions ) -> Result<Vec<Raw<AnyToDeviceEvent>>>

Available on crate features experimental-sliding-sync and e2e-encryption only.

Processes the E2EE-related events from the Sliding Sync response.

In addition to writes to the crypto store, this may also write into the state store, in particular it may write latest-events to the state store.

source

pub async fn process_sliding_sync<PEP: PreviousEventsProvider>( &self, response: &Response, previous_events_provider: &PEP ) -> Result<SyncResponse>

Available on crate feature experimental-sliding-sync only.

Process a response from a sliding sync call.

§Arguments
  • response - The response that we received after a successful sliding sync.

Trait Implementations§

source§

impl Clone for BaseClient

source§

fn clone(&self) -> BaseClient

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BaseClient

Available on non-tarpaulin_include only.
source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for BaseClient

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CompatExt for T

§

fn compat(self) -> Compat<T>

Applies the [Compat] adapter by value. Read more
§

fn compat_ref(&self) -> Compat<&T>

Applies the [Compat] adapter by shared reference. Read more
§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the [Compat] adapter by mutable reference. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

impl<T> Identity for T
where T: ?Sized,

§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> AsyncTraitDeps for T

source§

impl<T> SendOutsideWasm for T
where T: Send,

source§

impl<T> SyncOutsideWasm for T
where T: Sync,