From 6d7ca472a303173f892b4617912b00df294f62d5 Mon Sep 17 00:00:00 2001 From: Erik Little Date: Thu, 17 Aug 2017 09:20:03 -0400 Subject: [PATCH] Add off for client events. Fixes #773 --- SocketIO-MacTests/SocketSideEffectTest.swift | 10 +++++++++- Source/SocketIOClient.swift | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/SocketIO-MacTests/SocketSideEffectTest.swift b/SocketIO-MacTests/SocketSideEffectTest.swift index 345c7b8..f281e98 100644 --- a/SocketIO-MacTests/SocketSideEffectTest.swift +++ b/SocketIO-MacTests/SocketSideEffectTest.swift @@ -85,13 +85,21 @@ class SocketSideEffectTest: XCTestCase { func testOffWithEvent() { socket.on("test") {data, ack in } - XCTAssertEqual(socket.testHandlers.count, 1) socket.on("test") {data, ack in } XCTAssertEqual(socket.testHandlers.count, 2) socket.off("test") XCTAssertEqual(socket.testHandlers.count, 0) } + func testOffClientEvent() { + socket.on(clientEvent: .connect) {data, ack in } + socket.on(clientEvent: .disconnect) {data, ack in } + XCTAssertEqual(socket.testHandlers.count, 2) + socket.off(clientEvent: .disconnect) + XCTAssertEqual(socket.testHandlers.count, 1) + XCTAssertTrue(socket.testHandlers.contains(where: { $0.event == "connect" })) + } + func testOffWithId() { let handler = socket.on("test") {data, ack in } XCTAssertEqual(socket.testHandlers.count, 1) diff --git a/Source/SocketIOClient.swift b/Source/SocketIOClient.swift index 1aba6c1..c7d3928 100644 --- a/Source/SocketIOClient.swift +++ b/Source/SocketIOClient.swift @@ -439,6 +439,15 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So } } + /// Removes handler(s) for a client event. + /// + /// If you wish to remove a client event handler, call the `off(id:)` with the UUID received from its `on` call. + /// + /// - parameter clientEvent: The event to remove handlers for. + open func off(clientEvent event: SocketClientEvent) { + off(event.rawValue) + } + /// Removes handler(s) based on an event name. /// /// If you wish to remove a specific event, call the `off(id:)` with the UUID received from its `on` call.