mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Bump the RustSDK to v1.0.79; add a feature flag for the new rust side ClientBuilder::useEventCachePersistentStorage
This commit is contained in:
committed by
Stefan Ceriu
parent
e59a705459
commit
df3e5976ce
@@ -8319,7 +8319,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 = 1.0.78;
|
version = 1.0.79;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
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" : "b4705d95bd049f1c7d93cff38e2c2ac2d892f23d",
|
"revision" : "14fc58ea578bd370f78e45e83ef2f077a3bd683f",
|
||||||
"version" : "1.0.78"
|
"version" : "1.0.79"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ protocol CommonSettingsProtocol {
|
|||||||
var logLevel: TracingConfiguration.LogLevel { get }
|
var logLevel: TracingConfiguration.LogLevel { get }
|
||||||
var enableOnlySignedDeviceIsolationMode: Bool { get }
|
var enableOnlySignedDeviceIsolationMode: Bool { get }
|
||||||
var hideTimelineMedia: Bool { get }
|
var hideTimelineMedia: Bool { get }
|
||||||
|
var eventCacheEnabled: Bool { get }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Store Element specific app settings.
|
/// Store Element specific app settings.
|
||||||
@@ -49,6 +50,7 @@ final class AppSettings {
|
|||||||
case knockingEnabled
|
case knockingEnabled
|
||||||
case createMediaCaptionsEnabled
|
case createMediaCaptionsEnabled
|
||||||
case mediaBrowserEnabled
|
case mediaBrowserEnabled
|
||||||
|
case eventCacheEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
private static var suiteName: String = InfoPlistReader.main.appGroupIdentifier
|
private static var suiteName: String = InfoPlistReader.main.appGroupIdentifier
|
||||||
@@ -305,6 +307,9 @@ final class AppSettings {
|
|||||||
|
|
||||||
@UserPreference(key: UserDefaultsKeys.hideTimelineMedia, defaultValue: false, storageType: .userDefaults(store))
|
@UserPreference(key: UserDefaultsKeys.hideTimelineMedia, defaultValue: false, storageType: .userDefaults(store))
|
||||||
var hideTimelineMedia
|
var hideTimelineMedia
|
||||||
|
|
||||||
|
@UserPreference(key: UserDefaultsKeys.eventCacheEnabled, defaultValue: false, storageType: .userDefaults(store))
|
||||||
|
var eventCacheEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
extension AppSettings: CommonSettingsProtocol { }
|
extension AppSettings: CommonSettingsProtocol { }
|
||||||
|
|||||||
@@ -5832,6 +5832,77 @@ open class ClientBuilderSDKMock: MatrixRustSDK.ClientBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//MARK: - useEventCachePersistentStorage
|
||||||
|
|
||||||
|
var useEventCachePersistentStorageValueUnderlyingCallsCount = 0
|
||||||
|
open var useEventCachePersistentStorageValueCallsCount: Int {
|
||||||
|
get {
|
||||||
|
if Thread.isMainThread {
|
||||||
|
return useEventCachePersistentStorageValueUnderlyingCallsCount
|
||||||
|
} else {
|
||||||
|
var returnValue: Int? = nil
|
||||||
|
DispatchQueue.main.sync {
|
||||||
|
returnValue = useEventCachePersistentStorageValueUnderlyingCallsCount
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnValue!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
if Thread.isMainThread {
|
||||||
|
useEventCachePersistentStorageValueUnderlyingCallsCount = newValue
|
||||||
|
} else {
|
||||||
|
DispatchQueue.main.sync {
|
||||||
|
useEventCachePersistentStorageValueUnderlyingCallsCount = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
open var useEventCachePersistentStorageValueCalled: Bool {
|
||||||
|
return useEventCachePersistentStorageValueCallsCount > 0
|
||||||
|
}
|
||||||
|
open var useEventCachePersistentStorageValueReceivedValue: Bool?
|
||||||
|
open var useEventCachePersistentStorageValueReceivedInvocations: [Bool] = []
|
||||||
|
|
||||||
|
var useEventCachePersistentStorageValueUnderlyingReturnValue: ClientBuilder!
|
||||||
|
open var useEventCachePersistentStorageValueReturnValue: ClientBuilder! {
|
||||||
|
get {
|
||||||
|
if Thread.isMainThread {
|
||||||
|
return useEventCachePersistentStorageValueUnderlyingReturnValue
|
||||||
|
} else {
|
||||||
|
var returnValue: ClientBuilder? = nil
|
||||||
|
DispatchQueue.main.sync {
|
||||||
|
returnValue = useEventCachePersistentStorageValueUnderlyingReturnValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnValue!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
if Thread.isMainThread {
|
||||||
|
useEventCachePersistentStorageValueUnderlyingReturnValue = newValue
|
||||||
|
} else {
|
||||||
|
DispatchQueue.main.sync {
|
||||||
|
useEventCachePersistentStorageValueUnderlyingReturnValue = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
open var useEventCachePersistentStorageValueClosure: ((Bool) -> ClientBuilder)?
|
||||||
|
|
||||||
|
open override func useEventCachePersistentStorage(value: Bool) -> ClientBuilder {
|
||||||
|
useEventCachePersistentStorageValueCallsCount += 1
|
||||||
|
useEventCachePersistentStorageValueReceivedValue = value
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
self.useEventCachePersistentStorageValueReceivedInvocations.append(value)
|
||||||
|
}
|
||||||
|
if let useEventCachePersistentStorageValueClosure = useEventCachePersistentStorageValueClosure {
|
||||||
|
return useEventCachePersistentStorageValueClosure(value)
|
||||||
|
} else {
|
||||||
|
return useEventCachePersistentStorageValueReturnValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//MARK: - userAgent
|
//MARK: - userAgent
|
||||||
|
|
||||||
var userAgentUserAgentUnderlyingCallsCount = 0
|
var userAgentUserAgentUnderlyingCallsCount = 0
|
||||||
@@ -10881,6 +10952,46 @@ open class RoomSDKMock: MatrixRustSDK.Room {
|
|||||||
try await clearComposerDraftClosure?()
|
try await clearComposerDraftClosure?()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//MARK: - clearEventCacheStorage
|
||||||
|
|
||||||
|
open var clearEventCacheStorageThrowableError: Error?
|
||||||
|
var clearEventCacheStorageUnderlyingCallsCount = 0
|
||||||
|
open var clearEventCacheStorageCallsCount: Int {
|
||||||
|
get {
|
||||||
|
if Thread.isMainThread {
|
||||||
|
return clearEventCacheStorageUnderlyingCallsCount
|
||||||
|
} else {
|
||||||
|
var returnValue: Int? = nil
|
||||||
|
DispatchQueue.main.sync {
|
||||||
|
returnValue = clearEventCacheStorageUnderlyingCallsCount
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnValue!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
if Thread.isMainThread {
|
||||||
|
clearEventCacheStorageUnderlyingCallsCount = newValue
|
||||||
|
} else {
|
||||||
|
DispatchQueue.main.sync {
|
||||||
|
clearEventCacheStorageUnderlyingCallsCount = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
open var clearEventCacheStorageCalled: Bool {
|
||||||
|
return clearEventCacheStorageCallsCount > 0
|
||||||
|
}
|
||||||
|
open var clearEventCacheStorageClosure: (() async throws -> Void)?
|
||||||
|
|
||||||
|
open override func clearEventCacheStorage() async throws {
|
||||||
|
if let error = clearEventCacheStorageThrowableError {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
clearEventCacheStorageCallsCount += 1
|
||||||
|
try await clearEventCacheStorageClosure?()
|
||||||
|
}
|
||||||
|
|
||||||
//MARK: - discardRoomKey
|
//MARK: - discardRoomKey
|
||||||
|
|
||||||
open var discardRoomKeyThrowableError: Error?
|
open var discardRoomKeyThrowableError: Error?
|
||||||
@@ -12880,16 +12991,16 @@ open class RoomSDKMock: MatrixRustSDK.Room {
|
|||||||
|
|
||||||
//MARK: - messageFilteredTimeline
|
//MARK: - messageFilteredTimeline
|
||||||
|
|
||||||
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesThrowableError: Error?
|
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeThrowableError: Error?
|
||||||
var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingCallsCount = 0
|
var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount = 0
|
||||||
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesCallsCount: Int {
|
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeCallsCount: Int {
|
||||||
get {
|
get {
|
||||||
if Thread.isMainThread {
|
if Thread.isMainThread {
|
||||||
return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingCallsCount
|
return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount
|
||||||
} else {
|
} else {
|
||||||
var returnValue: Int? = nil
|
var returnValue: Int? = nil
|
||||||
DispatchQueue.main.sync {
|
DispatchQueue.main.sync {
|
||||||
returnValue = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingCallsCount
|
returnValue = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount
|
||||||
}
|
}
|
||||||
|
|
||||||
return returnValue!
|
return returnValue!
|
||||||
@@ -12897,29 +13008,29 @@ open class RoomSDKMock: MatrixRustSDK.Room {
|
|||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
if Thread.isMainThread {
|
if Thread.isMainThread {
|
||||||
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingCallsCount = newValue
|
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount = newValue
|
||||||
} else {
|
} else {
|
||||||
DispatchQueue.main.sync {
|
DispatchQueue.main.sync {
|
||||||
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingCallsCount = newValue
|
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingCallsCount = newValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesCalled: Bool {
|
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeCalled: Bool {
|
||||||
return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesCallsCount > 0
|
return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeCallsCount > 0
|
||||||
}
|
}
|
||||||
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesReceivedArguments: (internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType])?
|
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReceivedArguments: (internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType], dateDividerMode: DateDividerMode)?
|
||||||
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesReceivedInvocations: [(internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType])] = []
|
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReceivedInvocations: [(internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType], dateDividerMode: DateDividerMode)] = []
|
||||||
|
|
||||||
var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingReturnValue: Timeline!
|
var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue: Timeline!
|
||||||
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesReturnValue: Timeline! {
|
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReturnValue: Timeline! {
|
||||||
get {
|
get {
|
||||||
if Thread.isMainThread {
|
if Thread.isMainThread {
|
||||||
return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingReturnValue
|
return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue
|
||||||
} else {
|
} else {
|
||||||
var returnValue: Timeline? = nil
|
var returnValue: Timeline? = nil
|
||||||
DispatchQueue.main.sync {
|
DispatchQueue.main.sync {
|
||||||
returnValue = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingReturnValue
|
returnValue = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue
|
||||||
}
|
}
|
||||||
|
|
||||||
return returnValue!
|
return returnValue!
|
||||||
@@ -12927,29 +13038,29 @@ open class RoomSDKMock: MatrixRustSDK.Room {
|
|||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
if Thread.isMainThread {
|
if Thread.isMainThread {
|
||||||
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingReturnValue = newValue
|
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue = newValue
|
||||||
} else {
|
} else {
|
||||||
DispatchQueue.main.sync {
|
DispatchQueue.main.sync {
|
||||||
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesUnderlyingReturnValue = newValue
|
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeUnderlyingReturnValue = newValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesClosure: ((String?, [RoomMessageEventMessageType]) async throws -> Timeline)?
|
open var messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeClosure: ((String?, [RoomMessageEventMessageType], DateDividerMode) async throws -> Timeline)?
|
||||||
|
|
||||||
open override func messageFilteredTimeline(internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType]) async throws -> Timeline {
|
open override func messageFilteredTimeline(internalIdPrefix: String?, allowedMessageTypes: [RoomMessageEventMessageType], dateDividerMode: DateDividerMode) async throws -> Timeline {
|
||||||
if let error = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesThrowableError {
|
if let error = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeThrowableError {
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesCallsCount += 1
|
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeCallsCount += 1
|
||||||
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesReceivedArguments = (internalIdPrefix: internalIdPrefix, allowedMessageTypes: allowedMessageTypes)
|
messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReceivedArguments = (internalIdPrefix: internalIdPrefix, allowedMessageTypes: allowedMessageTypes, dateDividerMode: dateDividerMode)
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
self.messageFilteredTimelineInternalIdPrefixAllowedMessageTypesReceivedInvocations.append((internalIdPrefix: internalIdPrefix, allowedMessageTypes: allowedMessageTypes))
|
self.messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReceivedInvocations.append((internalIdPrefix: internalIdPrefix, allowedMessageTypes: allowedMessageTypes, dateDividerMode: dateDividerMode))
|
||||||
}
|
}
|
||||||
if let messageFilteredTimelineInternalIdPrefixAllowedMessageTypesClosure = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesClosure {
|
if let messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeClosure = messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeClosure {
|
||||||
return try await messageFilteredTimelineInternalIdPrefixAllowedMessageTypesClosure(internalIdPrefix, allowedMessageTypes)
|
return try await messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeClosure(internalIdPrefix, allowedMessageTypes, dateDividerMode)
|
||||||
} else {
|
} else {
|
||||||
return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesReturnValue
|
return messageFilteredTimelineInternalIdPrefixAllowedMessageTypesDateDividerModeReturnValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13560,6 +13671,52 @@ open class RoomSDKMock: MatrixRustSDK.Room {
|
|||||||
try await sendCallNotificationIfNeededClosure?()
|
try await sendCallNotificationIfNeededClosure?()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//MARK: - sendRaw
|
||||||
|
|
||||||
|
open var sendRawEventTypeContentThrowableError: Error?
|
||||||
|
var sendRawEventTypeContentUnderlyingCallsCount = 0
|
||||||
|
open var sendRawEventTypeContentCallsCount: Int {
|
||||||
|
get {
|
||||||
|
if Thread.isMainThread {
|
||||||
|
return sendRawEventTypeContentUnderlyingCallsCount
|
||||||
|
} else {
|
||||||
|
var returnValue: Int? = nil
|
||||||
|
DispatchQueue.main.sync {
|
||||||
|
returnValue = sendRawEventTypeContentUnderlyingCallsCount
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnValue!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
if Thread.isMainThread {
|
||||||
|
sendRawEventTypeContentUnderlyingCallsCount = newValue
|
||||||
|
} else {
|
||||||
|
DispatchQueue.main.sync {
|
||||||
|
sendRawEventTypeContentUnderlyingCallsCount = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
open var sendRawEventTypeContentCalled: Bool {
|
||||||
|
return sendRawEventTypeContentCallsCount > 0
|
||||||
|
}
|
||||||
|
open var sendRawEventTypeContentReceivedArguments: (eventType: String, content: String)?
|
||||||
|
open var sendRawEventTypeContentReceivedInvocations: [(eventType: String, content: String)] = []
|
||||||
|
open var sendRawEventTypeContentClosure: ((String, String) async throws -> Void)?
|
||||||
|
|
||||||
|
open override func sendRaw(eventType: String, content: String) async throws {
|
||||||
|
if let error = sendRawEventTypeContentThrowableError {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
sendRawEventTypeContentCallsCount += 1
|
||||||
|
sendRawEventTypeContentReceivedArguments = (eventType: eventType, content: content)
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
self.sendRawEventTypeContentReceivedInvocations.append((eventType: eventType, content: content))
|
||||||
|
}
|
||||||
|
try await sendRawEventTypeContentClosure?(eventType, content)
|
||||||
|
}
|
||||||
|
|
||||||
//MARK: - setIsFavourite
|
//MARK: - setIsFavourite
|
||||||
|
|
||||||
open var setIsFavouriteIsFavouriteTagOrderThrowableError: Error?
|
open var setIsFavouriteIsFavouriteTagOrderThrowableError: Error?
|
||||||
|
|||||||
@@ -15,13 +15,15 @@ extension ClientBuilder {
|
|||||||
slidingSync: ClientBuilderSlidingSync,
|
slidingSync: ClientBuilderSlidingSync,
|
||||||
sessionDelegate: ClientSessionDelegate,
|
sessionDelegate: ClientSessionDelegate,
|
||||||
appHooks: AppHooks,
|
appHooks: AppHooks,
|
||||||
enableOnlySignedDeviceIsolationMode: Bool) -> ClientBuilder {
|
enableOnlySignedDeviceIsolationMode: Bool,
|
||||||
|
eventCacheEnabled: Bool) -> ClientBuilder {
|
||||||
var builder = ClientBuilder()
|
var builder = ClientBuilder()
|
||||||
.crossProcessStoreLocksHolderName(holderName: InfoPlistReader.main.bundleIdentifier)
|
.crossProcessStoreLocksHolderName(holderName: InfoPlistReader.main.bundleIdentifier)
|
||||||
.enableOidcRefreshLock()
|
.enableOidcRefreshLock()
|
||||||
.setSessionDelegate(sessionDelegate: sessionDelegate)
|
.setSessionDelegate(sessionDelegate: sessionDelegate)
|
||||||
.userAgent(userAgent: UserAgentBuilder.makeASCIIUserAgent())
|
.userAgent(userAgent: UserAgentBuilder.makeASCIIUserAgent())
|
||||||
.requestConfig(config: .init(retryLimit: 0, timeout: 30000, maxConcurrentRequests: nil, retryTimeout: nil))
|
.requestConfig(config: .init(retryLimit: 0, timeout: 30000, maxConcurrentRequests: nil, retryTimeout: nil))
|
||||||
|
.useEventCachePersistentStorage(value: eventCacheEnabled)
|
||||||
|
|
||||||
builder = switch slidingSync {
|
builder = switch slidingSync {
|
||||||
case .restored: builder
|
case .restored: builder
|
||||||
|
|||||||
+1
@@ -52,6 +52,7 @@ protocol DeveloperOptionsProtocol: AnyObject {
|
|||||||
var knockingEnabled: Bool { get set }
|
var knockingEnabled: Bool { get set }
|
||||||
var createMediaCaptionsEnabled: Bool { get set }
|
var createMediaCaptionsEnabled: Bool { get set }
|
||||||
var mediaBrowserEnabled: Bool { get set }
|
var mediaBrowserEnabled: Bool { get set }
|
||||||
|
var eventCacheEnabled: Bool { get set }
|
||||||
}
|
}
|
||||||
|
|
||||||
extension AppSettings: DeveloperOptionsProtocol { }
|
extension AppSettings: DeveloperOptionsProtocol { }
|
||||||
|
|||||||
+9
@@ -23,6 +23,15 @@ struct DeveloperOptionsScreen: View {
|
|||||||
LogLevelConfigurationView(logLevel: $context.logLevel)
|
LogLevelConfigurationView(logLevel: $context.logLevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Section("General") {
|
||||||
|
Toggle(isOn: $context.eventCacheEnabled) {
|
||||||
|
Text("Event cache")
|
||||||
|
}
|
||||||
|
.onChange(of: context.eventCacheEnabled) {
|
||||||
|
context.send(viewAction: .clearCache)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Section {
|
Section {
|
||||||
Picker("Discovery", selection: $context.slidingSyncDiscovery) {
|
Picker("Discovery", selection: $context.slidingSyncDiscovery) {
|
||||||
Text("Proxy only").tag(AppSettings.SlidingSyncDiscovery.proxy)
|
Text("Proxy only").tag(AppSettings.SlidingSyncDiscovery.proxy)
|
||||||
|
|||||||
@@ -78,7 +78,8 @@ struct AuthenticationClientBuilder: AuthenticationClientBuilderProtocol {
|
|||||||
slidingSync: slidingSync,
|
slidingSync: slidingSync,
|
||||||
sessionDelegate: clientSessionDelegate,
|
sessionDelegate: clientSessionDelegate,
|
||||||
appHooks: appHooks,
|
appHooks: appHooks,
|
||||||
enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode)
|
enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode,
|
||||||
|
eventCacheEnabled: appSettings.eventCacheEnabled)
|
||||||
.sessionPaths(dataPath: sessionDirectories.dataPath,
|
.sessionPaths(dataPath: sessionDirectories.dataPath,
|
||||||
cachePath: sessionDirectories.cachePath)
|
cachePath: sessionDirectories.cachePath)
|
||||||
.passphrase(passphrase: passphrase)
|
.passphrase(passphrase: passphrase)
|
||||||
|
|||||||
@@ -168,7 +168,9 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol {
|
|||||||
|
|
||||||
func messageFilteredTimeline(allowedMessageTypes: [RoomMessageEventMessageType]) async -> Result<any TimelineProxyProtocol, RoomProxyError> {
|
func messageFilteredTimeline(allowedMessageTypes: [RoomMessageEventMessageType]) async -> Result<any TimelineProxyProtocol, RoomProxyError> {
|
||||||
do {
|
do {
|
||||||
let timeline = try await TimelineProxy(timeline: room.messageFilteredTimeline(internalIdPrefix: nil, allowedMessageTypes: allowedMessageTypes),
|
let timeline = try await TimelineProxy(timeline: room.messageFilteredTimeline(internalIdPrefix: nil,
|
||||||
|
allowedMessageTypes: allowedMessageTypes,
|
||||||
|
dateDividerMode: .monthly),
|
||||||
kind: .media)
|
kind: .media)
|
||||||
await timeline.subscribeForUpdates()
|
await timeline.subscribeForUpdates()
|
||||||
|
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ private extension TimelineItemProxy {
|
|||||||
private extension VirtualTimelineItem {
|
private extension VirtualTimelineItem {
|
||||||
var description: String {
|
var description: String {
|
||||||
switch self {
|
switch self {
|
||||||
case .dayDivider(let timestamp):
|
case .dateDivider(let timestamp):
|
||||||
return "DayDiviver(\(timestamp))"
|
return "DayDiviver(\(timestamp))"
|
||||||
case .readMarker:
|
case .readMarker:
|
||||||
return "ReadMarker"
|
return "ReadMarker"
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
|
|||||||
return timelineItem
|
return timelineItem
|
||||||
case .virtual(let virtualItem, let uniqueID):
|
case .virtual(let virtualItem, let uniqueID):
|
||||||
switch virtualItem {
|
switch virtualItem {
|
||||||
case .dayDivider(let timestamp):
|
case .dateDivider(let timestamp):
|
||||||
let date = Date(timeIntervalSince1970: TimeInterval(timestamp / 1000))
|
let date = Date(timeIntervalSince1970: TimeInterval(timestamp / 1000))
|
||||||
let dateString = date.formatted(date: .complete, time: .omitted)
|
let dateString = date.formatted(date: .complete, time: .omitted)
|
||||||
|
|
||||||
|
|||||||
@@ -130,7 +130,8 @@ class UserSessionStore: UserSessionStoreProtocol {
|
|||||||
slidingSync: .restored,
|
slidingSync: .restored,
|
||||||
sessionDelegate: keychainController,
|
sessionDelegate: keychainController,
|
||||||
appHooks: appHooks,
|
appHooks: appHooks,
|
||||||
enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode)
|
enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode,
|
||||||
|
eventCacheEnabled: appSettings.eventCacheEnabled)
|
||||||
.sessionPaths(dataPath: credentials.restorationToken.sessionDirectories.dataPath,
|
.sessionPaths(dataPath: credentials.restorationToken.sessionDirectories.dataPath,
|
||||||
cachePath: credentials.restorationToken.sessionDirectories.cachePath)
|
cachePath: credentials.restorationToken.sessionDirectories.cachePath)
|
||||||
.username(username: credentials.userID)
|
.username(username: credentials.userID)
|
||||||
|
|||||||
@@ -46,7 +46,17 @@ class NotificationServiceExtension: UNNotificationServiceExtension {
|
|||||||
|
|
||||||
// Used to create one single UserSession across process/instances/runs
|
// Used to create one single UserSession across process/instances/runs
|
||||||
private static let serialQueue = DispatchQueue(label: "io.element.elementx.nse")
|
private static let serialQueue = DispatchQueue(label: "io.element.elementx.nse")
|
||||||
private static var userSession: NSEUserSession?
|
|
||||||
|
// Temporary. We need to make sure the NSE and the main app pass in the same value.
|
||||||
|
// The NSE has a tendency of staying alive for longer so use this to manually kill it
|
||||||
|
// when the feature flag doesn't match.
|
||||||
|
private static var eventCacheEnabled = false
|
||||||
|
|
||||||
|
private static var userSession: NSEUserSession? {
|
||||||
|
didSet {
|
||||||
|
eventCacheEnabled = settings.eventCacheEnabled
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override func didReceive(_ request: UNNotificationRequest,
|
override func didReceive(_ request: UNNotificationRequest,
|
||||||
withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
|
withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
|
||||||
@@ -94,6 +104,11 @@ class NotificationServiceExtension: UNNotificationServiceExtension {
|
|||||||
return discard(unreadCount: request.unreadCount)
|
return discard(unreadCount: request.unreadCount)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
guard Self.eventCacheEnabled == settings.eventCacheEnabled else {
|
||||||
|
MXLog.error("Found missmatch `eventCacheEnabled` feature flag missmatch, restarting the NSE.")
|
||||||
|
exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
Task {
|
Task {
|
||||||
await run(with: credentials,
|
await run(with: credentials,
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ final class NSEUserSession {
|
|||||||
slidingSync: .restored,
|
slidingSync: .restored,
|
||||||
sessionDelegate: clientSessionDelegate,
|
sessionDelegate: clientSessionDelegate,
|
||||||
appHooks: appHooks,
|
appHooks: appHooks,
|
||||||
enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode)
|
enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode,
|
||||||
|
eventCacheEnabled: appSettings.eventCacheEnabled)
|
||||||
.sessionPaths(dataPath: credentials.restorationToken.sessionDirectories.dataPath,
|
.sessionPaths(dataPath: credentials.restorationToken.sessionDirectories.dataPath,
|
||||||
cachePath: credentials.restorationToken.sessionDirectories.cachePath)
|
cachePath: credentials.restorationToken.sessionDirectories.cachePath)
|
||||||
.username(username: credentials.userID)
|
.username(username: credentials.userID)
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,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: 1.0.78
|
exactVersion: 1.0.79
|
||||||
# path: ../matrix-rust-sdk
|
# path: ../matrix-rust-sdk
|
||||||
Compound:
|
Compound:
|
||||||
url: https://github.com/element-hq/compound-ios
|
url: https://github.com/element-hq/compound-ios
|
||||||
|
|||||||
Reference in New Issue
Block a user