mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
1be43911b4
Set Prettier's "trailingComma" setting to "es5" GitOrigin-RevId: 9f14150511929a855b27467ad17be6ab262fe5d5
157 lines
4.8 KiB
JavaScript
157 lines
4.8 KiB
JavaScript
/* global io */
|
|
|
|
/* 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
|
|
* DS207: Consider shorter variations of null checks
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
*/
|
|
import App from '../../../../../../frontend/js/base'
|
|
|
|
export default App.controller(
|
|
'LaunchpadController',
|
|
function ($scope, $http, $timeout) {
|
|
$scope.adminUserExists = window.data.adminUserExists
|
|
$scope.ideJsPath = window.data.ideJsPath
|
|
$scope.authMethod = window.data.authMethod
|
|
|
|
$scope.createAdminSuccess = null
|
|
$scope.createAdminError = null
|
|
|
|
$scope.statusChecks = {
|
|
ideJs: { status: 'inflight', error: null },
|
|
websocket: { status: 'inflight', error: null },
|
|
healthCheck: { status: 'inflight', error: null },
|
|
}
|
|
|
|
$scope.testEmail = {
|
|
emailAddress: '',
|
|
inflight: false,
|
|
status: null, // | 'ok' | 'success'
|
|
}
|
|
|
|
$scope.shouldShowAdminForm = () => !$scope.adminUserExists
|
|
|
|
$scope.onCreateAdminSuccess = function (response) {
|
|
const { status } = response
|
|
if (status >= 200 && status < 300) {
|
|
return ($scope.createAdminSuccess = true)
|
|
}
|
|
}
|
|
|
|
$scope.onCreateAdminError = () => ($scope.createAdminError = true)
|
|
|
|
$scope.sendTestEmail = function () {
|
|
$scope.testEmail.inflight = true
|
|
$scope.testEmail.status = null
|
|
return $http
|
|
.post('/launchpad/send_test_email', {
|
|
email: $scope.testEmail.emailAddress,
|
|
_csrf: window.csrfToken,
|
|
})
|
|
.then(function (response) {
|
|
const { status } = response
|
|
$scope.testEmail.inflight = false
|
|
if (status >= 200 && status < 300) {
|
|
return ($scope.testEmail.status = 'ok')
|
|
}
|
|
})
|
|
.catch(function () {
|
|
$scope.testEmail.inflight = false
|
|
return ($scope.testEmail.status = 'error')
|
|
})
|
|
}
|
|
|
|
$scope.tryFetchIdeJs = function () {
|
|
$scope.statusChecks.ideJs.status = 'inflight'
|
|
return $timeout(
|
|
() =>
|
|
$http
|
|
.get($scope.ideJsPath)
|
|
.then(function (response) {
|
|
const { status } = response
|
|
if (status >= 200 && status < 300) {
|
|
return ($scope.statusChecks.ideJs.status = 'ok')
|
|
}
|
|
})
|
|
.catch(function (response) {
|
|
const { status } = response
|
|
$scope.statusChecks.ideJs.status = 'error'
|
|
return ($scope.statusChecks.ideJs.error = new Error(
|
|
`Http status: ${status}`
|
|
))
|
|
}),
|
|
|
|
1000
|
|
)
|
|
}
|
|
|
|
$scope.tryOpenWebSocket = function () {
|
|
$scope.statusChecks.websocket.status = 'inflight'
|
|
return $timeout(function () {
|
|
if (typeof io === 'undefined' || io === null) {
|
|
$scope.statusChecks.websocket.status = 'error'
|
|
$scope.statusChecks.websocket.error = 'socket.io not loaded'
|
|
return
|
|
}
|
|
const socket = io.connect(null, {
|
|
reconnect: false,
|
|
'connect timeout': 30 * 1000,
|
|
'force new connection': true,
|
|
})
|
|
|
|
socket.on('connectionAccepted', function () {
|
|
$scope.statusChecks.websocket.status = 'ok'
|
|
return $scope.$apply(function () {})
|
|
})
|
|
|
|
socket.on('connectionRejected', function (err) {
|
|
$scope.statusChecks.websocket.status = 'error'
|
|
$scope.statusChecks.websocket.error = err
|
|
return $scope.$apply(function () {})
|
|
})
|
|
|
|
return socket.on('connect_failed', function (err) {
|
|
$scope.statusChecks.websocket.status = 'error'
|
|
$scope.statusChecks.websocket.error = err
|
|
return $scope.$apply(function () {})
|
|
})
|
|
}, 1000)
|
|
}
|
|
|
|
$scope.tryHealthCheck = function () {
|
|
$scope.statusChecks.healthCheck.status = 'inflight'
|
|
return $http
|
|
.get('/health_check')
|
|
.then(function (response) {
|
|
const { status } = response
|
|
if (status >= 200 && status < 300) {
|
|
return ($scope.statusChecks.healthCheck.status = 'ok')
|
|
}
|
|
})
|
|
.catch(function (response) {
|
|
const { status } = response
|
|
$scope.statusChecks.healthCheck.status = 'error'
|
|
return ($scope.statusChecks.healthCheck.error = new Error(
|
|
`Http status: ${status}`
|
|
))
|
|
})
|
|
}
|
|
|
|
$scope.runStatusChecks = function () {
|
|
$timeout(() => $scope.tryFetchIdeJs(), 1000)
|
|
return $timeout(() => $scope.tryOpenWebSocket(), 2000)
|
|
}
|
|
|
|
// kick off the status checks on load
|
|
if ($scope.adminUserExists) {
|
|
return $scope.runStatusChecks()
|
|
}
|
|
}
|
|
)
|