From dfd7a1e7ad140e3c3e186301a20a53a6628f1bb8 Mon Sep 17 00:00:00 2001 From: Mauro Romito Date: Fri, 17 May 2024 18:09:04 +0200 Subject: [PATCH] Bump to version v1.0.1 (matrix-rust-sdk/main 4cc67e90023f1114d9c7feed7fca2234a7a2f196) --- Package.swift | 4 +- Sources/MatrixRustSDK/matrix_sdk.swift | 85 +++++++++ Sources/MatrixRustSDK/matrix_sdk_ffi.swift | 189 ++++++++++++--------- Sources/MatrixRustSDK/matrix_sdk_ui.swift | 75 -------- 4 files changed, 199 insertions(+), 154 deletions(-) diff --git a/Package.swift b/Package.swift index 767188b..a3d3f57 100644 --- a/Package.swift +++ b/Package.swift @@ -1,8 +1,8 @@ // swift-tools-version:5.9 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription -let checksum = "15ea5c6d89af57e9cd304a01e2f8ce5e2a30d4b573cf6ff5aa8259d4452a467d" -let version = "v1.0.0" +let checksum = "ade40f5f1512366a82bd00799da99684ce8a1d909ef1e0a861187973d5dcedd6" +let version = "v1.0.1" let url = "https://github.com/element-hq/matrix-rust-components-swift/releases/download/\(version)/MatrixSDKFFI.xcframework.zip" let package = Package( name: "MatrixRustSDK", diff --git a/Sources/MatrixRustSDK/matrix_sdk.swift b/Sources/MatrixRustSDK/matrix_sdk.swift index a904319..bc5c9cf 100644 --- a/Sources/MatrixRustSDK/matrix_sdk.swift +++ b/Sources/MatrixRustSDK/matrix_sdk.swift @@ -704,6 +704,91 @@ extension BackupDownloadStrategy: Equatable, Hashable {} +// Note that we don't yet support `indirect` for enums. +// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion. +/** + * Current state of a [`Paginator`]. + */ + +public enum PaginatorState { + + /** + * The initial state of the paginator. + */ + case initial + /** + * The paginator is fetching the target initial event. + */ + case fetchingTargetEvent + /** + * The target initial event could be found, zero or more paginations have + * happened since then, and the paginator is at rest now. + */ + case idle + /** + * The paginator is… paginating one direction or another. + */ + case paginating +} + + +public struct FfiConverterTypePaginatorState: FfiConverterRustBuffer { + typealias SwiftType = PaginatorState + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> PaginatorState { + let variant: Int32 = try readInt(&buf) + switch variant { + + case 1: return .initial + + case 2: return .fetchingTargetEvent + + case 3: return .idle + + case 4: return .paginating + + default: throw UniffiInternalError.unexpectedEnumCase + } + } + + public static func write(_ value: PaginatorState, into buf: inout [UInt8]) { + switch value { + + + case .initial: + writeInt(&buf, Int32(1)) + + + case .fetchingTargetEvent: + writeInt(&buf, Int32(2)) + + + case .idle: + writeInt(&buf, Int32(3)) + + + case .paginating: + writeInt(&buf, Int32(4)) + + } + } +} + + +public func FfiConverterTypePaginatorState_lift(_ buf: RustBuffer) throws -> PaginatorState { + return try FfiConverterTypePaginatorState.lift(buf) +} + +public func FfiConverterTypePaginatorState_lower(_ value: PaginatorState) -> RustBuffer { + return FfiConverterTypePaginatorState.lower(value) +} + + + +extension PaginatorState: Equatable, Hashable {} + + + // Note that we don't yet support `indirect` for enums. // See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion. /** diff --git a/Sources/MatrixRustSDK/matrix_sdk_ffi.swift b/Sources/MatrixRustSDK/matrix_sdk_ffi.swift index 7495e3c..840df8d 100644 --- a/Sources/MatrixRustSDK/matrix_sdk_ffi.swift +++ b/Sources/MatrixRustSDK/matrix_sdk_ffi.swift @@ -852,9 +852,18 @@ public protocol ClientProtocol : AnyObject { func getRecentlyVisitedRooms() async throws -> [String] /** - * Get the preview of a room, to interact with it. + * Given a room alias, get the preview of a room, to interact with it. */ - func getRoomPreview(roomIdOrAlias: String) async throws -> RoomPreview + func getRoomPreviewFromRoomAlias(roomAlias: String) async throws -> RoomPreview + + /** + * Given a room id, get the preview of a room, to interact with it. + * + * The list of `via_servers` must be a list of servers that know + * about the room and can resolve it, and that may appear as a `via` + * parameter in e.g. a permalink URL. This list can be empty. + */ + func getRoomPreviewFromRoomId(roomId: String, viaServers: [String]) async throws -> RoomPreview func getSessionVerificationController() async throws -> SessionVerificationController @@ -1234,15 +1243,39 @@ open func getRecentlyVisitedRooms()async throws -> [String] { } /** - * Get the preview of a room, to interact with it. + * Given a room alias, get the preview of a room, to interact with it. */ -open func getRoomPreview(roomIdOrAlias: String)async throws -> RoomPreview { +open func getRoomPreviewFromRoomAlias(roomAlias: String)async throws -> RoomPreview { return try await uniffiRustCallAsync( rustFutureFunc: { - uniffi_matrix_sdk_ffi_fn_method_client_get_room_preview( + uniffi_matrix_sdk_ffi_fn_method_client_get_room_preview_from_room_alias( self.uniffiClonePointer(), - FfiConverterString.lower(roomIdOrAlias) + FfiConverterString.lower(roomAlias) + ) + }, + pollFunc: ffi_matrix_sdk_ffi_rust_future_poll_rust_buffer, + completeFunc: ffi_matrix_sdk_ffi_rust_future_complete_rust_buffer, + freeFunc: ffi_matrix_sdk_ffi_rust_future_free_rust_buffer, + liftFunc: FfiConverterTypeRoomPreview.lift, + errorHandler: FfiConverterTypeClientError.lift + ) +} + + /** + * Given a room id, get the preview of a room, to interact with it. + * + * The list of `via_servers` must be a list of servers that know + * about the room and can resolve it, and that may appear as a `via` + * parameter in e.g. a permalink URL. This list can be empty. + */ +open func getRoomPreviewFromRoomId(roomId: String, viaServers: [String])async throws -> RoomPreview { + return + try await uniffiRustCallAsync( + rustFutureFunc: { + uniffi_matrix_sdk_ffi_fn_method_client_get_room_preview_from_room_id( + self.uniffiClonePointer(), + FfiConverterString.lower(roomId),FfiConverterSequenceString.lower(viaServers) ) }, pollFunc: ffi_matrix_sdk_ffi_rust_future_poll_rust_buffer, @@ -2068,8 +2101,20 @@ public protocol EncryptionProtocol : AnyObject { func backupStateListener(listener: BackupStateListener) -> TaskHandle + /** + * Get the public curve25519 key of our own device in base64. This is + * usually what is called the identity key of the device. + */ + func curve25519Key() async -> String? + func disableRecovery() async throws + /** + * Get the public ed25519 key of our own device. This is usually what is + * called the fingerprint of the device. + */ + func ed25519Key() async -> String? + func enableBackups() async throws func enableRecovery(waitForBackupsToUpload: Bool, progressListener: EnableRecoveryProgressListener) async throws -> String @@ -2184,6 +2229,28 @@ open func backupStateListener(listener: BackupStateListener) -> TaskHandle { }) } + /** + * Get the public curve25519 key of our own device in base64. This is + * usually what is called the identity key of the device. + */ +open func curve25519Key()async -> String? { + return + try! await uniffiRustCallAsync( + rustFutureFunc: { + uniffi_matrix_sdk_ffi_fn_method_encryption_curve25519_key( + self.uniffiClonePointer() + + ) + }, + pollFunc: ffi_matrix_sdk_ffi_rust_future_poll_rust_buffer, + completeFunc: ffi_matrix_sdk_ffi_rust_future_complete_rust_buffer, + freeFunc: ffi_matrix_sdk_ffi_rust_future_free_rust_buffer, + liftFunc: FfiConverterOptionString.lift, + errorHandler: nil + + ) +} + open func disableRecovery()async throws { return try await uniffiRustCallAsync( @@ -2201,6 +2268,28 @@ open func disableRecovery()async throws { ) } + /** + * Get the public ed25519 key of our own device. This is usually what is + * called the fingerprint of the device. + */ +open func ed25519Key()async -> String? { + return + try! await uniffiRustCallAsync( + rustFutureFunc: { + uniffi_matrix_sdk_ffi_fn_method_encryption_ed25519_key( + self.uniffiClonePointer() + + ) + }, + pollFunc: ffi_matrix_sdk_ffi_rust_future_poll_rust_buffer, + completeFunc: ffi_matrix_sdk_ffi_rust_future_complete_rust_buffer, + freeFunc: ffi_matrix_sdk_ffi_rust_future_free_rust_buffer, + liftFunc: FfiConverterOptionString.lift, + errorHandler: nil + + ) +} + open func enableBackups()async throws { return try await uniffiRustCallAsync( @@ -16524,70 +16613,6 @@ extension OtherState: Equatable, Hashable {} -// Note that we don't yet support `indirect` for enums. -// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion. - -public enum PaginationOptions { - - case simpleRequest(eventLimit: UInt16, waitForToken: Bool - ) - case untilNumItems(eventLimit: UInt16, items: UInt16, waitForToken: Bool - ) -} - - -public struct FfiConverterTypePaginationOptions: FfiConverterRustBuffer { - typealias SwiftType = PaginationOptions - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> PaginationOptions { - let variant: Int32 = try readInt(&buf) - switch variant { - - case 1: return .simpleRequest(eventLimit: try FfiConverterUInt16.read(from: &buf), waitForToken: try FfiConverterBool.read(from: &buf) - ) - - case 2: return .untilNumItems(eventLimit: try FfiConverterUInt16.read(from: &buf), items: try FfiConverterUInt16.read(from: &buf), waitForToken: try FfiConverterBool.read(from: &buf) - ) - - default: throw UniffiInternalError.unexpectedEnumCase - } - } - - public static func write(_ value: PaginationOptions, into buf: inout [UInt8]) { - switch value { - - - case let .simpleRequest(eventLimit,waitForToken): - writeInt(&buf, Int32(1)) - FfiConverterUInt16.write(eventLimit, into: &buf) - FfiConverterBool.write(waitForToken, into: &buf) - - - case let .untilNumItems(eventLimit,items,waitForToken): - writeInt(&buf, Int32(2)) - FfiConverterUInt16.write(eventLimit, into: &buf) - FfiConverterUInt16.write(items, into: &buf) - FfiConverterBool.write(waitForToken, into: &buf) - - } - } -} - - -public func FfiConverterTypePaginationOptions_lift(_ buf: RustBuffer) throws -> PaginationOptions { - return try FfiConverterTypePaginationOptions.lift(buf) -} - -public func FfiConverterTypePaginationOptions_lower(_ value: PaginationOptions) -> RustBuffer { - return FfiConverterTypePaginationOptions.lower(value) -} - - - -extension PaginationOptions: Equatable, Hashable {} - - - public enum ParseError { @@ -19272,7 +19297,7 @@ public enum TimelineItemContentKind { case callInvite case unableToDecrypt(msg: EncryptedMessage ) - case roomMembership(userId: String, change: MembershipChange? + case roomMembership(userId: String, userDisplayName: String?, change: MembershipChange? ) case profileChange(displayName: String?, prevDisplayName: String?, avatarUrl: String?, prevAvatarUrl: String? ) @@ -19307,7 +19332,7 @@ public struct FfiConverterTypeTimelineItemContentKind: FfiConverterRustBuffer { case 6: return .unableToDecrypt(msg: try FfiConverterTypeEncryptedMessage.read(from: &buf) ) - case 7: return .roomMembership(userId: try FfiConverterString.read(from: &buf), change: try FfiConverterOptionTypeMembershipChange.read(from: &buf) + case 7: return .roomMembership(userId: try FfiConverterString.read(from: &buf), userDisplayName: try FfiConverterOptionString.read(from: &buf), change: try FfiConverterOptionTypeMembershipChange.read(from: &buf) ) case 8: return .profileChange(displayName: try FfiConverterOptionString.read(from: &buf), prevDisplayName: try FfiConverterOptionString.read(from: &buf), avatarUrl: try FfiConverterOptionString.read(from: &buf), prevAvatarUrl: try FfiConverterOptionString.read(from: &buf) @@ -19365,9 +19390,10 @@ public struct FfiConverterTypeTimelineItemContentKind: FfiConverterRustBuffer { FfiConverterTypeEncryptedMessage.write(msg, into: &buf) - case let .roomMembership(userId,change): + case let .roomMembership(userId,userDisplayName,change): writeInt(&buf, Int32(7)) FfiConverterString.write(userId, into: &buf) + FfiConverterOptionString.write(userDisplayName, into: &buf) FfiConverterOptionTypeMembershipChange.write(change, into: &buf) @@ -20273,7 +20299,7 @@ extension FfiConverterCallbackInterfaceNotificationSettingsDelegate : FfiConvert public protocol PaginationStatusListener : AnyObject { - func onUpdate(status: PaginationStatus) + func onUpdate(status: PaginatorState) } @@ -20297,7 +20323,7 @@ fileprivate struct UniffiCallbackInterfacePaginationStatusListener { throw UniffiInternalError.unexpectedStaleHandle } return uniffiObj.onUpdate( - status: try FfiConverterTypePaginationStatus_lift(status) + status: try FfiConverterTypePaginatorState_lift(status) ) } @@ -23842,7 +23868,10 @@ private var initializationResult: InitializationResult { if (uniffi_matrix_sdk_ffi_checksum_method_client_get_recently_visited_rooms() != 22399) { return InitializationResult.apiChecksumMismatch } - if (uniffi_matrix_sdk_ffi_checksum_method_client_get_room_preview() != 15212) { + if (uniffi_matrix_sdk_ffi_checksum_method_client_get_room_preview_from_room_alias() != 10849) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_matrix_sdk_ffi_checksum_method_client_get_room_preview_from_room_id() != 6925) { return InitializationResult.apiChecksumMismatch } if (uniffi_matrix_sdk_ffi_checksum_method_client_get_session_verification_controller() != 55934) { @@ -23992,9 +24021,15 @@ private var initializationResult: InitializationResult { if (uniffi_matrix_sdk_ffi_checksum_method_encryption_backup_state_listener() != 14246) { return InitializationResult.apiChecksumMismatch } + if (uniffi_matrix_sdk_ffi_checksum_method_encryption_curve25519_key() != 58425) { + return InitializationResult.apiChecksumMismatch + } if (uniffi_matrix_sdk_ffi_checksum_method_encryption_disable_recovery() != 18699) { return InitializationResult.apiChecksumMismatch } + if (uniffi_matrix_sdk_ffi_checksum_method_encryption_ed25519_key() != 11864) { + return InitializationResult.apiChecksumMismatch + } if (uniffi_matrix_sdk_ffi_checksum_method_encryption_enable_backups() != 55446) { return InitializationResult.apiChecksumMismatch } @@ -24736,7 +24771,7 @@ private var initializationResult: InitializationResult { if (uniffi_matrix_sdk_ffi_checksum_method_notificationsettingsdelegate_settings_did_change() != 51708) { return InitializationResult.apiChecksumMismatch } - if (uniffi_matrix_sdk_ffi_checksum_method_paginationstatuslistener_on_update() != 21763) { + if (uniffi_matrix_sdk_ffi_checksum_method_paginationstatuslistener_on_update() != 58051) { return InitializationResult.apiChecksumMismatch } if (uniffi_matrix_sdk_ffi_checksum_method_progresswatcher_transmission_progress() != 41133) { diff --git a/Sources/MatrixRustSDK/matrix_sdk_ui.swift b/Sources/MatrixRustSDK/matrix_sdk_ui.swift index 62c8c69..fa31ff9 100644 --- a/Sources/MatrixRustSDK/matrix_sdk_ui.swift +++ b/Sources/MatrixRustSDK/matrix_sdk_ui.swift @@ -493,81 +493,6 @@ extension EventItemOrigin: Equatable, Hashable {} -// Note that we don't yet support `indirect` for enums. -// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion. -/** - * The status of a pagination. - */ - -public enum PaginationStatus { - - /** - * No pagination happening. - */ - case idle - /** - * Timeline is paginating for this end. - */ - case paginating - /** - * An end of the timeline (front or back) has been reached by this - * pagination. - */ - case timelineEndReached -} - - -public struct FfiConverterTypePaginationStatus: FfiConverterRustBuffer { - typealias SwiftType = PaginationStatus - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> PaginationStatus { - let variant: Int32 = try readInt(&buf) - switch variant { - - case 1: return .idle - - case 2: return .paginating - - case 3: return .timelineEndReached - - default: throw UniffiInternalError.unexpectedEnumCase - } - } - - public static func write(_ value: PaginationStatus, into buf: inout [UInt8]) { - switch value { - - - case .idle: - writeInt(&buf, Int32(1)) - - - case .paginating: - writeInt(&buf, Int32(2)) - - - case .timelineEndReached: - writeInt(&buf, Int32(3)) - - } - } -} - - -public func FfiConverterTypePaginationStatus_lift(_ buf: RustBuffer) throws -> PaginationStatus { - return try FfiConverterTypePaginationStatus.lift(buf) -} - -public func FfiConverterTypePaginationStatus_lower(_ value: PaginationStatus) -> RustBuffer { - return FfiConverterTypePaginationStatus.lower(value) -} - - - -extension PaginationStatus: Equatable, Hashable {} - - - private enum InitializationResult { case ok case contractVersionMismatch