overleaf/services/web/frontend/js/ide/chat/controllers/ChatButtonController.js
Alf Eaton 1ebc8a79cb Merge pull request #3495 from overleaf/ae-prettier-2
Upgrade Prettier to v2

GitOrigin-RevId: 85aa3fa1acb6332c4f58c46165a43d1a51471f33
2021-04-15 02:05:22 +00:00

88 lines
2.5 KiB
JavaScript

/* eslint-disable
max-len,
no-return-assign,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS103: Rewrite code to no longer use __guard__
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
import App from '../../../base'
export default App.controller('ChatButtonController', function ($scope, ide) {
let clearNewMessageNotification
$scope.toggleChat = function () {
$scope.ui.chatOpen = !$scope.ui.chatOpen
return $scope.resetUnreadMessages()
}
$scope.unreadMessages = 0
$scope.resetUnreadMessages = () => ($scope.unreadMessages = 0)
$scope.$on('chat:resetUnreadMessages', e => $scope.resetUnreadMessages())
function handleNewMessage(message) {
if (message != null) {
if (
__guard__(message != null ? message.user : undefined, x => x.id) !==
ide.$scope.user.id
) {
if (!$scope.ui.chatOpen) {
$scope.$applyAsync(() => {
$scope.unreadMessages += 1
})
}
flashTitle()
}
}
}
$scope.$on('chat:newMessage', (e, message) => handleNewMessage(message))
window.addEventListener('Chat.MessageReceived', ({ detail: { message } }) =>
handleNewMessage(message)
)
let focussed = true
let newMessageNotificationTimeout = null
let originalTitle = null
$(window).on('focus', function () {
clearNewMessageNotification()
return (focussed = true)
})
$(window).on('blur', () => (focussed = false))
var flashTitle = function () {
if (!focussed && newMessageNotificationTimeout == null) {
let changeTitle
if (!originalTitle) {
originalTitle = window.document.title
}
return (changeTitle = () => {
if (window.document.title === originalTitle) {
window.document.title = 'New Message'
} else {
window.document.title = originalTitle
}
return (newMessageNotificationTimeout = setTimeout(changeTitle, 800))
})()
}
}
return (clearNewMessageNotification = function () {
clearTimeout(newMessageNotificationTimeout)
newMessageNotificationTimeout = null
if (originalTitle != null) {
return (window.document.title = originalTitle)
}
})
})
function __guard__(value, transform) {
return typeof value !== 'undefined' && value !== null
? transform(value)
: undefined
}