Skip to content

Commit 750e959

Browse files
Merge pull request #430 from mixpanel/jared-clearTimedEvent
add clearTimedEvent(event: String) method
2 parents 20b93df + f91e2b0 commit 750e959

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

MixpanelDemo/MixpanelDemoTests/MixpanelDemoTests.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,19 @@ class MixpanelDemoTests: MixpanelBaseTests {
907907
p = e["properties"] as! InternalProperties
908908
XCTAssertNil(p["$duration"],
909909
"Tracking the same event should require a second call to timeEvent.")
910+
mixpanel.time(event: "Time Event A")
911+
mixpanel.time(event: "Time Event B")
912+
mixpanel.time(event: "Time Event C")
913+
waitForTrackingQueue()
914+
XCTAssertTrue(mixpanel.timedEvents.count == 3, "Each call to time() should add an event to timedEvents")
915+
XCTAssertNotNil(mixpanel.timedEvents["Time Event A"], "Keys in timedEvents should be event names")
916+
mixpanel.clearTimedEvent(event: "Time Event A")
917+
waitForTrackingQueue()
918+
XCTAssertNil(mixpanel.timedEvents["Time Event A"], "clearTimedEvent should remove key/value pair")
919+
XCTAssertTrue(mixpanel.timedEvents.count == 2, "clearTimedEvent shoud remove only one key/value pair")
920+
mixpanel.clearTimedEvents()
921+
waitForTrackingQueue()
922+
XCTAssertTrue(mixpanel.timedEvents.count == 0, "clearTimedEvents should remove all key/value pairs")
910923
}
911924

912925
func testTelephonyInfoInitialized() {

Sources/MixpanelInstance.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,6 +1414,22 @@ extension MixpanelInstance {
14141414
}
14151415
}
14161416
}
1417+
1418+
/**
1419+
Clears the event timer for the named event.
1420+
1421+
- parameter event: the name of the event to clear the timer for
1422+
*/
1423+
open func clearTimedEvent(event: String) {
1424+
trackingQueue.async {
1425+
[weak self, event] in
1426+
guard let self = self else { return }
1427+
1428+
self.readWriteLock.write {
1429+
self.timedEvents = self.trackInstance.clearTimedEvent(event: event, timedEvents: self.timedEvents)
1430+
}
1431+
}
1432+
}
14171433

14181434
/**
14191435
Returns the currently set super properties.

Sources/Track.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,14 @@ class Track {
154154
updatedTimedEvents.removeAll()
155155
return updatedTimedEvents
156156
}
157+
158+
func clearTimedEvent(event: String?, timedEvents: InternalProperties) -> InternalProperties {
159+
var updatedTimedEvents = timedEvents
160+
guard let event = event, !event.isEmpty else {
161+
Logger.error(message: "mixpanel cannot clear an empty timed event")
162+
return updatedTimedEvents
163+
}
164+
updatedTimedEvents.removeValue(forKey: event)
165+
return updatedTimedEvents
166+
}
157167
}

0 commit comments

Comments
 (0)