diff --git a/Source/ARTRealtimePresence.m b/Source/ARTRealtimePresence.m index aa5770e8c..391477ad1 100644 --- a/Source/ARTRealtimePresence.m +++ b/Source/ARTRealtimePresence.m @@ -134,11 +134,11 @@ - (void)unsubscribe:(ARTPresenceAction)action listener:(ARTEventListener *)liste } - (void)history:(ARTPaginatedPresenceCallback)callback { - [_internal history:callback]; + [_internal historyWithWrapperSDKAgents:nil completion:callback]; } - (BOOL)history:(ARTRealtimeHistoryQuery *_Nullable)query callback:(ARTPaginatedPresenceCallback)callback error:(NSError *_Nullable *_Nullable)errorPtr { - return [_internal history:query callback:callback error:errorPtr]; + return [_internal history:query wrapperSDKAgents:nil callback:callback error:errorPtr]; } @end @@ -272,13 +272,14 @@ - (void)get:(ARTRealtimePresenceQuery *)query callback:(ARTPresenceMessagesCallb // RTP12 -- (void)history:(ARTPaginatedPresenceCallback)callback { - [self history:[[ARTRealtimeHistoryQuery alloc] init] callback:callback error:nil]; +- (void)historyWithWrapperSDKAgents:(nullable NSStringDictionary *)wrapperSDKAgents + completion:(ARTPaginatedPresenceCallback)callback { + [self history:[[ARTRealtimeHistoryQuery alloc] init] wrapperSDKAgents:wrapperSDKAgents callback:callback error:nil]; } -- (BOOL)history:(ARTRealtimeHistoryQuery *)query callback:(ARTPaginatedPresenceCallback)callback error:(NSError **)errorPtr { +- (BOOL)history:(ARTRealtimeHistoryQuery *)query wrapperSDKAgents:(nullable NSStringDictionary *)wrapperSDKAgents callback:(ARTPaginatedPresenceCallback)callback error:(NSError **)errorPtr { query.realtimeChannel = _channel; - return [_channel.restChannel.presence history:query callback:callback error:errorPtr]; + return [_channel.restChannel.presence history:query wrapperSDKAgents:wrapperSDKAgents callback:callback error:errorPtr]; } // RTP8 diff --git a/Source/ARTRestPresence.m b/Source/ARTRestPresence.m index e113764b5..9a596acbd 100644 --- a/Source/ARTRestPresence.m +++ b/Source/ARTRestPresence.m @@ -77,11 +77,11 @@ - (BOOL)get:(ARTPresenceQuery *)query callback:(ARTPaginatedPresenceCallback)cal } - (BOOL)history:(nullable ARTDataQuery *)query callback:(ARTPaginatedPresenceCallback)callback error:(NSError *_Nullable *_Nullable)errorPtr { - return [_internal history:query callback:callback error:errorPtr]; + return [_internal history:query wrapperSDKAgents:nil callback:callback error:errorPtr]; } - (void)history:(ARTPaginatedPresenceCallback)callback { - [_internal history:callback]; + [_internal historyWithWrapperSDKAgents:nil completion:callback]; } @end @@ -161,11 +161,12 @@ - (BOOL)get:(ARTPresenceQuery *)query callback:(ARTPaginatedPresenceCallback)cal return YES; } -- (void)history:(ARTPaginatedPresenceCallback)callback { - [self history:[[ARTDataQuery alloc] init] callback:callback error:nil]; +- (void)historyWithWrapperSDKAgents:(nullable NSStringDictionary *)wrapperSDKAgents + completion:(ARTPaginatedPresenceCallback)callback { + [self history:[[ARTDataQuery alloc] init] wrapperSDKAgents:wrapperSDKAgents callback:callback error:nil]; } -- (BOOL)history:(ARTDataQuery *)query callback:(ARTPaginatedPresenceCallback)callback error:(NSError **)errorPtr { +- (BOOL)history:(ARTDataQuery *)query wrapperSDKAgents:(nullable NSStringDictionary *)wrapperSDKAgents callback:(ARTPaginatedPresenceCallback)callback error:(NSError **)errorPtr { if (callback) { void (^userCallback)(ARTPaginatedResult *result, ARTErrorInfo *error) = callback; callback = ^(ARTPaginatedResult *result, ARTErrorInfo *error) { @@ -217,7 +218,7 @@ - (BOOL)history:(ARTDataQuery *)query callback:(ARTPaginatedPresenceCallback)cal }; dispatch_async(_queue, ^{ - [ARTPaginatedResult executePaginated:self->_channel.rest withRequest:request andResponseProcessor:responseProcessor wrapperSDKAgents:nil logger:self->_logger callback:callback]; + [ARTPaginatedResult executePaginated:self->_channel.rest withRequest:request andResponseProcessor:responseProcessor wrapperSDKAgents:wrapperSDKAgents logger:self->_logger callback:callback]; }); return YES; } diff --git a/Source/ARTWrapperSDKProxyRealtimePresence.m b/Source/ARTWrapperSDKProxyRealtimePresence.m index 295c66ed1..b97334303 100644 --- a/Source/ARTWrapperSDKProxyRealtimePresence.m +++ b/Source/ARTWrapperSDKProxyRealtimePresence.m @@ -1,4 +1,6 @@ #import "ARTWrapperSDKProxyRealtimePresence+Private.h" +#import "ARTRealtimePresence+Private.h" +#import "ARTWrapperSDKProxyOptions.h" NS_ASSUME_NONNULL_BEGIN @@ -51,11 +53,15 @@ - (void)get:(nonnull ARTRealtimePresenceQuery *)query callback:(nonnull ARTPrese } - (void)history:(nonnull ARTPaginatedPresenceCallback)callback { - [self.underlyingRealtimePresence history:callback]; + [self.underlyingRealtimePresence.internal historyWithWrapperSDKAgents:self.proxyOptions.agents + completion:callback]; } - (BOOL)history:(ARTRealtimeHistoryQuery * _Nullable)query callback:(nonnull ARTPaginatedPresenceCallback)callback error:(NSError * _Nullable __autoreleasing * _Nullable)errorPtr { - return [self.underlyingRealtimePresence history:query callback:callback error:errorPtr]; + return [self.underlyingRealtimePresence.internal history:query + wrapperSDKAgents:self.proxyOptions.agents + callback:callback + error:errorPtr]; } - (void)leave:(id _Nullable)data { diff --git a/Source/PrivateHeaders/Ably/ARTRealtimePresence+Private.h b/Source/PrivateHeaders/Ably/ARTRealtimePresence+Private.h index 67d5cd9e0..4db24bb38 100644 --- a/Source/PrivateHeaders/Ably/ARTRealtimePresence+Private.h +++ b/Source/PrivateHeaders/Ably/ARTRealtimePresence+Private.h @@ -67,9 +67,10 @@ NS_ASSUME_NONNULL_BEGIN - (void)unsubscribe:(ARTPresenceAction)action listener:(ARTEventListener *)listener; -- (void)history:(ARTPaginatedPresenceCallback)callback; +- (void)historyWithWrapperSDKAgents:(nullable NSStringDictionary *)wrapperSDKAgents + completion:(ARTPaginatedPresenceCallback)callback; -- (BOOL)history:(ARTRealtimeHistoryQuery *_Nullable)query callback:(ARTPaginatedPresenceCallback)callback error:(NSError *_Nullable *_Nullable)errorPtr; +- (BOOL)history:(ARTRealtimeHistoryQuery *_Nullable)query wrapperSDKAgents:(nullable NSStringDictionary *)wrapperSDKAgents callback:(ARTPaginatedPresenceCallback)callback error:(NSError *_Nullable *_Nullable)errorPtr; @end diff --git a/Source/PrivateHeaders/Ably/ARTRestPresence+Private.h b/Source/PrivateHeaders/Ably/ARTRestPresence+Private.h index c62fa0aa8..9d99d641c 100644 --- a/Source/PrivateHeaders/Ably/ARTRestPresence+Private.h +++ b/Source/PrivateHeaders/Ably/ARTRestPresence+Private.h @@ -16,9 +16,10 @@ NS_ASSUME_NONNULL_BEGIN - (BOOL)get:(ARTPresenceQuery *)query callback:(ARTPaginatedPresenceCallback)callback error:(NSError *_Nullable *_Nullable)errorPtr; -- (BOOL)history:(nullable ARTDataQuery *)query callback:(ARTPaginatedPresenceCallback)callback error:(NSError *_Nullable *_Nullable)errorPtr; +- (BOOL)history:(nullable ARTDataQuery *)query wrapperSDKAgents:(nullable NSStringDictionary *)wrapperSDKAgents callback:(ARTPaginatedPresenceCallback)callback error:(NSError *_Nullable *_Nullable)errorPtr; -- (void)history:(ARTPaginatedPresenceCallback)callback; +- (void)historyWithWrapperSDKAgents:(nullable NSStringDictionary *)wrapperSDKAgents + completion:(ARTPaginatedPresenceCallback)callback; @end diff --git a/Test/Tests/RealtimeClientPresenceTests.swift b/Test/Tests/RealtimeClientPresenceTests.swift index 916b6f70b..167e40839 100644 --- a/Test/Tests/RealtimeClientPresenceTests.swift +++ b/Test/Tests/RealtimeClientPresenceTests.swift @@ -3569,12 +3569,12 @@ class RealtimeClientPresenceTests: XCTestCase { var restPresenceHistoryMethodWasCalled = false - let hookRest = channelRest.presence.internal.testSuite_injectIntoMethod(after: #selector(ARTRestPresenceInternal.history(_:callback:))) { + let hookRest = channelRest.presence.internal.testSuite_injectIntoMethod(after: #selector(ARTRestPresenceInternal.history(_:wrapperSDKAgents:callback:))) { restPresenceHistoryMethodWasCalled = true } defer { hookRest.remove() } - let hookRealtime = channelRealtime.presence.internal.testSuite_injectIntoMethod(after: #selector(ARTRestPresenceInternal.history(_:callback:))) { + let hookRealtime = channelRealtime.presence.internal.testSuite_injectIntoMethod(after: #selector(ARTRestPresenceInternal.history(_:wrapperSDKAgents:callback:))) { restPresenceHistoryMethodWasCalled = true } defer { hookRealtime.remove() } diff --git a/Test/Tests/WrapperSDKProxyTests.swift b/Test/Tests/WrapperSDKProxyTests.swift index e6699e772..46dcea79e 100644 --- a/Test/Tests/WrapperSDKProxyTests.swift +++ b/Test/Tests/WrapperSDKProxyTests.swift @@ -502,6 +502,21 @@ class WrapperSDKProxyTests: XCTestCase { } #endif + func test_presenceHistory_addsWrapperSDKAgentToRequest() throws { + let test = Test() + + try parameterizedTest_addsWrapperSDKAgentToRequests(test: test) { proxyClient in + let channel = proxyClient.channels.get(test.uniqueChannelName()) + + waitUntil(timeout: testTimeout) { done in + channel.presence.history() { _, error in + XCTAssertNil(error) + done() + } + } + } + } + // MARK: - `agent` channel param private func parameterizedTest_checkAttachProtocolMessage(