diff --git a/Desktop.Core/Models/Viewer.cs b/Desktop.Core/Models/Viewer.cs index 8adfb733..648763d3 100644 --- a/Desktop.Core/Models/Viewer.cs +++ b/Desktop.Core/Models/Viewer.cs @@ -15,10 +15,9 @@ namespace Remotely.Desktop.Core.Models { public class Viewer : IDisposable { + private readonly int defaultImageQuality = 60; private int imageQuality; private DateTimeOffset lastQualityAdjustment; - private readonly int defaultImageQuality = 60; - public Viewer(CasterSocket casterSocket, IScreenCapturer screenCapturer, IClipboardService clipboardService, @@ -68,6 +67,30 @@ namespace Remotely.Desktop.Core.Models } public bool IsConnected => CasterSocket.IsConnected; + public bool IsStalled + { + get + { + return PendingSentFrames.TryPeek(out var result) && DateTimeOffset.Now - result > TimeSpan.FromSeconds(15); + } + } + + public bool IsUsingWebRtc + { + get + { + return RtcSession?.IsPeerConnected == true && RtcSession?.IsDataChannelOpen == true; + } + } + + public bool IsUsingWebRtcVideo + { + get + { + return RtcSession?.IsPeerConnected == true && RtcSession?.IsVideoTrackConnected == true; + } + } + public string Name { get; set; } public ConcurrentQueue PendingSentFrames { get; } = new ConcurrentQueue(); public WebRtcSession RtcSession { get; set; } @@ -106,31 +129,6 @@ namespace Remotely.Desktop.Core.Models Logger.Write(ex); } } - - public bool IsUsingWebRtcVideo - { - get - { - return RtcSession?.IsPeerConnected == true && RtcSession?.IsVideoTrackConnected == true; - } - } - - public bool IsStalled - { - get - { - return PendingSentFrames.TryPeek(out var result) && DateTimeOffset.Now - result > TimeSpan.FromSeconds(15); - } - } - - public bool IsUsingWebRtc - { - get - { - return RtcSession?.IsPeerConnected == true && RtcSession?.IsDataChannelOpen == true; - } - } - public async Task SendAudioSample(byte[] audioSample) { await SendToViewer(() => RtcSession.SendAudioSample(audioSample), @@ -203,7 +201,7 @@ namespace Remotely.Desktop.Core.Models ImageQuality = defaultImageQuality; } } - + TaskHelper.DelayUntil(() => PendingSentFrames.Count < 5 && ( !PendingSentFrames.TryPeek(out var result) || DateTimeOffset.Now - result < TimeSpan.FromSeconds(1) @@ -211,6 +209,10 @@ namespace Remotely.Desktop.Core.Models TimeSpan.MaxValue); } + public void ToggleWebRtcVideo(bool toggleOn) + { + RtcSession.ToggleWebRtcVideo(toggleOn); + } private async void AudioCapturer_AudioSampleReady(object sender, byte[] sample) { await SendAudioSample(sample); diff --git a/Desktop.Core/Services/CasterSocket.cs b/Desktop.Core/Services/CasterSocket.cs index 48f10598..e8f5deba 100644 --- a/Desktop.Core/Services/CasterSocket.cs +++ b/Desktop.Core/Services/CasterSocket.cs @@ -435,6 +435,14 @@ namespace Remotely.Desktop.Core.Services } }); + Connection.On("ToggleWebRtcVideo", (bool toggleOn, string viewerID) => + { + if (conductor.Viewers.TryGetValue(viewerID, out var viewer)) + { + viewer.ToggleWebRtcVideo(toggleOn); + } + }); + Connection.On("TouchDown", (string viewerID) => { if (conductor.Viewers.TryGetValue(viewerID, out var viewer) && viewer.HasControl) diff --git a/Desktop.Core/Services/RtcMessageHandler.cs b/Desktop.Core/Services/RtcMessageHandler.cs index a7644b20..ae83139c 100644 --- a/Desktop.Core/Services/RtcMessageHandler.cs +++ b/Desktop.Core/Services/RtcMessageHandler.cs @@ -111,6 +111,9 @@ namespace Remotely.Desktop.Core.Services case BinaryDtoType.ToggleBlockInput: ToggleBlockInput(message); break; + case BinaryDtoType.ToggleWebRtcVideo: + ToggleWebRtcVideo(message); + break; case BinaryDtoType.ClipboardTransfer: ClipboardTransfer(message); break; @@ -180,6 +183,7 @@ namespace Remotely.Desktop.Core.Services } } } + private void KeyDown(byte[] message) { var dto = MessagePackSerializer.Deserialize(message); @@ -260,6 +264,7 @@ namespace Remotely.Desktop.Core.Services { KeyboardMouseInput.SetKeyStatesUp(); } + private void Tap(byte[] message) { var dto = MessagePackSerializer.Deserialize(message); @@ -278,5 +283,11 @@ namespace Remotely.Desktop.Core.Services var dto = MessagePackSerializer.Deserialize(message); KeyboardMouseInput.ToggleBlockInput(dto.ToggleOn); } + + private void ToggleWebRtcVideo(byte[] message) + { + var dto = MessagePackSerializer.Deserialize(message); + Viewer.ToggleWebRtcVideo(dto.ToggleOn); + } } } diff --git a/Desktop.Core/Services/WebRtcSession.cs b/Desktop.Core/Services/WebRtcSession.cs index 4c27aec5..b756c218 100644 --- a/Desktop.Core/Services/WebRtcSession.cs +++ b/Desktop.Core/Services/WebRtcSession.cs @@ -28,14 +28,6 @@ namespace Remotely.Desktop.Core.Services public ulong CurrentBuffer { get; private set; } public bool IsDataChannelOpen => CaptureChannel?.State == DataChannel.ChannelState.Open; public bool IsPeerConnected => PeerSession?.IsConnected == true; - private DataChannel CaptureChannel { get; set; } - private IceServerModel[] IceServers { get; set; } - private PeerConnection PeerSession { get; set; } - private IRtcMessageHandler RtcMessageHandler { get; } - private Transceiver Transceiver { get; set; } - private ExternalVideoTrackSource VideoSource { get; set; } - private Viewer Viewer { get; } - public bool IsVideoTrackConnected { get @@ -44,6 +36,13 @@ namespace Remotely.Desktop.Core.Services } } + private DataChannel CaptureChannel { get; set; } + private IceServerModel[] IceServers { get; set; } + private PeerConnection PeerSession { get; set; } + private IRtcMessageHandler RtcMessageHandler { get; } + private Transceiver Transceiver { get; set; } + private ExternalVideoTrackSource VideoSource { get; set; } + private Viewer Viewer { get; } public void AddIceCandidate(string sdpMid, int sdpMlineIndex, string candidate) { PeerSession.AddIceCandidate(new IceCandidate() @@ -106,10 +105,6 @@ namespace Remotely.Desktop.Core.Services VideoSource = ExternalVideoTrackSource.CreateFromArgb32Callback(GetCaptureFrame); Transceiver = PeerSession.AddTransceiver(MediaKind.Video); - Transceiver.LocalVideoTrack = LocalVideoTrack.CreateFromSource(VideoSource, new LocalVideoTrackInitConfig() - { - trackName = "ScreenCapture" - }); PeerSession.CreateOffer(); } @@ -195,12 +190,28 @@ namespace Remotely.Desktop.Core.Services } } + public void ToggleWebRtcVideo(bool toggleOn) + { + if (Transceiver?.LocalVideoTrack != null) + { + Transceiver.LocalVideoTrack.Dispose(); + Transceiver.LocalVideoTrack = null; + } + + if (toggleOn) + { + Transceiver.LocalVideoTrack = LocalVideoTrack.CreateFromSource(VideoSource, new LocalVideoTrackInitConfig() + { + trackName = "ScreenCapture" + }); + } + } + private async void CaptureChannel_MessageReceived(byte[] obj) { Logger.Debug($"DataChannel message received. Size: {obj.Length}"); await RtcMessageHandler.ParseMessage(obj); } - private async void CaptureChannel_StateChanged() { Logger.Debug($"DataChannel state changed. New State: {CaptureChannel.State}"); diff --git a/Server/Hubs/RCBrowserHub.cs b/Server/Hubs/RCBrowserHub.cs index f7e71563..2294a7a5 100644 --- a/Server/Hubs/RCBrowserHub.cs +++ b/Server/Hubs/RCBrowserHub.cs @@ -302,6 +302,11 @@ namespace Remotely.Server.Hubs { return CasterHubContext.Clients.Client(ScreenCasterID).SendAsync("ToggleBlockInput", toggleOn, Context.ConnectionId); } + public Task SendToggleWebRtcVideo(bool toggleOn) + { + return CasterHubContext.Clients.Client(ScreenCasterID).SendAsync("ToggleWebRtcVideo", toggleOn, Context.ConnectionId); + } + public Task Tap(double percentX, double percentY) { return CasterHubContext.Clients.Client(ScreenCasterID).SendAsync("Tap", percentX, percentY, Context.ConnectionId); diff --git a/Server/Pages/RemoteControl.cshtml b/Server/Pages/RemoteControl.cshtml index d3aef23b..705a886c 100644 --- a/Server/Pages/RemoteControl.cshtml +++ b/Server/Pages/RemoteControl.cshtml @@ -94,14 +94,35 @@
- - + + + + - - - - - + + + + + + + + + +
@@ -110,9 +131,21 @@
- - - + + + + + + +
@@ -121,8 +154,13 @@
- - + + +
diff --git a/Server/wwwroot/scripts/Enums/BinaryDtoType.js b/Server/wwwroot/scripts/Enums/BinaryDtoType.js index 16e5211e..33595b32 100644 --- a/Server/wwwroot/scripts/Enums/BinaryDtoType.js +++ b/Server/wwwroot/scripts/Enums/BinaryDtoType.js @@ -26,5 +26,6 @@ export var BinaryDtoType; BinaryDtoType[BinaryDtoType["WindowsSessions"] = 23] = "WindowsSessions"; BinaryDtoType[BinaryDtoType["SetKeyStatesUp"] = 24] = "SetKeyStatesUp"; BinaryDtoType[BinaryDtoType["FrameReceived"] = 25] = "FrameReceived"; + BinaryDtoType[BinaryDtoType["ToggleWebRtcVideo"] = 26] = "ToggleWebRtcVideo"; })(BinaryDtoType || (BinaryDtoType = {})); //# sourceMappingURL=BinaryDtoType.js.map \ No newline at end of file diff --git a/Server/wwwroot/scripts/Enums/BinaryDtoType.js.map b/Server/wwwroot/scripts/Enums/BinaryDtoType.js.map index c070d754..a436f84f 100644 --- a/Server/wwwroot/scripts/Enums/BinaryDtoType.js.map +++ b/Server/wwwroot/scripts/Enums/BinaryDtoType.js.map @@ -1 +1 @@ -{"version":3,"file":"BinaryDtoType.js","sourceRoot":"","sources":["BinaryDtoType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aA2BX;AA3BD,WAAY,aAAa;IACrB,iEAAgB,CAAA;IAChB,6DAAc,CAAA;IACd,6DAAc,CAAA;IACd,+DAAe,CAAA;IACf,mEAAiB,CAAA;IACjB,+DAAe,CAAA;IACf,iEAAgB,CAAA;IAChB,iEAAgB,CAAA;IAChB,2DAAa,CAAA;IACb,2DAAa,CAAA;IACb,wDAAY,CAAA;IACZ,gDAAQ,CAAA;IACR,8DAAe,CAAA;IACf,wDAAY,CAAA;IACZ,oDAAU,CAAA;IACV,8DAAe,CAAA;IACf,4EAAsB,CAAA;IACtB,gEAAgB,CAAA;IAChB,0EAAqB,CAAA;IACrB,4EAAsB,CAAA;IACtB,0DAAa,CAAA;IACb,oEAAkB,CAAA;IAClB,kDAAS,CAAA;IACT,wEAAoB,CAAA;IACpB,sEAAmB,CAAA;IACnB,oEAAkB,CAAA;AACtB,CAAC,EA3BW,aAAa,KAAb,aAAa,QA2BxB"} \ No newline at end of file +{"version":3,"file":"BinaryDtoType.js","sourceRoot":"","sources":["BinaryDtoType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aA4BX;AA5BD,WAAY,aAAa;IACrB,iEAAgB,CAAA;IAChB,6DAAc,CAAA;IACd,6DAAc,CAAA;IACd,+DAAe,CAAA;IACf,mEAAiB,CAAA;IACjB,+DAAe,CAAA;IACf,iEAAgB,CAAA;IAChB,iEAAgB,CAAA;IAChB,2DAAa,CAAA;IACb,2DAAa,CAAA;IACb,wDAAY,CAAA;IACZ,gDAAQ,CAAA;IACR,8DAAe,CAAA;IACf,wDAAY,CAAA;IACZ,oDAAU,CAAA;IACV,8DAAe,CAAA;IACf,4EAAsB,CAAA;IACtB,gEAAgB,CAAA;IAChB,0EAAqB,CAAA;IACrB,4EAAsB,CAAA;IACtB,0DAAa,CAAA;IACb,oEAAkB,CAAA;IAClB,kDAAS,CAAA;IACT,wEAAoB,CAAA;IACpB,sEAAmB,CAAA;IACnB,oEAAkB,CAAA;IAClB,4EAAsB,CAAA;AAC1B,CAAC,EA5BW,aAAa,KAAb,aAAa,QA4BxB"} \ No newline at end of file diff --git a/Server/wwwroot/scripts/Enums/BinaryDtoType.ts b/Server/wwwroot/scripts/Enums/BinaryDtoType.ts index 4061c6b7..b72cb17a 100644 --- a/Server/wwwroot/scripts/Enums/BinaryDtoType.ts +++ b/Server/wwwroot/scripts/Enums/BinaryDtoType.ts @@ -24,5 +24,6 @@ File = 22, WindowsSessions = 23, SetKeyStatesUp = 24, - FrameReceived = 25 + FrameReceived = 25, + ToggleWebRtcVideo = 26 } \ No newline at end of file diff --git a/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.js b/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.js index 04686fd3..5295dd0b 100644 --- a/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.js +++ b/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.js @@ -1,4 +1,4 @@ -import { AudioButton, ChangeScreenButton, HorizontalBars, ScreenSelectBar, ClipboardTransferButton, ClipboardTransferBar, TypeClipboardButton, ShowMessage, ConnectButton, CtrlAltDelButton, DisconnectButton, FileTransferButton, FileTransferInput, FitToScreenButton, ScreenViewer, BlockInputButton, InviteButton, KeyboardButton, TouchKeyboardTextArea, MenuFrame, MenuButton, QualityButton, QualityBar, QualitySlider, AutoQualityAdjustCheckBox, ScreenViewerWrapper, WindowsSessionSelect, RecordSessionButton, DownloadRecordingButton, VideoScreenViewer } from "./UI.js"; +import { AudioButton, ChangeScreenButton, HorizontalBars, ScreenSelectBar, ClipboardTransferButton, ClipboardTransferBar, TypeClipboardButton, ShowMessage, ConnectButton, CtrlAltDelButton, DisconnectButton, FileTransferButton, FileTransferInput, FitToScreenButton, ScreenViewer, BlockInputButton, InviteButton, KeyboardButton, TouchKeyboardTextArea, MenuFrame, MenuButton, QualityButton, QualityBar, QualitySlider, AutoQualityAdjustCheckBox, ScreenViewerWrapper, WindowsSessionSelect, RecordSessionButton, DownloadRecordingButton, VideoScreenViewer, StreamVideoButton } from "./UI.js"; import { Sound } from "../Sound.js"; import { MainRc } from "./Main.js"; import { UploadFiles } from "./FileUploader.js"; @@ -95,9 +95,8 @@ export function ApplyInputHandlers() { } }); BlockInputButton.addEventListener("click", (ev) => { - var button = ev.currentTarget; - button.classList.toggle("toggled"); - if (button.classList.contains("toggled")) { + BlockInputButton.classList.toggle("toggled"); + if (BlockInputButton.classList.contains("toggled")) { MainRc.MessageSender.SendToggleBlockInput(true); } else { @@ -150,6 +149,21 @@ export function ApplyInputHandlers() { QualitySlider.addEventListener("change", (ev) => { MainRc.MessageSender.SendQualityChange(Number(QualitySlider.value)); }); + StreamVideoButton.addEventListener("click", (ev) => { + StreamVideoButton.classList.toggle("toggled"); + if (StreamVideoButton.classList.contains("toggled")) { + MainRc.MessageSender.SendToggleWebRtcVideo(true); + VideoScreenViewer.removeAttribute("hidden"); + ScreenViewer.setAttribute("hidden", "hidden"); + QualityButton.setAttribute("hidden", "hidden"); + } + else { + MainRc.MessageSender.SendToggleWebRtcVideo(false); + ScreenViewer.removeAttribute("hidden"); + QualityButton.removeAttribute("hidden"); + VideoScreenViewer.setAttribute("hidden", "hidden"); + } + }); AutoQualityAdjustCheckBox.addEventListener("change", ev => { MainRc.MessageSender.SendAutoQualityAdjust(AutoQualityAdjustCheckBox.checked); }); diff --git a/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.js.map b/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.js.map index eb3f9ffb..3f7517d7 100644 --- a/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.js.map +++ b/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.js.map @@ -1 +1 @@ -{"version":3,"file":"InputEventHandlers.js","sourceRoot":"","sources":["InputEventHandlers.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"InputEventHandlers.js","sourceRoot":"","sources":["InputEventHandlers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.ts b/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.ts index 01ad0e39..6b3058b9 100644 --- a/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.ts +++ b/Server/wwwroot/scripts/RemoteControl/InputEventHandlers.ts @@ -1,519 +1,534 @@ -import { - AudioButton, - ChangeScreenButton, - HorizontalBars, - ScreenSelectBar, - ClipboardTransferButton, - ClipboardTransferBar, - TypeClipboardButton, - ShowMessage, - ConnectButton, - CtrlAltDelButton, - DisconnectButton, - FileTransferButton, - FileTransferInput, - FitToScreenButton, - ScreenViewer, - BlockInputButton, - InviteButton, - KeyboardButton, - TouchKeyboardTextArea, - MenuFrame, - MenuButton, - QualityButton, - QualityBar, - QualitySlider, - AutoQualityAdjustCheckBox, - ScreenViewerWrapper, - WindowsSessionSelect, - RecordSessionButton, - DownloadRecordingButton, - VideoScreenViewer -} from "./UI.js"; -import { Sound } from "../Sound.js"; -import { MainRc } from "./Main.js"; -import { Point } from "../Models/Point.js"; -import { UploadFiles } from "./FileUploader.js"; -import { RemoteControlMode } from "../Enums/RemoteControlMode.js"; -import { GetDistanceBetween } from "../Utilities.js"; - -var lastPointerMove = Date.now(); -var isDragging: boolean; -var currentPointerDevice: string; -var currentTouchCount: number; -var cancelNextViewerClick: boolean; -var isPinchZooming: boolean; -var startPinchPoint1: Point; -var startPinchPoint2: Point; -var lastPinchDistance: number; -var isMenuButtonDragging: boolean; -var startMenuDraggingY: number; -var startLongPressTimeout: number; -var lastPinchCenterX: number; -var lastPinchCenterY: number; - -export function ApplyInputHandlers() { - AudioButton.addEventListener("click", (ev) => { - AudioButton.classList.toggle("toggled"); - var toggleOn = AudioButton.classList.contains("toggled"); - if (toggleOn) { - Sound.Init(); - } - MainRc.MessageSender.SendToggleAudio(toggleOn); - }); - ChangeScreenButton.addEventListener("click", (ev) => { - closeAllHorizontalBars("screenSelectBar"); - ScreenSelectBar.classList.toggle("open"); - }); - ClipboardTransferButton.addEventListener("click", (ev) => { - closeAllHorizontalBars("clipboardTransferBar"); - ClipboardTransferBar.classList.toggle("open"); - }); - TypeClipboardButton.addEventListener("click", (ev) => { - if (!navigator.clipboard.readText) { - alert("Clipboard access isn't supported on this browser."); - return; - } - - navigator.clipboard.readText().then(text => { - MainRc.MessageSender.SendClipboardTransfer(text, true); - ShowMessage("Clipboard sent!"); - }, reason => { - alert("Unable to read clipboard. Please check your permissions."); - console.log("Unable to read clipboard. Reason: " + reason); - }); - }); - ConnectButton.addEventListener("click", (ev) => { - MainRc.ConnectToClient(); - }); - CtrlAltDelButton.addEventListener("click", (ev) => { - if (!MainRc.ServiceID) { - ShowMessage("Not available for this session."); - return; - } - closeAllHorizontalBars(null); - MainRc.MessageSender.SendCtrlAltDel(); - }); - DisconnectButton.addEventListener("click", (ev) => { - ConnectButton.removeAttribute("disabled"); - MainRc.RCHubConnection.Connection.stop(); - if (location.search.includes("fromApi=true")) { - window.close(); - } - }); - document.querySelectorAll("#sessionIDInput, #nameInput").forEach(x => { - x.addEventListener("keypress", (ev: KeyboardEvent) => { - if (ev.key.toLowerCase() == "enter") { - MainRc.ConnectToClient(); - } - }) - }); - FileTransferButton.addEventListener("click", (ev) => { - FileTransferInput.click(); - }); - FileTransferInput.addEventListener("change", (ev) => { - UploadFiles(FileTransferInput.files); - }); - FitToScreenButton.addEventListener("click", (ev) => { - FitToScreenButton.classList.toggle("toggled"); - if (FitToScreenButton.classList.contains("toggled")) { - ScreenViewer.style.removeProperty("max-width"); - ScreenViewer.style.removeProperty("max-height"); - VideoScreenViewer.style.removeProperty("max-width"); - VideoScreenViewer.style.removeProperty("max-height"); - } - else { - ScreenViewer.style.maxWidth = "unset"; - ScreenViewer.style.maxHeight = "unset"; - VideoScreenViewer.style.maxWidth = "unset"; - VideoScreenViewer.style.maxHeight = "unset"; - } - }); - BlockInputButton.addEventListener("click", (ev) => { - var button = ev.currentTarget as HTMLButtonElement; - button.classList.toggle("toggled"); - if (button.classList.contains("toggled")) { - MainRc.MessageSender.SendToggleBlockInput(true); - } - else { - MainRc.MessageSender.SendToggleBlockInput(false); - } - }); - InviteButton.addEventListener("click", (ev) => { - var url = ""; - if (MainRc.Mode == RemoteControlMode.Normal) { - url = `${location.origin}${location.pathname}?sessionID=${MainRc.ClientID}`; - } - else { - url = `${location.origin}${location.pathname}?clientID=${MainRc.ClientID}&serviceID=${MainRc.ServiceID}`; - } - MainRc.ClipboardWatcher.SetClipboardText(url); - ShowMessage("Link copied to clipboard."); - }); - KeyboardButton.addEventListener("click", (ev) => { - closeAllHorizontalBars(null); - TouchKeyboardTextArea.focus(); - TouchKeyboardTextArea.setSelectionRange(TouchKeyboardTextArea.value.length, TouchKeyboardTextArea.value.length); - MenuFrame.classList.remove("open"); - MenuButton.classList.remove("open"); - }); - MenuButton.addEventListener("click", (ev) => { - if (isMenuButtonDragging) { - isMenuButtonDragging = false; - return; - } - MenuFrame.classList.toggle("open"); - MenuButton.classList.toggle("open"); - closeAllHorizontalBars(null); - }); - MenuButton.addEventListener("mousedown", (ev) => { - isMenuButtonDragging = false; - startMenuDraggingY = ev.clientY; - window.addEventListener("mousemove", moveMenuButton); - window.addEventListener("mouseup", removeMouseButtonWindowListeners); - window.addEventListener("mouseleave", removeMouseButtonWindowListeners); - }); - MenuButton.addEventListener("touchmove", (ev) => { - ev.preventDefault(); - ev.stopPropagation(); - MenuButton.style.top = `${ev.touches[0].clientY}px`; - }); - QualityButton.addEventListener("click", (ev) => { - closeAllHorizontalBars("qualityBar"); - QualityBar.classList.toggle("open"); - }) - QualitySlider.addEventListener("change", (ev) => { - MainRc.MessageSender.SendQualityChange(Number(QualitySlider.value)); - }); - AutoQualityAdjustCheckBox.addEventListener("change", ev => { - MainRc.MessageSender.SendAutoQualityAdjust(AutoQualityAdjustCheckBox.checked); - }); - - [ ScreenViewer, VideoScreenViewer ].forEach(viewer => { - viewer.addEventListener("pointermove", function (e: PointerEvent) { - currentPointerDevice = e.pointerType; - }); - - viewer.addEventListener("pointerdown", function (e: PointerEvent) { - currentPointerDevice = e.pointerType; - }); - - viewer.addEventListener("pointerenter", function (e: PointerEvent) { - currentPointerDevice = e.pointerType; - }); - - viewer.addEventListener("mousemove", function (e: MouseEvent) { - e.preventDefault(); - if (Date.now() - lastPointerMove < 25) { - return; - } - lastPointerMove = Date.now(); - var percentX = e.offsetX / viewer.clientWidth; - var percentY = e.offsetY / viewer.clientHeight; - MainRc.MessageSender.SendMouseMove(percentX, percentY); - }); - - - viewer.addEventListener("mousedown", function (e: MouseEvent) { - if (currentPointerDevice == "touch") { - return; - } - if (e.button != 0 && e.button != 2) { - return; - } - e.preventDefault(); - var percentX = e.offsetX / viewer.clientWidth; - var percentY = e.offsetY / viewer.clientHeight; - MainRc.MessageSender.SendMouseDown(e.button, percentX, percentY); - }); - - viewer.addEventListener("mouseup", function (e: MouseEvent) { - if (currentPointerDevice == "touch") { - return; - } - if (e.button != 0 && e.button != 2) { - return; - } - e.preventDefault(); - var percentX = e.offsetX / viewer.clientWidth; - var percentY = e.offsetY / viewer.clientHeight; - MainRc.MessageSender.SendMouseUp(e.button, percentX, percentY); - }); - - viewer.addEventListener("click", function (e: MouseEvent) { - if (cancelNextViewerClick) { - cancelNextViewerClick = false; - return; - } - if (currentPointerDevice == "mouse") { - e.preventDefault(); - e.stopPropagation(); - } - else if (currentPointerDevice == "touch" && currentTouchCount == 0) { - var percentX = e.offsetX / viewer.clientWidth; - var percentY = e.offsetY / viewer.clientHeight; - MainRc.MessageSender.SendTap(percentX, percentY); - } - }); - - viewer.addEventListener("touchstart", function (e: TouchEvent) { - currentTouchCount = e.touches.length; - - if (currentTouchCount == 1) { - startLongPressTimeout = window.setTimeout(() => { - var percentX = e.touches[0].pageX / viewer.clientWidth; - var percentY = e.touches[0].pageY / viewer.clientHeight; - MainRc.MessageSender.SendMouseDown(2, percentX, percentY); - MainRc.MessageSender.SendMouseUp(2, percentX, percentY); - }, 1000); - } - - if (currentTouchCount > 1) { - cancelNextViewerClick = true; - } - if (currentTouchCount == 2) { - startPinchPoint1 = { X: e.touches[0].pageX, Y: e.touches[0].pageY, IsEmpty: false }; - startPinchPoint2 = { X: e.touches[1].pageX, Y: e.touches[1].pageY, IsEmpty: false }; - lastPinchDistance = GetDistanceBetween(startPinchPoint1.X, - startPinchPoint1.Y, - startPinchPoint2.X, - startPinchPoint2.Y); - lastPinchCenterX = (startPinchPoint1.X + startPinchPoint2.X) / 2; - lastPinchCenterY = (startPinchPoint1.Y + startPinchPoint2.Y) / 2; - } - isDragging = false; - KeyboardButton.removeAttribute("hidden"); - var focusedInput = document.querySelector("input:focus") as HTMLInputElement; - if (focusedInput) { - focusedInput.blur(); - } - }); - - - - viewer.addEventListener("touchmove", function (e: TouchEvent) { - currentTouchCount = e.touches.length; - - clearTimeout(startLongPressTimeout); - - if (e.touches.length == 2) { - var pinchPoint1 = { - X: e.touches[0].pageX, - Y: e.touches[0].pageY, - IsEmpty: false - }; - var pinchPoint2 = { - X: e.touches[1].pageX, - Y: e.touches[1].pageY, - IsEmpty: false - }; - var pinchDistance = GetDistanceBetween(pinchPoint1.X, - pinchPoint1.Y, - pinchPoint2.X, - pinchPoint2.Y); - - - var pinchCenterX = (pinchPoint1.X + pinchPoint2.X) / 2; - var pinchCenterY = (pinchPoint1.Y + pinchPoint2.Y) / 2; - - ScreenViewerWrapper.scrollBy(lastPinchCenterX - pinchCenterX, - lastPinchCenterY - pinchCenterY); - - lastPinchCenterX = pinchCenterX; - lastPinchCenterY = pinchCenterY; - - if (Math.abs(pinchDistance - lastPinchDistance) > 5) { - isPinchZooming = true; - if (FitToScreenButton.classList.contains("toggled")) { - FitToScreenButton.click(); - } - - var currentWidth = viewer.clientWidth; - var currentHeight = viewer.clientHeight; - - var clientAdjustedScrollLeftPercent = (ScreenViewerWrapper.scrollLeft + (ScreenViewerWrapper.clientWidth * .5)) / ScreenViewerWrapper.scrollWidth; - var clientAdjustedScrollTopPercent = (ScreenViewerWrapper.scrollTop + (ScreenViewerWrapper.clientHeight * .5)) / ScreenViewerWrapper.scrollHeight; - - var currentWidthPercent = Number(viewer.style.width.slice(0, -1)); - var newWidthPercent = Math.max(100, (currentWidthPercent + (pinchDistance - lastPinchDistance) * (currentWidthPercent / 100))); - newWidthPercent = Math.min(5000, newWidthPercent); - viewer.style.width = String(newWidthPercent) + "%"; - - var heightChange = viewer.clientHeight - currentHeight; - var widthChange = viewer.clientWidth - currentWidth; - - var pinchAdjustX = pinchCenterX / window.innerWidth - .5; - var pinchAdjustY = pinchCenterY / window.innerHeight - .5; - - var scrollByX = widthChange * (clientAdjustedScrollLeftPercent + (pinchAdjustX * ScreenViewerWrapper.clientWidth / ScreenViewerWrapper.scrollWidth)); - var scrollByY = heightChange * (clientAdjustedScrollTopPercent + (pinchAdjustY * ScreenViewerWrapper.clientHeight / ScreenViewerWrapper.scrollHeight)); - - ScreenViewerWrapper.scrollBy(scrollByX, scrollByY); - - lastPinchDistance = pinchDistance; - } - return; - } - else if (isDragging) { - e.preventDefault(); - e.stopPropagation(); - var screenViewerLeft = viewer.getBoundingClientRect().left; - var screenViewerTop = viewer.getBoundingClientRect().top; - var pagePercentX = (e.touches[0].pageX - screenViewerLeft) / viewer.clientWidth; - var pagePercentY = (e.touches[0].pageY - screenViewerTop) / viewer.clientHeight; - MainRc.MessageSender.SendMouseMove(pagePercentX, pagePercentY); - } - }); - - viewer.addEventListener("touchend", function (e: TouchEvent) { - currentTouchCount = e.touches.length; - - clearTimeout(startLongPressTimeout); - - if (e.touches.length == 1 && !isPinchZooming) { - isDragging = true; - var percentX = (e.touches[0].pageX - viewer.getBoundingClientRect().left) / viewer.clientWidth; - var percentY = (e.touches[0].pageY - viewer.getBoundingClientRect().top) / viewer.clientHeight; - MainRc.MessageSender.SendMouseMove(percentX, percentY); - MainRc.MessageSender.SendMouseDown(0, percentX, percentY); - return; - } - - if (currentTouchCount == 0) { - cancelNextViewerClick = false; - isPinchZooming = false; - startPinchPoint1 = null; - startPinchPoint2 = null; - } - - if (isDragging) { - var percentX = (e.changedTouches[0].pageX - viewer.getBoundingClientRect().left) / viewer.clientWidth; - var percentY = (e.changedTouches[0].pageY - viewer.getBoundingClientRect().top) / viewer.clientHeight; - MainRc.MessageSender.SendMouseUp(0, percentX, percentY); - } - - isDragging = false; - }); - - - viewer.addEventListener("contextmenu", (ev) => { - ev.preventDefault(); - }); - - viewer.addEventListener("wheel", function (e: WheelEvent) { - e.preventDefault(); - MainRc.MessageSender.SendMouseWheel(e.deltaX, e.deltaY); - }); - - }); - - - TouchKeyboardTextArea.addEventListener("input", (ev) => { - if (TouchKeyboardTextArea.value.length == 1) { - MainRc.MessageSender.SendKeyPress("Backspace"); - } - else if (TouchKeyboardTextArea.value.endsWith("\n")) { - MainRc.MessageSender.SendKeyPress("Enter"); - } - else if (TouchKeyboardTextArea.value.endsWith(" ")) { - MainRc.MessageSender.SendKeyPress(" "); - } - else { - var input = TouchKeyboardTextArea.value.trim().substr(1); - for (var i = 0; i < input.length; i++) { - var character = input.charAt(i); - var sendShift = character.match(/[A-Z~!@#$%^&*()_+{}|<>?]/); - if (sendShift) { - MainRc.MessageSender.SendKeyDown("Shift"); - } - - MainRc.MessageSender.SendKeyPress(character); - - if (sendShift) { - MainRc.MessageSender.SendKeyUp("Shift"); - } - } - } - - window.setTimeout(() => { - TouchKeyboardTextArea.value = " #"; - TouchKeyboardTextArea.setSelectionRange(TouchKeyboardTextArea.value.length, TouchKeyboardTextArea.value.length); - }); - }); - WindowsSessionSelect.addEventListener("focus", () => { - MainRc.MessageSender.GetWindowsSessions(); - }); - WindowsSessionSelect.addEventListener("change", () => { - ShowMessage("Switching sessions..."); - MainRc.MessageSender.ChangeWindowsSession(Number(WindowsSessionSelect.selectedOptions[0].value)); - }); - RecordSessionButton.addEventListener("click", () => { - RecordSessionButton.classList.toggle("toggled"); - if (RecordSessionButton.classList.contains("toggled")) { - RecordSessionButton.innerHTML = `Stop `; - MainRc.SessionRecorder.Start(); - } - else { - RecordSessionButton.innerHTML = `Start `; - MainRc.SessionRecorder.Stop(); - } - }); - DownloadRecordingButton.addEventListener("click", () => { - MainRc.SessionRecorder.DownloadVideo(); - }); - - window.addEventListener("keydown", function (e) { - if (document.querySelector("input:focus") || document.querySelector("textarea:focus")) { - return; - } - e.preventDefault(); - MainRc.MessageSender.SendKeyDown(e.key); - }); - window.addEventListener("keyup", function (e) { - if (document.querySelector("input:focus") || document.querySelector("textarea:focus")) { - return; - } - e.preventDefault(); - MainRc.MessageSender.SendKeyUp(e.key); - }); - - window.addEventListener("blur", () => { - MainRc.MessageSender.SendSetKeyStatesUp(); - }); - - window.ondragover = function (e) { - e.preventDefault(); - e.dataTransfer.dropEffect = "copy"; - }; - window.ondrop = function (e) { - e.preventDefault(); - if (e.dataTransfer.files.length < 1) { - return; - } - UploadFiles(e.dataTransfer.files); - }; -} - -function closeAllHorizontalBars(exceptBarId: string) { - HorizontalBars.forEach(x => { - if (x.id != exceptBarId) { - x.classList.remove('open'); - } - }) -} - -function moveMenuButton(ev: MouseEvent) { - if (Math.abs(ev.clientY - startMenuDraggingY) > 5) { - if (ev.clientY < 0 || ev.clientY > window.innerHeight) { - return; - } - isMenuButtonDragging = true; - MenuButton.style.top = `${ev.clientY}px`; - } -} - -function removeMouseButtonWindowListeners(ev: MouseEvent) { - window.removeEventListener("mousemove", moveMenuButton); - window.removeEventListener("mouseup", removeMouseButtonWindowListeners); - window.removeEventListener("mouseleave", removeMouseButtonWindowListeners); +import { + AudioButton, + ChangeScreenButton, + HorizontalBars, + ScreenSelectBar, + ClipboardTransferButton, + ClipboardTransferBar, + TypeClipboardButton, + ShowMessage, + ConnectButton, + CtrlAltDelButton, + DisconnectButton, + FileTransferButton, + FileTransferInput, + FitToScreenButton, + ScreenViewer, + BlockInputButton, + InviteButton, + KeyboardButton, + TouchKeyboardTextArea, + MenuFrame, + MenuButton, + QualityButton, + QualityBar, + QualitySlider, + AutoQualityAdjustCheckBox, + ScreenViewerWrapper, + WindowsSessionSelect, + RecordSessionButton, + DownloadRecordingButton, + VideoScreenViewer, + StreamVideoButton +} from "./UI.js"; +import { Sound } from "../Sound.js"; +import { MainRc } from "./Main.js"; +import { Point } from "../Models/Point.js"; +import { UploadFiles } from "./FileUploader.js"; +import { RemoteControlMode } from "../Enums/RemoteControlMode.js"; +import { GetDistanceBetween } from "../Utilities.js"; + +var lastPointerMove = Date.now(); +var isDragging: boolean; +var currentPointerDevice: string; +var currentTouchCount: number; +var cancelNextViewerClick: boolean; +var isPinchZooming: boolean; +var startPinchPoint1: Point; +var startPinchPoint2: Point; +var lastPinchDistance: number; +var isMenuButtonDragging: boolean; +var startMenuDraggingY: number; +var startLongPressTimeout: number; +var lastPinchCenterX: number; +var lastPinchCenterY: number; + +export function ApplyInputHandlers() { + AudioButton.addEventListener("click", (ev) => { + AudioButton.classList.toggle("toggled"); + var toggleOn = AudioButton.classList.contains("toggled"); + if (toggleOn) { + Sound.Init(); + } + MainRc.MessageSender.SendToggleAudio(toggleOn); + }); + ChangeScreenButton.addEventListener("click", (ev) => { + closeAllHorizontalBars("screenSelectBar"); + ScreenSelectBar.classList.toggle("open"); + }); + ClipboardTransferButton.addEventListener("click", (ev) => { + closeAllHorizontalBars("clipboardTransferBar"); + ClipboardTransferBar.classList.toggle("open"); + }); + TypeClipboardButton.addEventListener("click", (ev) => { + if (!navigator.clipboard.readText) { + alert("Clipboard access isn't supported on this browser."); + return; + } + + navigator.clipboard.readText().then(text => { + MainRc.MessageSender.SendClipboardTransfer(text, true); + ShowMessage("Clipboard sent!"); + }, reason => { + alert("Unable to read clipboard. Please check your permissions."); + console.log("Unable to read clipboard. Reason: " + reason); + }); + }); + ConnectButton.addEventListener("click", (ev) => { + MainRc.ConnectToClient(); + }); + CtrlAltDelButton.addEventListener("click", (ev) => { + if (!MainRc.ServiceID) { + ShowMessage("Not available for this session."); + return; + } + closeAllHorizontalBars(null); + MainRc.MessageSender.SendCtrlAltDel(); + }); + DisconnectButton.addEventListener("click", (ev) => { + ConnectButton.removeAttribute("disabled"); + MainRc.RCHubConnection.Connection.stop(); + if (location.search.includes("fromApi=true")) { + window.close(); + } + }); + document.querySelectorAll("#sessionIDInput, #nameInput").forEach(x => { + x.addEventListener("keypress", (ev: KeyboardEvent) => { + if (ev.key.toLowerCase() == "enter") { + MainRc.ConnectToClient(); + } + }) + }); + FileTransferButton.addEventListener("click", (ev) => { + FileTransferInput.click(); + }); + FileTransferInput.addEventListener("change", (ev) => { + UploadFiles(FileTransferInput.files); + }); + FitToScreenButton.addEventListener("click", (ev) => { + FitToScreenButton.classList.toggle("toggled"); + if (FitToScreenButton.classList.contains("toggled")) { + ScreenViewer.style.removeProperty("max-width"); + ScreenViewer.style.removeProperty("max-height"); + VideoScreenViewer.style.removeProperty("max-width"); + VideoScreenViewer.style.removeProperty("max-height"); + } + else { + ScreenViewer.style.maxWidth = "unset"; + ScreenViewer.style.maxHeight = "unset"; + VideoScreenViewer.style.maxWidth = "unset"; + VideoScreenViewer.style.maxHeight = "unset"; + } + }); + BlockInputButton.addEventListener("click", (ev) => { + BlockInputButton.classList.toggle("toggled"); + if (BlockInputButton.classList.contains("toggled")) { + MainRc.MessageSender.SendToggleBlockInput(true); + } + else { + MainRc.MessageSender.SendToggleBlockInput(false); + } + }); + InviteButton.addEventListener("click", (ev) => { + var url = ""; + if (MainRc.Mode == RemoteControlMode.Normal) { + url = `${location.origin}${location.pathname}?sessionID=${MainRc.ClientID}`; + } + else { + url = `${location.origin}${location.pathname}?clientID=${MainRc.ClientID}&serviceID=${MainRc.ServiceID}`; + } + MainRc.ClipboardWatcher.SetClipboardText(url); + ShowMessage("Link copied to clipboard."); + }); + KeyboardButton.addEventListener("click", (ev) => { + closeAllHorizontalBars(null); + TouchKeyboardTextArea.focus(); + TouchKeyboardTextArea.setSelectionRange(TouchKeyboardTextArea.value.length, TouchKeyboardTextArea.value.length); + MenuFrame.classList.remove("open"); + MenuButton.classList.remove("open"); + }); + MenuButton.addEventListener("click", (ev) => { + if (isMenuButtonDragging) { + isMenuButtonDragging = false; + return; + } + MenuFrame.classList.toggle("open"); + MenuButton.classList.toggle("open"); + closeAllHorizontalBars(null); + }); + MenuButton.addEventListener("mousedown", (ev) => { + isMenuButtonDragging = false; + startMenuDraggingY = ev.clientY; + window.addEventListener("mousemove", moveMenuButton); + window.addEventListener("mouseup", removeMouseButtonWindowListeners); + window.addEventListener("mouseleave", removeMouseButtonWindowListeners); + }); + MenuButton.addEventListener("touchmove", (ev) => { + ev.preventDefault(); + ev.stopPropagation(); + MenuButton.style.top = `${ev.touches[0].clientY}px`; + }); + QualityButton.addEventListener("click", (ev) => { + closeAllHorizontalBars("qualityBar"); + QualityBar.classList.toggle("open"); + }) + QualitySlider.addEventListener("change", (ev) => { + MainRc.MessageSender.SendQualityChange(Number(QualitySlider.value)); + }); + StreamVideoButton.addEventListener("click", (ev) => { + StreamVideoButton.classList.toggle("toggled"); + if (StreamVideoButton.classList.contains("toggled")) { + MainRc.MessageSender.SendToggleWebRtcVideo(true); + VideoScreenViewer.removeAttribute("hidden"); + ScreenViewer.setAttribute("hidden", "hidden"); + QualityButton.setAttribute("hidden", "hidden"); + } + else { + MainRc.MessageSender.SendToggleWebRtcVideo(false); + ScreenViewer.removeAttribute("hidden"); + QualityButton.removeAttribute("hidden"); + VideoScreenViewer.setAttribute("hidden", "hidden"); + } + }); + AutoQualityAdjustCheckBox.addEventListener("change", ev => { + MainRc.MessageSender.SendAutoQualityAdjust(AutoQualityAdjustCheckBox.checked); + }); + + [ ScreenViewer, VideoScreenViewer ].forEach(viewer => { + viewer.addEventListener("pointermove", function (e: PointerEvent) { + currentPointerDevice = e.pointerType; + }); + + viewer.addEventListener("pointerdown", function (e: PointerEvent) { + currentPointerDevice = e.pointerType; + }); + + viewer.addEventListener("pointerenter", function (e: PointerEvent) { + currentPointerDevice = e.pointerType; + }); + + viewer.addEventListener("mousemove", function (e: MouseEvent) { + e.preventDefault(); + if (Date.now() - lastPointerMove < 25) { + return; + } + lastPointerMove = Date.now(); + var percentX = e.offsetX / viewer.clientWidth; + var percentY = e.offsetY / viewer.clientHeight; + MainRc.MessageSender.SendMouseMove(percentX, percentY); + }); + + + viewer.addEventListener("mousedown", function (e: MouseEvent) { + if (currentPointerDevice == "touch") { + return; + } + if (e.button != 0 && e.button != 2) { + return; + } + e.preventDefault(); + var percentX = e.offsetX / viewer.clientWidth; + var percentY = e.offsetY / viewer.clientHeight; + MainRc.MessageSender.SendMouseDown(e.button, percentX, percentY); + }); + + viewer.addEventListener("mouseup", function (e: MouseEvent) { + if (currentPointerDevice == "touch") { + return; + } + if (e.button != 0 && e.button != 2) { + return; + } + e.preventDefault(); + var percentX = e.offsetX / viewer.clientWidth; + var percentY = e.offsetY / viewer.clientHeight; + MainRc.MessageSender.SendMouseUp(e.button, percentX, percentY); + }); + + viewer.addEventListener("click", function (e: MouseEvent) { + if (cancelNextViewerClick) { + cancelNextViewerClick = false; + return; + } + if (currentPointerDevice == "mouse") { + e.preventDefault(); + e.stopPropagation(); + } + else if (currentPointerDevice == "touch" && currentTouchCount == 0) { + var percentX = e.offsetX / viewer.clientWidth; + var percentY = e.offsetY / viewer.clientHeight; + MainRc.MessageSender.SendTap(percentX, percentY); + } + }); + + viewer.addEventListener("touchstart", function (e: TouchEvent) { + currentTouchCount = e.touches.length; + + if (currentTouchCount == 1) { + startLongPressTimeout = window.setTimeout(() => { + var percentX = e.touches[0].pageX / viewer.clientWidth; + var percentY = e.touches[0].pageY / viewer.clientHeight; + MainRc.MessageSender.SendMouseDown(2, percentX, percentY); + MainRc.MessageSender.SendMouseUp(2, percentX, percentY); + }, 1000); + } + + if (currentTouchCount > 1) { + cancelNextViewerClick = true; + } + if (currentTouchCount == 2) { + startPinchPoint1 = { X: e.touches[0].pageX, Y: e.touches[0].pageY, IsEmpty: false }; + startPinchPoint2 = { X: e.touches[1].pageX, Y: e.touches[1].pageY, IsEmpty: false }; + lastPinchDistance = GetDistanceBetween(startPinchPoint1.X, + startPinchPoint1.Y, + startPinchPoint2.X, + startPinchPoint2.Y); + lastPinchCenterX = (startPinchPoint1.X + startPinchPoint2.X) / 2; + lastPinchCenterY = (startPinchPoint1.Y + startPinchPoint2.Y) / 2; + } + isDragging = false; + KeyboardButton.removeAttribute("hidden"); + var focusedInput = document.querySelector("input:focus") as HTMLInputElement; + if (focusedInput) { + focusedInput.blur(); + } + }); + + + + viewer.addEventListener("touchmove", function (e: TouchEvent) { + currentTouchCount = e.touches.length; + + clearTimeout(startLongPressTimeout); + + if (e.touches.length == 2) { + var pinchPoint1 = { + X: e.touches[0].pageX, + Y: e.touches[0].pageY, + IsEmpty: false + }; + var pinchPoint2 = { + X: e.touches[1].pageX, + Y: e.touches[1].pageY, + IsEmpty: false + }; + var pinchDistance = GetDistanceBetween(pinchPoint1.X, + pinchPoint1.Y, + pinchPoint2.X, + pinchPoint2.Y); + + + var pinchCenterX = (pinchPoint1.X + pinchPoint2.X) / 2; + var pinchCenterY = (pinchPoint1.Y + pinchPoint2.Y) / 2; + + ScreenViewerWrapper.scrollBy(lastPinchCenterX - pinchCenterX, + lastPinchCenterY - pinchCenterY); + + lastPinchCenterX = pinchCenterX; + lastPinchCenterY = pinchCenterY; + + if (Math.abs(pinchDistance - lastPinchDistance) > 5) { + isPinchZooming = true; + if (FitToScreenButton.classList.contains("toggled")) { + FitToScreenButton.click(); + } + + var currentWidth = viewer.clientWidth; + var currentHeight = viewer.clientHeight; + + var clientAdjustedScrollLeftPercent = (ScreenViewerWrapper.scrollLeft + (ScreenViewerWrapper.clientWidth * .5)) / ScreenViewerWrapper.scrollWidth; + var clientAdjustedScrollTopPercent = (ScreenViewerWrapper.scrollTop + (ScreenViewerWrapper.clientHeight * .5)) / ScreenViewerWrapper.scrollHeight; + + var currentWidthPercent = Number(viewer.style.width.slice(0, -1)); + var newWidthPercent = Math.max(100, (currentWidthPercent + (pinchDistance - lastPinchDistance) * (currentWidthPercent / 100))); + newWidthPercent = Math.min(5000, newWidthPercent); + viewer.style.width = String(newWidthPercent) + "%"; + + var heightChange = viewer.clientHeight - currentHeight; + var widthChange = viewer.clientWidth - currentWidth; + + var pinchAdjustX = pinchCenterX / window.innerWidth - .5; + var pinchAdjustY = pinchCenterY / window.innerHeight - .5; + + var scrollByX = widthChange * (clientAdjustedScrollLeftPercent + (pinchAdjustX * ScreenViewerWrapper.clientWidth / ScreenViewerWrapper.scrollWidth)); + var scrollByY = heightChange * (clientAdjustedScrollTopPercent + (pinchAdjustY * ScreenViewerWrapper.clientHeight / ScreenViewerWrapper.scrollHeight)); + + ScreenViewerWrapper.scrollBy(scrollByX, scrollByY); + + lastPinchDistance = pinchDistance; + } + return; + } + else if (isDragging) { + e.preventDefault(); + e.stopPropagation(); + var screenViewerLeft = viewer.getBoundingClientRect().left; + var screenViewerTop = viewer.getBoundingClientRect().top; + var pagePercentX = (e.touches[0].pageX - screenViewerLeft) / viewer.clientWidth; + var pagePercentY = (e.touches[0].pageY - screenViewerTop) / viewer.clientHeight; + MainRc.MessageSender.SendMouseMove(pagePercentX, pagePercentY); + } + }); + + viewer.addEventListener("touchend", function (e: TouchEvent) { + currentTouchCount = e.touches.length; + + clearTimeout(startLongPressTimeout); + + if (e.touches.length == 1 && !isPinchZooming) { + isDragging = true; + var percentX = (e.touches[0].pageX - viewer.getBoundingClientRect().left) / viewer.clientWidth; + var percentY = (e.touches[0].pageY - viewer.getBoundingClientRect().top) / viewer.clientHeight; + MainRc.MessageSender.SendMouseMove(percentX, percentY); + MainRc.MessageSender.SendMouseDown(0, percentX, percentY); + return; + } + + if (currentTouchCount == 0) { + cancelNextViewerClick = false; + isPinchZooming = false; + startPinchPoint1 = null; + startPinchPoint2 = null; + } + + if (isDragging) { + var percentX = (e.changedTouches[0].pageX - viewer.getBoundingClientRect().left) / viewer.clientWidth; + var percentY = (e.changedTouches[0].pageY - viewer.getBoundingClientRect().top) / viewer.clientHeight; + MainRc.MessageSender.SendMouseUp(0, percentX, percentY); + } + + isDragging = false; + }); + + + viewer.addEventListener("contextmenu", (ev) => { + ev.preventDefault(); + }); + + viewer.addEventListener("wheel", function (e: WheelEvent) { + e.preventDefault(); + MainRc.MessageSender.SendMouseWheel(e.deltaX, e.deltaY); + }); + + }); + + + TouchKeyboardTextArea.addEventListener("input", (ev) => { + if (TouchKeyboardTextArea.value.length == 1) { + MainRc.MessageSender.SendKeyPress("Backspace"); + } + else if (TouchKeyboardTextArea.value.endsWith("\n")) { + MainRc.MessageSender.SendKeyPress("Enter"); + } + else if (TouchKeyboardTextArea.value.endsWith(" ")) { + MainRc.MessageSender.SendKeyPress(" "); + } + else { + var input = TouchKeyboardTextArea.value.trim().substr(1); + for (var i = 0; i < input.length; i++) { + var character = input.charAt(i); + var sendShift = character.match(/[A-Z~!@#$%^&*()_+{}|<>?]/); + if (sendShift) { + MainRc.MessageSender.SendKeyDown("Shift"); + } + + MainRc.MessageSender.SendKeyPress(character); + + if (sendShift) { + MainRc.MessageSender.SendKeyUp("Shift"); + } + } + } + + window.setTimeout(() => { + TouchKeyboardTextArea.value = " #"; + TouchKeyboardTextArea.setSelectionRange(TouchKeyboardTextArea.value.length, TouchKeyboardTextArea.value.length); + }); + }); + WindowsSessionSelect.addEventListener("focus", () => { + MainRc.MessageSender.GetWindowsSessions(); + }); + WindowsSessionSelect.addEventListener("change", () => { + ShowMessage("Switching sessions..."); + MainRc.MessageSender.ChangeWindowsSession(Number(WindowsSessionSelect.selectedOptions[0].value)); + }); + RecordSessionButton.addEventListener("click", () => { + RecordSessionButton.classList.toggle("toggled"); + if (RecordSessionButton.classList.contains("toggled")) { + RecordSessionButton.innerHTML = `Stop `; + MainRc.SessionRecorder.Start(); + } + else { + RecordSessionButton.innerHTML = `Start `; + MainRc.SessionRecorder.Stop(); + } + }); + DownloadRecordingButton.addEventListener("click", () => { + MainRc.SessionRecorder.DownloadVideo(); + }); + + window.addEventListener("keydown", function (e) { + if (document.querySelector("input:focus") || document.querySelector("textarea:focus")) { + return; + } + e.preventDefault(); + MainRc.MessageSender.SendKeyDown(e.key); + }); + window.addEventListener("keyup", function (e) { + if (document.querySelector("input:focus") || document.querySelector("textarea:focus")) { + return; + } + e.preventDefault(); + MainRc.MessageSender.SendKeyUp(e.key); + }); + + window.addEventListener("blur", () => { + MainRc.MessageSender.SendSetKeyStatesUp(); + }); + + window.ondragover = function (e) { + e.preventDefault(); + e.dataTransfer.dropEffect = "copy"; + }; + window.ondrop = function (e) { + e.preventDefault(); + if (e.dataTransfer.files.length < 1) { + return; + } + UploadFiles(e.dataTransfer.files); + }; +} + +function closeAllHorizontalBars(exceptBarId: string) { + HorizontalBars.forEach(x => { + if (x.id != exceptBarId) { + x.classList.remove('open'); + } + }) +} + +function moveMenuButton(ev: MouseEvent) { + if (Math.abs(ev.clientY - startMenuDraggingY) > 5) { + if (ev.clientY < 0 || ev.clientY > window.innerHeight) { + return; + } + isMenuButtonDragging = true; + MenuButton.style.top = `${ev.clientY}px`; + } +} + +function removeMouseButtonWindowListeners(ev: MouseEvent) { + window.removeEventListener("mousemove", moveMenuButton); + window.removeEventListener("mouseup", removeMouseButtonWindowListeners); + window.removeEventListener("mouseleave", removeMouseButtonWindowListeners); } \ No newline at end of file diff --git a/Server/wwwroot/scripts/RemoteControl/MessageSender.js b/Server/wwwroot/scripts/RemoteControl/MessageSender.js index c50f0920..994e5e77 100644 --- a/Server/wwwroot/scripts/RemoteControl/MessageSender.js +++ b/Server/wwwroot/scripts/RemoteControl/MessageSender.js @@ -1,5 +1,5 @@ import { MainRc } from "./Main.js"; -import { CtrlAltDelDto, KeyDownDto, KeyPressDto, KeyUpDto, MouseDownDto, MouseMoveDto, MouseUpDto, MouseWheelDto, QualityChangeDto, SelectScreenDto, TapDto, AutoQualityAdjustDto, ToggleAudioDto, ToggleBlockInputDto, ClipboardTransferDto, FileDto, WindowsSessionsDto, GenericDto } from "./RtcDtos.js"; +import { CtrlAltDelDto, KeyDownDto, KeyPressDto, KeyUpDto, MouseDownDto, MouseMoveDto, MouseUpDto, MouseWheelDto, QualityChangeDto, SelectScreenDto, TapDto, AutoQualityAdjustDto, ToggleAudioDto, ToggleBlockInputDto, ClipboardTransferDto, FileDto, WindowsSessionsDto, GenericDto, ToggleWebRtcVideoDto } from "./RtcDtos.js"; import { CreateGUID, When } from "../Utilities.js"; import { FileTransferProgress } from "./UI.js"; import { BinaryDtoType } from "../Enums/BinaryDtoType.js"; @@ -75,6 +75,9 @@ export class MessageSender { SendToggleBlockInput(toggleOn) { this.SendToAgent(() => MainRc.RtcSession.SendDto(new ToggleBlockInputDto(toggleOn)), () => MainRc.RCHubConnection.SendToggleBlockInput(toggleOn)); } + SendToggleWebRtcVideo(toggleOn) { + this.SendToAgent(() => MainRc.RtcSession.SendDto(new ToggleWebRtcVideoDto(toggleOn)), () => MainRc.RCHubConnection.SendToggleWebRtcVideo(toggleOn)); + } SendClipboardTransfer(text, typeText) { this.SendToAgent(() => MainRc.RtcSession.SendDto(new ClipboardTransferDto(text, typeText)), () => MainRc.RCHubConnection.SendClipboardTransfer(text, typeText)); } diff --git a/Server/wwwroot/scripts/RemoteControl/MessageSender.js.map b/Server/wwwroot/scripts/RemoteControl/MessageSender.js.map index 0a9bb4cc..111ba16c 100644 --- a/Server/wwwroot/scripts/RemoteControl/MessageSender.js.map +++ b/Server/wwwroot/scripts/RemoteControl/MessageSender.js.map @@ -1 +1 @@ -{"version":3,"file":"MessageSender.js","sourceRoot":"","sources":["MessageSender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EACH,aAAa,EACb,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,OAAO,EACP,kBAAkB,EAClB,UAAU,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,OAAO,aAAa;IACtB,kBAAkB;QACd,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,kBAAkB,EAAE,CAAC,EACtE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,oBAAoB,CAAC,SAAiB;QAClC,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IACD,iBAAiB;QACb,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EACzF,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,gBAAgB,CAAC,WAAmB;QAChC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC,EAC9E,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,aAAa,CAAC,QAAgB,EAAE,QAAgB;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAClF,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,aAAa,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAgB;QAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAC1F,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAgB;QAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,EACxF,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,QAAgB,EAAE,QAAgB;QACtC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAC5E,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,cAAc,CAAC,MAAc,EAAE,MAAc;QACzC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC/E,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,WAAW,CAAC,GAAW;QACnB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,EACjE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,SAAS,CAAC,GAAW;QACjB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC/D,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,YAAY,CAAC,GAAW;QACpB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,EAClE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,kBAAkB;QACd,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,EAC1F,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,cAAc;QACV,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC,EACjE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAkB,EAAE,QAAgB;QAC/C,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QAE7B,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EACjG,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAEnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,KAAM,EAAE;YAEhD,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBACnC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACvG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5E,CAAC,EAAE,KAAK,IAAI,EAAE;gBACN,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC9G,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE;gBACP,oBAAoB,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;aACtD;SACJ;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EACjG,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,iBAAiB,CAAC,YAAoB;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAChF,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,qBAAqB,CAAC,IAAa;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAC5E,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,eAAe,CAAC,QAAiB;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,EAC1E,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAAA,CAAC;IACF,oBAAoB,CAAC,QAAiB;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAC/E,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,qBAAqB,CAAC,IAAY,EAAE,QAAiB;QACjD,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EACtF,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEO,iBAAiB;QACrB,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,IAAI,MAAM,CAAC;IAC/F,CAAC;IAEO,WAAW,CAAC,OAAmB,EAAE,aAAyB;QAC9D,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,IAAI,MAAM,EAAE;YACrF,OAAO,EAAE,CAAC;SACb;aACI,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,iBAAiB,EAAE;YAC1D,aAAa,EAAE,CAAC;SACnB;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAA2B,EAAE,aAAiC;QACzF,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC1B,MAAM,OAAO,EAAE,CAAC;SACnB;aACI;YACD,MAAM,aAAa,EAAE,CAAC;SACzB;IACL,CAAC;CAGJ"} \ No newline at end of file +{"version":3,"file":"MessageSender.js","sourceRoot":"","sources":["MessageSender.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/scripts/RemoteControl/MessageSender.ts b/Server/wwwroot/scripts/RemoteControl/MessageSender.ts index 764c3503..141312ef 100644 --- a/Server/wwwroot/scripts/RemoteControl/MessageSender.ts +++ b/Server/wwwroot/scripts/RemoteControl/MessageSender.ts @@ -17,7 +17,8 @@ import { ClipboardTransferDto, FileDto, WindowsSessionsDto, - GenericDto + GenericDto, + ToggleWebRtcVideoDto } from "./RtcDtos.js"; import { CreateGUID, When } from "../Utilities.js"; import { FileTransferProgress } from "./UI.js"; @@ -120,6 +121,10 @@ export class MessageSender { this.SendToAgent(() => MainRc.RtcSession.SendDto(new ToggleBlockInputDto(toggleOn)), () => MainRc.RCHubConnection.SendToggleBlockInput(toggleOn)); } + SendToggleWebRtcVideo(toggleOn: boolean) { + this.SendToAgent(() => MainRc.RtcSession.SendDto(new ToggleWebRtcVideoDto(toggleOn)), + () => MainRc.RCHubConnection.SendToggleWebRtcVideo(toggleOn)); + } SendClipboardTransfer(text: string, typeText: boolean) { this.SendToAgent(() => MainRc.RtcSession.SendDto(new ClipboardTransferDto(text, typeText)), () => MainRc.RCHubConnection.SendClipboardTransfer(text, typeText)); diff --git a/Server/wwwroot/scripts/RemoteControl/RCHubConnection.js b/Server/wwwroot/scripts/RemoteControl/RCHubConnection.js index fdb552d5..b0858ede 100644 --- a/Server/wwwroot/scripts/RemoteControl/RCHubConnection.js +++ b/Server/wwwroot/scripts/RemoteControl/RCHubConnection.js @@ -129,6 +129,9 @@ export class RCHubConnection { SendToggleBlockInput(toggleOn) { this.Connection.invoke("SendToggleBlockInput", toggleOn); } + SendToggleWebRtcVideo(toggleOn) { + this.Connection.invoke("SendToggleWebRtcVideo", toggleOn); + } SendClipboardTransfer(text, typeText) { this.Connection.invoke("SendClipboardTransfer", text, typeText); } diff --git a/Server/wwwroot/scripts/RemoteControl/RCHubConnection.js.map b/Server/wwwroot/scripts/RemoteControl/RCHubConnection.js.map index 8b60d6f8..f134ec91 100644 --- a/Server/wwwroot/scripts/RemoteControl/RCHubConnection.js.map +++ b/Server/wwwroot/scripts/RemoteControl/RCHubConnection.js.map @@ -1 +1 @@ -{"version":3,"file":"RCHubConnection.js","sourceRoot":"","sources":["RCHubConnection.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"RCHubConnection.js","sourceRoot":"","sources":["RCHubConnection.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/scripts/RemoteControl/RCHubConnection.ts b/Server/wwwroot/scripts/RemoteControl/RCHubConnection.ts index c1a50970..bd628fda 100644 --- a/Server/wwwroot/scripts/RemoteControl/RCHubConnection.ts +++ b/Server/wwwroot/scripts/RemoteControl/RCHubConnection.ts @@ -146,6 +146,9 @@ export class RCHubConnection { SendToggleBlockInput(toggleOn: boolean) { this.Connection.invoke("SendToggleBlockInput", toggleOn); } + SendToggleWebRtcVideo(toggleOn: boolean) { + this.Connection.invoke("SendToggleWebRtcVideo", toggleOn); + } SendClipboardTransfer(text: string, typeText: boolean) { this.Connection.invoke("SendClipboardTransfer", text, typeText); } diff --git a/Server/wwwroot/scripts/RemoteControl/RtcDtos.js b/Server/wwwroot/scripts/RemoteControl/RtcDtos.js index c68fc67d..e19850c1 100644 --- a/Server/wwwroot/scripts/RemoteControl/RtcDtos.js +++ b/Server/wwwroot/scripts/RemoteControl/RtcDtos.js @@ -112,6 +112,12 @@ export class ToggleBlockInputDto { this.ToggleOn = toggleOn; } } +export class ToggleWebRtcVideoDto { + constructor(toggleOn) { + this.DtoType = BinaryDtoType.ToggleWebRtcVideo; + this.ToggleOn = toggleOn; + } +} export class WindowsSessionsDto { constructor() { this.DtoType = BinaryDtoType.WindowsSessions; diff --git a/Server/wwwroot/scripts/RemoteControl/RtcDtos.js.map b/Server/wwwroot/scripts/RemoteControl/RtcDtos.js.map index 71966ef0..474ddeed 100644 --- a/Server/wwwroot/scripts/RemoteControl/RtcDtos.js.map +++ b/Server/wwwroot/scripts/RemoteControl/RtcDtos.js.map @@ -1 +1 @@ -{"version":3,"file":"RtcDtos.js","sourceRoot":"","sources":["RtcDtos.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"RtcDtos.js","sourceRoot":"","sources":["RtcDtos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D,MAAM,OAAO,oBAAoB;IAC7B,YAAY,IAAa;QAKzB,YAAO,GAAkB,aAAa,CAAC,iBAAiB,CAAC;QAJrD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CAIJ;AAsBD,MAAM,OAAO,oBAAoB;IAC7B,YAAY,IAAY,EAAE,QAAgB;QAO1C,YAAO,GAAkB,aAAa,CAAC,iBAAiB,CAAC;QANrD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAKJ;AAGD,MAAM,OAAO,aAAa;IAA1B;QACI,YAAO,GAAkB,aAAa,CAAC,UAAU,CAAC;IACtD,CAAC;CAAA;AASD,MAAM,OAAO,OAAO;IAChB,YAAY,MAAkB,EAC1B,QAAgB,EAChB,SAAiB,EACjB,SAAkB,EAClB,WAAoB;QAexB,YAAO,GAAkB,aAAa,CAAC,IAAI,CAAC;QAbxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CASJ;AAED,MAAM,OAAO,UAAU;IACnB,YAAY,IAAmB;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IACsB,CAAC;CAC3B;AAED,MAAM,OAAO,UAAU;IACnB,YAAY,GAAW;QAKvB,YAAO,GAAkB,aAAa,CAAC,OAAO,CAAC;QAJ3C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;CAIJ;AAED,MAAM,OAAO,WAAW;IACpB,YAAY,GAAW;QAKvB,YAAO,GAAkB,aAAa,CAAC,QAAQ,CAAC;QAJ5C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;CAIJ;AAED,MAAM,OAAO,QAAQ;IACjB,YAAY,GAAW;QAKvB,YAAO,GAAkB,aAAa,CAAC,KAAK,CAAC;QAJzC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;CAIJ;AAMD,MAAM,OAAO,YAAY;IACrB,YAAY,MAAc,EAAE,QAAgB,EAAE,QAAgB;QAS9D,YAAO,GAAkB,aAAa,CAAC,SAAS,CAAC;QAR7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAMJ;AAED,MAAM,OAAO,YAAY;IACrB,YAAY,QAAgB,EAAE,QAAgB;QAO9C,YAAO,GAAkB,aAAa,CAAC,SAAS,CAAC;QAN7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAKJ;AAED,MAAM,OAAO,UAAU;IACnB,YAAY,MAAc,EAAE,QAAgB,EAAE,QAAgB;QAS9D,YAAO,GAAkB,aAAa,CAAC,OAAO,CAAC;QAR3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAMJ;AAED,MAAM,OAAO,aAAa;IACtB,YAAY,MAAc,EAAE,MAAc;QAO1C,YAAO,GAAkB,aAAa,CAAC,UAAU,CAAC;QAN9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CAKJ;AAED,MAAM,OAAO,gBAAgB;IACzB,YAAY,YAAoB;QAKhC,YAAO,GAAkB,aAAa,CAAC,aAAa,CAAC;QAJjD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;CAIJ;AAYD,MAAM,OAAO,eAAe;IACxB,YAAY,WAAmB;QAK/B,YAAO,GAAkB,aAAa,CAAC,YAAY,CAAC;QAJhD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;CAIJ;AAED,MAAM,OAAO,MAAM;IACf,YAAY,QAAgB,EAAE,QAAgB;QAO9C,YAAO,GAAkB,aAAa,CAAC,GAAG,CAAC;QANvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAKJ;AAED,MAAM,OAAO,cAAc;IACvB,YAAY,QAAiB;QAK7B,YAAO,GAAkB,aAAa,CAAC,WAAW,CAAC;QAJ/C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAIJ;AAED,MAAM,OAAO,mBAAmB;IAC5B,YAAY,QAAiB;QAK7B,YAAO,GAAkB,aAAa,CAAC,gBAAgB,CAAC;QAJpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAIJ;AAED,MAAM,OAAO,oBAAoB;IAC7B,YAAY,QAAiB;QAK7B,YAAO,GAAkB,aAAa,CAAC,iBAAiB,CAAC;QAJrD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAIJ;AAGD,MAAM,OAAO,kBAAkB;IAA/B;QAGI,YAAO,GAAkB,aAAa,CAAC,eAAe,CAAC;IAC3D,CAAC;CAAA;AAED,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACnB,mDAAW,CAAA;IACX,2CAAO,CAAA;AACX,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,MAAM,OAAO,cAAc;CAK1B"} \ No newline at end of file diff --git a/Server/wwwroot/scripts/RemoteControl/RtcDtos.ts b/Server/wwwroot/scripts/RemoteControl/RtcDtos.ts index cf66532a..c59b7d56 100644 --- a/Server/wwwroot/scripts/RemoteControl/RtcDtos.ts +++ b/Server/wwwroot/scripts/RemoteControl/RtcDtos.ts @@ -221,6 +221,16 @@ export class ToggleBlockInputDto implements BinaryDto { DtoType: BinaryDtoType = BinaryDtoType.ToggleBlockInput; } +export class ToggleWebRtcVideoDto implements BinaryDto { + constructor(toggleOn: boolean) { + this.ToggleOn = toggleOn; + } + + ToggleOn: boolean; + DtoType: BinaryDtoType = BinaryDtoType.ToggleWebRtcVideo; +} + + export class WindowsSessionsDto implements BinaryDto { WindowsSessions: Array; diff --git a/Server/wwwroot/scripts/RemoteControl/RtcSession.js b/Server/wwwroot/scripts/RemoteControl/RtcSession.js index 4ecf196d..f8c20e4a 100644 --- a/Server/wwwroot/scripts/RemoteControl/RtcSession.js +++ b/Server/wwwroot/scripts/RemoteControl/RtcSession.js @@ -23,11 +23,19 @@ export class RtcSession { console.log("Data channel closed."); UI.ConnectionP2PIcon.style.display = "none"; UI.ConnectionRelayedIcon.style.display = "unset"; + UI.StreamVideoButton.setAttribute("hidden", "hidden"); + UI.ScreenViewer.removeAttribute("hidden"); + UI.QualityButton.removeAttribute("hidden"); + UI.VideoScreenViewer.setAttribute("hidden", "hidden"); }; this.DataChannel.onerror = (ev) => { console.log("Data channel error.", ev.error); UI.ConnectionP2PIcon.style.display = "none"; UI.ConnectionRelayedIcon.style.display = "unset"; + UI.StreamVideoButton.setAttribute("hidden", "hidden"); + UI.ScreenViewer.removeAttribute("hidden"); + UI.QualityButton.removeAttribute("hidden"); + UI.VideoScreenViewer.setAttribute("hidden", "hidden"); }; this.DataChannel.onmessage = async (ev) => { var data = ev.data; @@ -37,6 +45,7 @@ export class RtcSession { console.log("Data channel opened."); UI.ConnectionP2PIcon.style.display = "unset"; UI.ConnectionRelayedIcon.style.display = "none"; + UI.StreamVideoButton.removeAttribute("hidden"); }; }; this.PeerConnection.onconnectionstatechange = function (ev) { @@ -52,9 +61,9 @@ export class RtcSession { UI.VideoScreenViewer.play(); }; this.PeerConnection.ontrack = (event) => { - UI.VideoScreenViewer.srcObject = new MediaStream([event.track]); - UI.VideoScreenViewer.removeAttribute("hidden"); - UI.ScreenViewer.setAttribute("hidden", "hidden"); + if (event.track) { + UI.VideoScreenViewer.srcObject = new MediaStream([event.track]); + } }; } Disconnect() { diff --git a/Server/wwwroot/scripts/RemoteControl/RtcSession.js.map b/Server/wwwroot/scripts/RemoteControl/RtcSession.js.map index 29bccdb3..026ab58a 100644 --- a/Server/wwwroot/scripts/RemoteControl/RtcSession.js.map +++ b/Server/wwwroot/scripts/RemoteControl/RtcSession.js.map @@ -1 +1 @@ -{"version":3,"file":"RtcSession.js","sourceRoot":"","sources":["RtcSession.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"RtcSession.js","sourceRoot":"","sources":["RtcSession.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/scripts/RemoteControl/RtcSession.ts b/Server/wwwroot/scripts/RemoteControl/RtcSession.ts index 4a2070af..1dd7204b 100644 --- a/Server/wwwroot/scripts/RemoteControl/RtcSession.ts +++ b/Server/wwwroot/scripts/RemoteControl/RtcSession.ts @@ -28,11 +28,21 @@ export class RtcSession { console.log("Data channel closed."); UI.ConnectionP2PIcon.style.display = "none"; UI.ConnectionRelayedIcon.style.display = "unset"; + + UI.StreamVideoButton.setAttribute("hidden", "hidden"); + UI.ScreenViewer.removeAttribute("hidden"); + UI.QualityButton.removeAttribute("hidden"); + UI.VideoScreenViewer.setAttribute("hidden", "hidden"); }; this.DataChannel.onerror = (ev) => { console.log("Data channel error.", ev.error); UI.ConnectionP2PIcon.style.display = "none"; UI.ConnectionRelayedIcon.style.display = "unset"; + + UI.StreamVideoButton.setAttribute("hidden", "hidden"); + UI.ScreenViewer.removeAttribute("hidden"); + UI.QualityButton.removeAttribute("hidden"); + UI.VideoScreenViewer.setAttribute("hidden", "hidden"); }; this.DataChannel.onmessage = async (ev) => { var data = ev.data as ArrayBuffer; @@ -43,6 +53,8 @@ export class RtcSession { console.log("Data channel opened."); UI.ConnectionP2PIcon.style.display = "unset"; UI.ConnectionRelayedIcon.style.display = "none"; + + UI.StreamVideoButton.removeAttribute("hidden"); }; }; this.PeerConnection.onconnectionstatechange = function (ev) { @@ -60,9 +72,9 @@ export class RtcSession { UI.VideoScreenViewer.play(); } this.PeerConnection.ontrack = (event) => { - UI.VideoScreenViewer.srcObject = new MediaStream([event.track]); - UI.VideoScreenViewer.removeAttribute("hidden"); - UI.ScreenViewer.setAttribute("hidden", "hidden"); + if (event.track) { + UI.VideoScreenViewer.srcObject = new MediaStream([event.track]); + } }; } diff --git a/Server/wwwroot/scripts/RemoteControl/UI.js b/Server/wwwroot/scripts/RemoteControl/UI.js index ac5bcca5..35770675 100644 --- a/Server/wwwroot/scripts/RemoteControl/UI.js +++ b/Server/wwwroot/scripts/RemoteControl/UI.js @@ -22,6 +22,7 @@ export var ActionsBar = document.getElementById("actionsBar"); export var ViewBar = document.getElementById("viewBar"); export var ChangeScreenButton = document.getElementById("changeScreenButton"); export var QualityButton = document.getElementById("qualityButton"); +export var StreamVideoButton = document.getElementById("streamVideoButton"); export var FitToScreenButton = document.getElementById("fitToScreenButton"); export var BlockInputButton = document.getElementById("blockInputButton"); export var DisconnectButton = document.getElementById("disconnectButton"); diff --git a/Server/wwwroot/scripts/RemoteControl/UI.js.map b/Server/wwwroot/scripts/RemoteControl/UI.js.map index 74af12aa..432b5de5 100644 --- a/Server/wwwroot/scripts/RemoteControl/UI.js.map +++ b/Server/wwwroot/scripts/RemoteControl/UI.js.map @@ -1 +1 @@ -{"version":3,"file":"UI.js","sourceRoot":"","sources":["UI.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"UI.js","sourceRoot":"","sources":["UI.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Server/wwwroot/scripts/RemoteControl/UI.ts b/Server/wwwroot/scripts/RemoteControl/UI.ts index 47eb292d..4bfaac9e 100644 --- a/Server/wwwroot/scripts/RemoteControl/UI.ts +++ b/Server/wwwroot/scripts/RemoteControl/UI.ts @@ -23,6 +23,7 @@ export var ActionsBar = document.getElementById("actionsBar") as HTMLDivElement; export var ViewBar = document.getElementById("viewBar") as HTMLDivElement; export var ChangeScreenButton = document.getElementById("changeScreenButton") as HTMLButtonElement; export var QualityButton = document.getElementById("qualityButton") as HTMLButtonElement; +export var StreamVideoButton = document.getElementById("streamVideoButton") as HTMLButtonElement; export var FitToScreenButton = document.getElementById("fitToScreenButton") as HTMLButtonElement; export var BlockInputButton = document.getElementById("blockInputButton") as HTMLButtonElement; export var DisconnectButton = document.getElementById("disconnectButton") as HTMLButtonElement; diff --git a/Shared/Enums/BinaryDtoType.cs b/Shared/Enums/BinaryDtoType.cs index 6e58e96d..3c4fb6c9 100644 --- a/Shared/Enums/BinaryDtoType.cs +++ b/Shared/Enums/BinaryDtoType.cs @@ -56,6 +56,8 @@ namespace Remotely.Shared.Enums [EnumMember(Value = "SetKeyStatesUp")] SetKeyStatesUp = 24, [EnumMember(Value = "FrameReceived")] - FrameReceived = 25 + FrameReceived = 25, + [EnumMember(Value = "ToggleWebRtcVideo")] + ToggleWebRtcVideo = 26 } } diff --git a/Shared/Models/RtcDtos/ToggleWebRtcVideoDto.cs b/Shared/Models/RtcDtos/ToggleWebRtcVideoDto.cs new file mode 100644 index 00000000..5edc5c12 --- /dev/null +++ b/Shared/Models/RtcDtos/ToggleWebRtcVideoDto.cs @@ -0,0 +1,18 @@ +using Remotely.Shared.Enums; +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; + +namespace Remotely.Shared.Models.RtcDtos +{ + [DataContract] + public class ToggleWebRtcVideoDto : BinaryDtoBase + { + [DataMember(Name = "ToggleOn")] + public bool ToggleOn { get; set; } + + [DataMember(Name = "DtoType")] + public new BinaryDtoType DtoType { get; } = BinaryDtoType.ToggleWebRtcVideo; + } +}