Update SDK to 25.10.21 (#4642)

* update sdk

* fix normalized waveform

* added a comment on normalization

* running on MacOS-26

* Revert "running on MacOS-26"

This reverts commit 1c8ececf0b84200193eaa2ab205094215b168060.
This commit is contained in:
Mauro
2025-10-22 11:27:26 +02:00
committed by GitHub
parent c55c5a677b
commit 17c2dc96d0
12 changed files with 96 additions and 21 deletions
+1 -1
View File
@@ -9432,7 +9432,7 @@
repositoryURL = "https://github.com/element-hq/matrix-rust-components-swift"; repositoryURL = "https://github.com/element-hq/matrix-rust-components-swift";
requirement = { requirement = {
kind = exactVersion; kind = exactVersion;
version = "25.10.07-2"; version = 25.10.21;
}; };
}; };
701C7BEF8F70F7A83E852DCC /* XCRemoteSwiftPackageReference "GZIP" */ = { 701C7BEF8F70F7A83E852DCC /* XCRemoteSwiftPackageReference "GZIP" */ = {
@@ -149,8 +149,8 @@
"kind" : "remoteSourceControl", "kind" : "remoteSourceControl",
"location" : "https://github.com/element-hq/matrix-rust-components-swift", "location" : "https://github.com/element-hq/matrix-rust-components-swift",
"state" : { "state" : {
"revision" : "8dd60f0967f638f2fd119a315a268c253e20ef52", "revision" : "bb0db6dabeceb59daade5d84ca56c7e7db0c10c5",
"version" : "25.10.7-2" "version" : "25.10.21"
} }
}, },
{ {
@@ -17541,9 +17541,9 @@ class TimelineProxyMock: TimelineProxyProtocol, @unchecked Sendable {
} }
} }
} }
var sendVoiceMessageUrlAudioInfoWaveformRequestHandleClosure: ((URL, AudioInfo, [UInt16], @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineProxyError>)? var sendVoiceMessageUrlAudioInfoWaveformRequestHandleClosure: ((URL, AudioInfo, [Float], @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineProxyError>)?
func sendVoiceMessage(url: URL, audioInfo: AudioInfo, waveform: [UInt16], requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineProxyError> { func sendVoiceMessage(url: URL, audioInfo: AudioInfo, waveform: [Float], requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineProxyError> {
sendVoiceMessageUrlAudioInfoWaveformRequestHandleCallsCount += 1 sendVoiceMessageUrlAudioInfoWaveformRequestHandleCallsCount += 1
if let sendVoiceMessageUrlAudioInfoWaveformRequestHandleClosure = sendVoiceMessageUrlAudioInfoWaveformRequestHandleClosure { if let sendVoiceMessageUrlAudioInfoWaveformRequestHandleClosure = sendVoiceMessageUrlAudioInfoWaveformRequestHandleClosure {
return await sendVoiceMessageUrlAudioInfoWaveformRequestHandleClosure(url, audioInfo, waveform, requestHandle) return await sendVoiceMessageUrlAudioInfoWaveformRequestHandleClosure(url, audioInfo, waveform, requestHandle)
@@ -17054,6 +17054,81 @@ open class RoomSDKMock: MatrixRustSDK.Room, @unchecked Sendable {
} }
} }
//MARK: - subscribeToSendQueueUpdates
open var subscribeToSendQueueUpdatesListenerThrowableError: Error?
var subscribeToSendQueueUpdatesListenerUnderlyingCallsCount = 0
open var subscribeToSendQueueUpdatesListenerCallsCount: Int {
get {
if Thread.isMainThread {
return subscribeToSendQueueUpdatesListenerUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = subscribeToSendQueueUpdatesListenerUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
subscribeToSendQueueUpdatesListenerUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
subscribeToSendQueueUpdatesListenerUnderlyingCallsCount = newValue
}
}
}
}
open var subscribeToSendQueueUpdatesListenerCalled: Bool {
return subscribeToSendQueueUpdatesListenerCallsCount > 0
}
open var subscribeToSendQueueUpdatesListenerReceivedListener: SendQueueListener?
open var subscribeToSendQueueUpdatesListenerReceivedInvocations: [SendQueueListener] = []
var subscribeToSendQueueUpdatesListenerUnderlyingReturnValue: TaskHandle!
open var subscribeToSendQueueUpdatesListenerReturnValue: TaskHandle! {
get {
if Thread.isMainThread {
return subscribeToSendQueueUpdatesListenerUnderlyingReturnValue
} else {
var returnValue: TaskHandle? = nil
DispatchQueue.main.sync {
returnValue = subscribeToSendQueueUpdatesListenerUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
subscribeToSendQueueUpdatesListenerUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
subscribeToSendQueueUpdatesListenerUnderlyingReturnValue = newValue
}
}
}
}
open var subscribeToSendQueueUpdatesListenerClosure: ((SendQueueListener) async throws -> TaskHandle)?
open override func subscribeToSendQueueUpdates(listener: SendQueueListener) async throws -> TaskHandle {
if let error = subscribeToSendQueueUpdatesListenerThrowableError {
throw error
}
subscribeToSendQueueUpdatesListenerCallsCount += 1
subscribeToSendQueueUpdatesListenerReceivedListener = listener
DispatchQueue.main.async {
self.subscribeToSendQueueUpdatesListenerReceivedInvocations.append(listener)
}
if let subscribeToSendQueueUpdatesListenerClosure = subscribeToSendQueueUpdatesListenerClosure {
return try await subscribeToSendQueueUpdatesListenerClosure(listener)
} else {
return subscribeToSendQueueUpdatesListenerReturnValue
}
}
//MARK: - subscribeToTypingNotifications //MARK: - subscribeToTypingNotifications
var subscribeToTypingNotificationsListenerUnderlyingCallsCount = 0 var subscribeToTypingNotificationsListenerUnderlyingCallsCount = 0
@@ -25247,8 +25322,8 @@ open class TimelineSDKMock: MatrixRustSDK.Timeline, @unchecked Sendable {
open var sendVoiceMessageParamsAudioInfoWaveformCalled: Bool { open var sendVoiceMessageParamsAudioInfoWaveformCalled: Bool {
return sendVoiceMessageParamsAudioInfoWaveformCallsCount > 0 return sendVoiceMessageParamsAudioInfoWaveformCallsCount > 0
} }
open var sendVoiceMessageParamsAudioInfoWaveformReceivedArguments: (params: UploadParameters, audioInfo: AudioInfo, waveform: [UInt16])? open var sendVoiceMessageParamsAudioInfoWaveformReceivedArguments: (params: UploadParameters, audioInfo: AudioInfo, waveform: [Float])?
open var sendVoiceMessageParamsAudioInfoWaveformReceivedInvocations: [(params: UploadParameters, audioInfo: AudioInfo, waveform: [UInt16])] = [] open var sendVoiceMessageParamsAudioInfoWaveformReceivedInvocations: [(params: UploadParameters, audioInfo: AudioInfo, waveform: [Float])] = []
var sendVoiceMessageParamsAudioInfoWaveformUnderlyingReturnValue: SendAttachmentJoinHandle! var sendVoiceMessageParamsAudioInfoWaveformUnderlyingReturnValue: SendAttachmentJoinHandle!
open var sendVoiceMessageParamsAudioInfoWaveformReturnValue: SendAttachmentJoinHandle! { open var sendVoiceMessageParamsAudioInfoWaveformReturnValue: SendAttachmentJoinHandle! {
@@ -25274,9 +25349,9 @@ open class TimelineSDKMock: MatrixRustSDK.Timeline, @unchecked Sendable {
} }
} }
} }
open var sendVoiceMessageParamsAudioInfoWaveformClosure: ((UploadParameters, AudioInfo, [UInt16]) throws -> SendAttachmentJoinHandle)? open var sendVoiceMessageParamsAudioInfoWaveformClosure: ((UploadParameters, AudioInfo, [Float]) throws -> SendAttachmentJoinHandle)?
open override func sendVoiceMessage(params: UploadParameters, audioInfo: AudioInfo, waveform: [UInt16]) throws -> SendAttachmentJoinHandle { open override func sendVoiceMessage(params: UploadParameters, audioInfo: AudioInfo, waveform: [Float]) throws -> SendAttachmentJoinHandle {
if let error = sendVoiceMessageParamsAudioInfoWaveformThrowableError { if let error = sendVoiceMessageParamsAudioInfoWaveformThrowableError {
throw error throw error
} }
@@ -241,7 +241,7 @@ class MockTimelineController: TimelineControllerProtocol {
func sendVoiceMessage(url: URL, func sendVoiceMessage(url: URL,
audioInfo: MatrixRustSDK.AudioInfo, audioInfo: MatrixRustSDK.AudioInfo,
waveform: [UInt16], waveform: [Float],
requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineControllerError> { requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineControllerError> {
if let timelineProxy { if let timelineProxy {
return await timelineProxy.sendVoiceMessage(url: url, return await timelineProxy.sendVoiceMessage(url: url,
@@ -356,7 +356,7 @@ class TimelineController: TimelineControllerProtocol {
func sendVoiceMessage(url: URL, func sendVoiceMessage(url: URL,
audioInfo: MatrixRustSDK.AudioInfo, audioInfo: MatrixRustSDK.AudioInfo,
waveform: [UInt16], waveform: [Float],
requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineControllerError> { requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineControllerError> {
await activeTimeline.sendVoiceMessage(url: url, await activeTimeline.sendVoiceMessage(url: url,
audioInfo: audioInfo, audioInfo: audioInfo,
@@ -130,7 +130,7 @@ protocol TimelineControllerProtocol {
func sendVoiceMessage(url: URL, func sendVoiceMessage(url: URL,
audioInfo: AudioInfo, audioInfo: AudioInfo,
waveform: [UInt16], waveform: [Float],
requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineControllerError> requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineControllerError>
// MARK: - Poll // MARK: - Poll
@@ -359,7 +359,7 @@ final class TimelineProxy: TimelineProxyProtocol {
func sendVoiceMessage(url: URL, func sendVoiceMessage(url: URL,
audioInfo: AudioInfo, audioInfo: AudioInfo,
waveform: [UInt16], waveform: [Float],
requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineProxyError> { requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineProxyError> {
MXLog.info("Sending voice message") MXLog.info("Sending voice message")
@@ -109,7 +109,7 @@ protocol TimelineProxyProtocol {
func sendVoiceMessage(url: URL, func sendVoiceMessage(url: URL,
audioInfo: AudioInfo, audioInfo: AudioInfo,
waveform: [UInt16], waveform: [Float],
requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineProxyError> requestHandle: @MainActor (SendAttachmentJoinHandleProtocol) -> Void) async -> Result<Void, TimelineProxyError>
func sendReadReceipt(for eventID: String, type: ReceiptType) async -> Result<Void, TimelineProxyError> func sendReadReceipt(for eventID: String, type: ReceiptType) async -> Result<Void, TimelineProxyError>
@@ -127,17 +127,17 @@ class VoiceMessageRecorder: VoiceMessageRecorderProtocol {
await previewAudioPlayerState?.updateState(progress: progress) await previewAudioPlayerState?.updateState(progress: progress)
} }
func buildRecordingWaveform() async -> Result<[UInt16], VoiceMessageRecorderError> { func buildRecordingWaveform() async -> Result<[Float], VoiceMessageRecorderError> {
guard let url = audioRecorder.audioFileURL else { guard let url = audioRecorder.audioFileURL else {
return .failure(.missingRecordingFile) return .failure(.missingRecordingFile)
} }
// build the waveform // build the waveform
var waveformData: [UInt16] = [] var waveformData: [Float] = []
let analyzer = WaveformAnalyzer() let analyzer = WaveformAnalyzer()
do { do {
let samples = try await analyzer.samples(fromAudioAt: url, count: 100) let samples = try await analyzer.samples(fromAudioAt: url, count: 100)
// linearly normalized to [0, 1] (1 -> -50 dB) // linearly normalized to [0, 1] (1 -> -50 dB)
waveformData = samples.map { UInt16(max(0, (1 - $0) * 1024)) } waveformData = samples.map { max(0, 1 - $0) }
} catch { } catch {
MXLog.error("Waveform analysis failed. \(error)") MXLog.error("Waveform analysis failed. \(error)")
return .failure(.waveformAnalysisError) return .failure(.waveformAnalysisError)
+3 -3
View File
@@ -1,13 +1,13 @@
{ {
"originHash" : "8fc5521127eb479d8784a8d77e682b092e09920246eaefaccc1b1151c08e0f3e", "originHash" : "43d8d4409954f06d1f1b8ea37d305f2db6b1e8bd1b8a0e108e9bae075d7a601c",
"pins" : [ "pins" : [
{ {
"identity" : "swift-argument-parser", "identity" : "swift-argument-parser",
"kind" : "remoteSourceControl", "kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-argument-parser", "location" : "https://github.com/apple/swift-argument-parser",
"state" : { "state" : {
"revision" : "309a47b2b1d9b5e991f36961c983ecec72275be3", "revision" : "cdd0ef3755280949551dc26dee5de9ddeda89f54",
"version" : "1.6.1" "version" : "1.6.2"
} }
}, },
{ {
+1 -1
View File
@@ -71,7 +71,7 @@ packages:
# Element/Matrix dependencies # Element/Matrix dependencies
MatrixRustSDK: MatrixRustSDK:
url: https://github.com/element-hq/matrix-rust-components-swift url: https://github.com/element-hq/matrix-rust-components-swift
exactVersion: 25.10.07-2 exactVersion: 25.10.21
# path: ../matrix-rust-sdk # path: ../matrix-rust-sdk
Compound: Compound:
path: compound-ios path: compound-ios