diff --git a/tracker/tracker-assist/package.json b/tracker/tracker-assist/package.json index 358bc3b40..63eb23944 100644 --- a/tracker/tracker-assist/package.json +++ b/tracker/tracker-assist/package.json @@ -1,7 +1,7 @@ { "name": "@openreplay/tracker-assist", "description": "Tracker plugin for screen assistance through the WebRTC", - "version": "3.5.2", + "version": "3.5.3", "keywords": [ "WebRTC", "assistance", diff --git a/tracker/tracker-assist/src/Assist.ts b/tracker/tracker-assist/src/Assist.ts index 96f3f1997..55ace11a4 100644 --- a/tracker/tracker-assist/src/Assist.ts +++ b/tracker/tracker-assist/src/Assist.ts @@ -14,9 +14,12 @@ import type { Options as ConfirmOptions } from './ConfirmWindow.js'; //@ts-ignore peerjs hack for webpack5 (?!) TODO: ES/node modules; Peer = Peer.default || Peer; +type BehinEndCallback = () => ((()=>{}) | void) + export interface Options { - onAgentConnect: () => ((()=>{}) | void), - onCallStart: () => ((()=>{}) | void), + onAgentConnect: BehinEndCallback, + onCallStart: BehinEndCallback, + onRemoteControlStart: BehinEndCallback, session_calling_peer_key: string, session_control_peer_key: string, callConfirm: ConfirmOptions, @@ -63,6 +66,7 @@ export default class Assist { config: null, onCallStart: ()=>{}, onAgentConnect: ()=>{}, + onRemoteControlStart: ()=>{}, callConfirm: {}, controlConfirm: {}, // TODO: clear options passing/merging/overriting }, @@ -157,12 +161,16 @@ export default class Assist { } }).catch() } + let onRemoteControlStop: (()=>void) | null = null const grantControl = (id: string) => { controllingAgent = id mouse.mount() + onRemoteControlStop = this.options.onRemoteControlStart() || null sessionStorage.setItem(this.options.session_control_peer_key, id) } const releaseControl = () => { + typeof onRemoteControlStop === 'function' && onRemoteControlStop() + onRemoteControlStop = null confirmRC?.remove() mouse.remove() controllingAgent = null