matrix-sdk 0.8.0
What's Changed
Bug Fixes
-
Add more invalid characters for room aliases.
-
Match the right status code in
Client::is_room_alias_available
. -
Fix a bug where room keys were considered to be downloaded before backups were
enabled. This bug only affects the
BackupDownloadStrategy::AfterDecryptionFailure
, where no attempt would be
made to download a room key, if a decryption failure with a given room key
would have been encountered before the backups were enabled.
Documentation
- Improve documentation of
Client::observe_events
.
Features
-
Add
create_room_alias
function. -
Client::cross_process_store_locks_holder_name
is used everywhere: -
StoreConfig::new()
now takes a
cross_process_store_locks_holder_name
argument. -
StoreConfig
no longer implementsDefault
. -
BaseClient::new()
has been removed. -
BaseClient::clone_with_in_memory_state_store()
now takes a
cross_process_store_locks_holder_name
argument. -
BaseClient
no longer implementsDefault
. -
EventCacheStoreLock::new()
no longer takes akey
argument. -
BuilderStoreConfig
no longer has
cross_process_store_locks_holder_name
field forSqlite
and
IndexedDb
. -
EncryptionSyncService
andNotification
are usingClient::cross_process_store_locks_holder_name
. -
Allow passing a custom
RequestConfig
to an upload request. -
Retry uploads if they've failed with transient errors.
-
Implement
EventHandlerContext
for tuples. -
Introduce a mechanism similar to
Client::add_event_handler
and
Client::add_room_event_handler
but with a reactive programming pattern. Add
Client::observe_events
andClient::observe_room_events
.
// Get an observer.
let observer =
client.observe_events::<SyncRoomMessageEvent, (Room, Vec<Action>)>();
// Subscribe to the observer.
let mut subscriber = observer.subscribe();
// Use the subscriber as a `Stream`.
let (message_event, (room, push_actions)) = subscriber.next().await.unwrap();
When calling observe_events
, one has to specify the type of event (in the
example, SyncRoomMessageEvent
) and a context (in the example, (Room, Vec<Action>)
, respectively for the room and the push actions).
-
Implement unwedging for media uploads.
-
Send state from state sync and not from timeline to widget (#4254)
-
Allow aborting media uploads.
-
Add
RoomPreviewInfo::num_active_members
. -
Use room directory search as another data source.
-
Check if the user is allowed to do a room mention before trying to send a call
notify event.
(#4271) -
Add
Client::cross_process_store_locks_holder_name()
. -
Add a
PreviouslyVerified
variant toVerificationLevel
indicating that the
identity is unverified and previously it was verified. -
New
UserIdentity::pin
method. -
New
ClientBuilder::with_decryption_trust_requirement
method. -
New
ClientBuilder::with_room_key_recipient_strategy
method -
New
Room.set_account_data
andRoom.set_account_data_raw
RoomAccountData
setters, analogous to the GlobalAccountData -
New
RequestConfig.max_concurrent_requests
which allows to limit the maximum
number of concurrent requests the internal HTTP client issues (all others have
to wait until the number drops below that threshold again) -
Implement proper redact handling in the widget driver. This allows the Rust
SDK widget driver to support widgets that rely on redacting.
Refactor
-
[breaking] Rename
DisplayName
toRoomDisplayName
. -
Improve
is_room_alias_format_valid
so it's more strict. -
Remove duplicated fields in media event contents.
-
Use
SendHandle
for media uploads too. -
Move
event_cache_store/
toevent_cache/store/
inmatrix-sdk-base
. -
Move
linked_chunk
frommatrix-sdk
tomatrix-sdk-common
. -
Move
Event
andGap
intomatrix_sdk_base::event_cache
. -
Move
formatted_caption_from
to the SDK, rename it. -
Tidy up and start commenting the widget code.
-
Get rid of
ProcessingContext
and inline it in its callers. -
Get rid of unused
limits
parameter when constructing aWidgetMachine
. -
Use a specialized mutex for locking access to the state store and
being_sent
. -
Renamed
VerificationLevel::PreviouslyVerified
to
VerificationLevel::VerificationViolation
. -
[breaking] Replace the
Notification
type from Ruma inSyncResponse
and
Client::register_notification_handler
by a custom one. -
[breaking] The ambiguity maps in
SyncResponse
are moved toJoinedRoom
andLeftRoom
. -
[breaking]
Room::can_user_redact
andMember::can_redact
are split
between*_redact_own
and*_redact_other
. -
[breaking]
AmbiguityCache
contains the room member's user ID. -
[breaking] Replace
impl MediaEventContent
with&impl MediaEventContent
in
Media::get_file
/Media::remove_file
/Media::get_thumbnail
/Media::remove_thumbnail
-
[breaking] A custom sliding sync proxy set with
ClientBuilder::sliding_sync_proxy
now takes precedence over a discovered
proxy. -
[breaking]
Client::get_profile
was moved toAccount
and renamed to
Account::fetch_user_profile_of
.Account::get_profile
was renamed to
Account::fetch_user_profile
. -
[breaking] The
HttpError::UnableToCloneRequest
error variant has been
removed because it was never used or generated by the SDK. -
[breaking] The
Error::InconsistentState
error variant has been removed
because it was never used or generated by the SDK. -
[breaking] The widget capabilities in the FFI now need two additional
flags:update_delayed_event
,send_delayed_event
. -
[breaking]
Room::event
now takes an optionalRequestConfig
to allow
for tweaking the network behavior. -
[breaking] The
instant
module was removed, use theruma::time
module
instead. -
[breaking] Add
ClientBuilder::sqlite_store_with_cache_path
to build a
client that stores caches in a different directory to state/crypto. -
[breaking] The
body
parameter inget_media_file
has been replaced with
afilename
parameter now that Ruma has afilename()
method.