From ef4e137676f9fb0b3c66c4442ae3d55eac6d7b38 Mon Sep 17 00:00:00 2001 From: June Kelly Date: Tue, 8 Feb 2022 09:22:06 +0000 Subject: [PATCH] Merge pull request #6610 from overleaf/jk-better-editing-heartbeat [web] CM6: improvements to editor heartbeat GitOrigin-RevId: b0e5379d221cba76c91d6d21863ca8355749d18e --- services/web/frontend/js/ide.js | 21 ++++++++++++++++--- .../js/ide/editor/directives/aceEditor.js | 10 --------- services/web/frontend/js/main/event.js | 2 ++ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/services/web/frontend/js/ide.js b/services/web/frontend/js/ide.js index 549b65a1de..65270746d8 100644 --- a/services/web/frontend/js/ide.js +++ b/services/web/frontend/js/ide.js @@ -80,7 +80,8 @@ App.controller( eventTracking, metadata, $q, - CobrandingDataService + CobrandingDataService, + $window ) { // Don't freak out if we're already in an apply callback let err, pdfLayout, userAgent @@ -256,8 +257,22 @@ If the project has been renamed please look in your project list for a new proje return (_loaded = true) }) - $scope.$on('cursor:editor:update', eventTracking.editingSessionHeartbeat) - $scope.$on('scroll:editor:update', eventTracking.editingSessionHeartbeat) + ide.editingSessionHeartbeat = () => { + eventTracking.editingSessionHeartbeat() + } + + $scope.$on('cursor:editor:update', () => { + ide.editingSessionHeartbeat() + }) + $scope.$on('scroll:editor:update', () => { + ide.editingSessionHeartbeat() + }) + + angular.element($window).on('click', ide.editingSessionHeartbeat) + + $scope.$on('$destroy', () => + angular.element($window).off('click', ide.editingSessionHeartbeat) + ) const DARK_THEMES = [ 'ambiance', diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor.js b/services/web/frontend/js/ide/editor/directives/aceEditor.js index 017eb7eb8a..3e98b4138f 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor.js @@ -818,16 +818,6 @@ App.directive( // deletes and then inserts document content session.setAnnotations(scope.annotations) - angular - .element($window) - .on('click', eventTracking.editingSessionHeartbeat) - - scope.$on('$destroy', () => - angular - .element($window) - .off('click', eventTracking.editingSessionHeartbeat) - ) - if (scope.eventsBridge != null) { session.on('changeScrollTop', onScroll) } diff --git a/services/web/frontend/js/main/event.js b/services/web/frontend/js/main/event.js index 160fecde0c..fcf2248bd7 100644 --- a/services/web/frontend/js/main/event.js +++ b/services/web/frontend/js/main/event.js @@ -70,10 +70,12 @@ App.factory('eventTracking', function ($http, localStorage) { }, editingSessionHeartbeat() { + sl_console.log('[Event] heartbeat trigger') if (!(nextHeartbeat <= new Date())) { return } + sl_console.log('[Event] send heartbeat request') _sendEditingSessionHeartbeat() heartbeatsSent++