openreplay/frontend/app/player/mobile/managers/TouchManager.ts
2024-07-16 17:32:54 +02:00

49 lines
1.6 KiB
TypeScript

import {MOUSE_TRAIL} from "App/constants/storageKeys";
import ListWalker from 'Player/common/ListWalker';
import MouseTrail, { SwipeEvent } from 'Player/web/addons/MouseTrail';
import type {IosClickEvent, IosSwipeEvent} from 'Player/web/messages';
import {MType} from "Player/web/messages";
import type Screen from 'Player/web/Screen/Screen';
export default class TouchManager extends ListWalker<IosClickEvent | IosSwipeEvent> {
private touchTrail: MouseTrail | undefined;
private readonly removeTouchTrail: boolean = false;
constructor(private screen: Screen) {
super();
const canvas = document.createElement('canvas');
canvas.id = 'openreplay-touch-trail';
// canvas.className = styles.canvas;
this.removeTouchTrail = localStorage.getItem(MOUSE_TRAIL) === 'false'
if (!this.removeTouchTrail) {
this.touchTrail = new MouseTrail(canvas, true)
}
this.screen.overlay.appendChild(canvas);
this.touchTrail?.createContext();
}
public updateDimensions({ width, height }: { width: number; height: number; }) {
return this.touchTrail?.resizeCanvas(width, height);
}
public move(t: number) {
const lastTouch = this.moveGetLast(t)
if (!!lastTouch) {
if (lastTouch.tp === MType.MobileSwipeEvent) {
return
// not using swipe rn
// this.touchTrail?.createSwipeTrail({
// x: lastTouch.x,
// y: lastTouch.y,
// direction: lastTouch.direction
// } as SwipeEvent)
} else {
this.screen.cursor.move(lastTouch)
this.screen.cursor.mobileClick()
}
}
}
}