File tree Expand file tree Collapse file tree 3 files changed +39
-0
lines changed
MixpanelDemo/MixpanelDemoTests Expand file tree Collapse file tree 3 files changed +39
-0
lines changed Original file line number Diff line number Diff 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( ) {
Original file line number Diff line number Diff 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.
Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments