openreplay/tracker/tracker-reactnative/ios/ReactNativeORTouchViewManager.swift
Delirium 50c63a23e8
Tn tracker android (#2289)
* change(android): added android support

* change(git): Remove .yarn from version control

* change(git): Remove .yarn from version control

* change(rn-tracker): android view fixes

* change(tracker): yarn

* fix rn: fix ios config for react native

* ios source changes

* change(lib): tracker manager

* change(lib): layout fixes

* change(lib): layout fixes

* fix default api endp

---------

Co-authored-by: Shekar Siri <sshekarsiri@gmail.com>
2024-06-21 14:57:49 +02:00

44 lines
1.3 KiB
Swift

import Openreplay
@objc(RnTrackerTouchViewManager)
class RnTrackerTouchViewManager: RCTViewManager {
override func view() -> (RntrackerTouchView) {
return RntrackerTouchView()
}
@objc override static func requiresMainQueueSetup() -> Bool {
return true
}
}
class RntrackerTouchView : UIView {
var touchStart: CGPoint?
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
if let touch = touches.first {
touchStart = touch.location(in: self)
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesEnded(touches, with: event)
guard let touch = touches.first, let startPoint = touchStart else { return }
let endPoint = touch.location(in: self)
let deltaX = endPoint.x - startPoint.x
let deltaY = endPoint.y - startPoint.y
let distance = sqrt(deltaX * deltaX + deltaY * deltaY)
if distance > 10 {
let direction = abs(deltaX) > abs(deltaY) ? (deltaX > 0 ? "right" : "left") : (deltaY > 0 ? "down" : "up")
Analytics.shared.sendSwipe(label: "React-Native View", x: UInt64(endPoint.x), y: UInt64(endPoint.x), direction: direction)
} else {
Analytics.shared.sendClick(label: "React-Native View", x: UInt64(endPoint.x), y: UInt64(endPoint.y))
}
}
}