mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 19:44:05 +00:00
Bump SDK version and fix breaking changes. (#610)
This commit is contained in:
@@ -95,8 +95,8 @@
|
|||||||
"kind" : "remoteSourceControl",
|
"kind" : "remoteSourceControl",
|
||||||
"location" : "https://github.com/matrix-org/matrix-rust-components-swift",
|
"location" : "https://github.com/matrix-org/matrix-rust-components-swift",
|
||||||
"state" : {
|
"state" : {
|
||||||
"revision" : "986c400f8d4d0f9d467370f98d70b6b742e90e18",
|
"revision" : "cceadb7fb59518e642010901b8f0cd87946221f3",
|
||||||
"version" : "1.0.38-alpha"
|
"version" : "1.0.40-alpha"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ struct MockRoomProxy: RoomProxyProtocol {
|
|||||||
|
|
||||||
func startLiveEventListener() { }
|
func startLiveEventListener() { }
|
||||||
|
|
||||||
func addTimelineListener(listener: TimelineListener) -> Result<Void, RoomProxyError> {
|
func addTimelineListener(listener: TimelineListener) -> Result<[TimelineItem], RoomProxyError> {
|
||||||
.failure(.failedAddingTimelineListener)
|
.failure(.failedAddingTimelineListener)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -136,16 +136,16 @@ class RoomProxy: RoomProxyProtocol {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func addTimelineListener(listener: TimelineListener) -> Result<Void, RoomProxyError> {
|
func addTimelineListener(listener: TimelineListener) -> Result<[TimelineItem], RoomProxyError> {
|
||||||
let settings = RoomSubscription(requiredState: [RequiredState(key: "m.room.topic", value: ""),
|
let settings = RoomSubscription(requiredState: [RequiredState(key: "m.room.topic", value: ""),
|
||||||
RequiredState(key: "m.room.canonical_alias", value: "")],
|
RequiredState(key: "m.room.canonical_alias", value: "")],
|
||||||
timelineLimit: nil)
|
timelineLimit: nil)
|
||||||
if let token = slidingSyncRoom.subscribeAndAddTimelineListener(listener: listener, settings: settings) {
|
if let result = try? slidingSyncRoom.subscribeAndAddTimelineListener(listener: listener, settings: settings) {
|
||||||
timelineObservationToken = token
|
timelineObservationToken = result.taskHandle
|
||||||
Task {
|
Task {
|
||||||
await fetchMembers()
|
await fetchMembers()
|
||||||
}
|
}
|
||||||
return .success(())
|
return .success(result.items)
|
||||||
} else {
|
} else {
|
||||||
return .failure(.failedAddingTimelineListener)
|
return .failure(.failedAddingTimelineListener)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ protocol RoomProxyProtocol {
|
|||||||
|
|
||||||
func loadDisplayNameForUserId(_ userId: String) async -> Result<String?, RoomProxyError>
|
func loadDisplayNameForUserId(_ userId: String) async -> Result<String?, RoomProxyError>
|
||||||
|
|
||||||
func addTimelineListener(listener: TimelineListener) -> Result<Void, RoomProxyError>
|
func addTimelineListener(listener: TimelineListener) -> Result<[TimelineItem], RoomProxyError>
|
||||||
|
|
||||||
func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result<Void, RoomProxyError>
|
func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result<Void, RoomProxyError>
|
||||||
|
|
||||||
|
|||||||
@@ -54,11 +54,11 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol {
|
|||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|
||||||
switch await roomProxy.addTimelineListener(listener: roomTimelineListener) {
|
switch await roomProxy.addTimelineListener(listener: roomTimelineListener) {
|
||||||
|
case .success(let items):
|
||||||
|
itemProxies = items.map(TimelineItemProxy.init)
|
||||||
case .failure:
|
case .failure:
|
||||||
let roomID = await roomProxy.id
|
let roomID = await roomProxy.id
|
||||||
MXLog.error("Failed adding timeline listener on room with identifier: \(roomID)")
|
MXLog.error("Failed adding timeline listener on room with identifier: \(roomID)")
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,73 +93,70 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol {
|
|||||||
var changes = [CollectionDifference<TimelineItemProxy>.Change]()
|
var changes = [CollectionDifference<TimelineItemProxy>.Change]()
|
||||||
|
|
||||||
switch diff.change() {
|
switch diff.change() {
|
||||||
case .push:
|
case .pushFront:
|
||||||
guard let item = diff.push() else {
|
guard let item = diff.pushFront() else { fatalError() }
|
||||||
fatalError()
|
|
||||||
}
|
|
||||||
|
|
||||||
MXLog.verbose("Push")
|
MXLog.verbose("Push Front")
|
||||||
|
let itemProxy = TimelineItemProxy(item: item)
|
||||||
|
changes.append(.insert(offset: 0, element: itemProxy, associatedWith: nil))
|
||||||
|
case .pushBack:
|
||||||
|
guard let item = diff.pushBack() else { fatalError() }
|
||||||
|
|
||||||
|
MXLog.verbose("Push Back")
|
||||||
let itemProxy = TimelineItemProxy(item: item)
|
let itemProxy = TimelineItemProxy(item: item)
|
||||||
changes.append(.insert(offset: Int(itemProxies.count), element: itemProxy, associatedWith: nil))
|
changes.append(.insert(offset: Int(itemProxies.count), element: itemProxy, associatedWith: nil))
|
||||||
case .updateAt:
|
case .insert:
|
||||||
guard let update = diff.updateAt() else {
|
guard let update = diff.insert() else { fatalError() }
|
||||||
fatalError()
|
|
||||||
|
MXLog.verbose("Insert at \(update.index), current total count: \(itemProxies.count)")
|
||||||
|
let itemProxy = TimelineItemProxy(item: update.item)
|
||||||
|
changes.append(.insert(offset: Int(update.index), element: itemProxy, associatedWith: nil))
|
||||||
|
case .append:
|
||||||
|
guard let items = diff.append() else { fatalError() }
|
||||||
|
|
||||||
|
MXLog.verbose("Append new items with count: \(items.count), to current total count: \(itemProxies.count)")
|
||||||
|
for (index, item) in items.enumerated() {
|
||||||
|
changes.append(.insert(offset: Int(itemProxies.count) + index, element: TimelineItemProxy(item: item), associatedWith: nil))
|
||||||
}
|
}
|
||||||
|
case .set:
|
||||||
|
guard let update = diff.set() else { fatalError() }
|
||||||
|
|
||||||
MXLog.verbose("Update \(update.index), current total count: \(itemProxies.count)")
|
MXLog.verbose("Update \(update.index), current total count: \(itemProxies.count)")
|
||||||
let itemProxy = TimelineItemProxy(item: update.item)
|
let itemProxy = TimelineItemProxy(item: update.item)
|
||||||
changes.append(.remove(offset: Int(update.index), element: itemProxy, associatedWith: nil))
|
changes.append(.remove(offset: Int(update.index), element: itemProxy, associatedWith: nil))
|
||||||
changes.append(.insert(offset: Int(update.index), element: itemProxy, associatedWith: nil))
|
changes.append(.insert(offset: Int(update.index), element: itemProxy, associatedWith: nil))
|
||||||
case .insertAt:
|
case .popFront:
|
||||||
guard let update = diff.insertAt() else {
|
MXLog.verbose("Pop Front, current total count: \(itemProxies.count)")
|
||||||
fatalError()
|
guard let itemProxy = itemProxies.first else { fatalError() }
|
||||||
}
|
|
||||||
|
|
||||||
MXLog.verbose("Insert at \(update.index), current total count: \(itemProxies.count)")
|
changes.append(.remove(offset: 0, element: itemProxy, associatedWith: nil))
|
||||||
let itemProxy = TimelineItemProxy(item: update.item)
|
case .popBack:
|
||||||
changes.append(.insert(offset: Int(update.index), element: itemProxy, associatedWith: nil))
|
MXLog.verbose("Pop Back, current total count: \(itemProxies.count)")
|
||||||
case .move:
|
guard let itemProxy = itemProxies.last else { fatalError() }
|
||||||
guard let update = diff.move() else {
|
|
||||||
fatalError()
|
|
||||||
}
|
|
||||||
|
|
||||||
MXLog.verbose("Move from: \(update.oldIndex) to: \(update.newIndex), current total count: \(itemProxies.count)")
|
changes.append(.remove(offset: itemProxies.count - 1, element: itemProxy, associatedWith: nil))
|
||||||
let itemProxy = itemProxies[Int(update.oldIndex)]
|
case .remove:
|
||||||
changes.append(.remove(offset: Int(update.oldIndex), element: itemProxy, associatedWith: nil))
|
guard let index = diff.remove() else { fatalError() }
|
||||||
changes.append(.insert(offset: Int(update.newIndex), element: itemProxy, associatedWith: nil))
|
|
||||||
case .removeAt:
|
|
||||||
guard let index = diff.removeAt() else {
|
|
||||||
fatalError()
|
|
||||||
}
|
|
||||||
|
|
||||||
MXLog.verbose("Remove from: \(index), current total count: \(itemProxies.count)")
|
MXLog.verbose("Remove item at: \(index), current total count: \(itemProxies.count)")
|
||||||
let itemProxy = itemProxies[Int(index)]
|
let itemProxy = itemProxies[Int(index)]
|
||||||
changes.append(.remove(offset: Int(index), element: itemProxy, associatedWith: nil))
|
changes.append(.remove(offset: Int(index), element: itemProxy, associatedWith: nil))
|
||||||
case .replace:
|
case .clear:
|
||||||
guard let items = diff.replace() else {
|
MXLog.verbose("Clear all items, current total count: \(itemProxies.count)")
|
||||||
fatalError()
|
for (index, itemProxy) in itemProxies.enumerated() {
|
||||||
|
changes.append(.remove(offset: index, element: itemProxy, associatedWith: nil))
|
||||||
}
|
}
|
||||||
|
case .reset:
|
||||||
|
guard let items = diff.reset() else { fatalError() }
|
||||||
|
|
||||||
MXLog.verbose("Replace all items with new count: \(items.count), current total count: \(itemProxies.count)")
|
MXLog.verbose("Replace all items with new count: \(items.count), current total count: \(itemProxies.count)")
|
||||||
for (index, itemProxy) in itemProxies.enumerated() {
|
for (index, itemProxy) in itemProxies.enumerated() {
|
||||||
changes.append(.remove(offset: index, element: itemProxy, associatedWith: nil))
|
changes.append(.remove(offset: index, element: itemProxy, associatedWith: nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
for (index, item) in items.enumerated() {
|
for (index, timelineItem) in items.enumerated() {
|
||||||
changes.append(.insert(offset: index, element: TimelineItemProxy(item: item), associatedWith: nil))
|
changes.append(.insert(offset: index, element: TimelineItemProxy(item: timelineItem), associatedWith: nil))
|
||||||
}
|
}
|
||||||
case .clear:
|
|
||||||
MXLog.verbose("Clear all items, current total count: \(itemProxies.count)")
|
|
||||||
for (index, itemProxy) in itemProxies.enumerated() {
|
|
||||||
changes.append(.remove(offset: index, element: itemProxy, associatedWith: nil))
|
|
||||||
}
|
|
||||||
case .pop:
|
|
||||||
MXLog.verbose("Pop, current total count: \(itemProxies.count)")
|
|
||||||
guard let itemProxy = itemProxies.last else {
|
|
||||||
fatalError()
|
|
||||||
}
|
|
||||||
|
|
||||||
changes.append(.remove(offset: itemProxies.count - 1, element: itemProxy, associatedWith: nil))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return CollectionDifference(changes)
|
return CollectionDifference(changes)
|
||||||
|
|||||||
@@ -78,6 +78,9 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
|
|||||||
case .emote(content: let content):
|
case .emote(content: let content):
|
||||||
let message = MessageTimelineItem(item: eventItemProxy.item, content: content)
|
let message = MessageTimelineItem(item: eventItemProxy.item, content: content)
|
||||||
return buildEmoteTimelineItemFromMessage(eventItemProxy, message, isOutgoing, groupState)
|
return buildEmoteTimelineItemFromMessage(eventItemProxy, message, isOutgoing, groupState)
|
||||||
|
case .audio:
|
||||||
|
#warning("Audio timeline items not currently supported")
|
||||||
|
return nil
|
||||||
case .none:
|
case .none:
|
||||||
return buildFallbackTimelineItem(eventItemProxy, isOutgoing, groupState)
|
return buildFallbackTimelineItem(eventItemProxy, isOutgoing, groupState)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,6 +94,9 @@ extension NotificationItemProxy {
|
|||||||
senderId: senderId,
|
senderId: senderId,
|
||||||
roomId: roomId,
|
roomId: roomId,
|
||||||
mediaProvider: mediaProvider)
|
mediaProvider: mediaProvider)
|
||||||
|
case .audio:
|
||||||
|
#warning("Audio timeline items not currently supported")
|
||||||
|
return nil
|
||||||
case .video(content: let content):
|
case .video(content: let content):
|
||||||
return try await processVideo(content: content,
|
return try await processVideo(content: content,
|
||||||
senderId: senderId,
|
senderId: senderId,
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@ include:
|
|||||||
packages:
|
packages:
|
||||||
MatrixRustSDK:
|
MatrixRustSDK:
|
||||||
url: https://github.com/matrix-org/matrix-rust-components-swift
|
url: https://github.com/matrix-org/matrix-rust-components-swift
|
||||||
exactVersion: 1.0.38-alpha
|
exactVersion: 1.0.40-alpha
|
||||||
# path: ../matrix-rust-sdk
|
# path: ../matrix-rust-sdk
|
||||||
DesignKit:
|
DesignKit:
|
||||||
path: DesignKit
|
path: DesignKit
|
||||||
|
|||||||
Reference in New Issue
Block a user