overleaf/services/web/frontend/js/ide/LoadingManager.js
Tim Down fde8ab422b Merge pull request #10794 from overleaf/td-resize-while-loading
Ensure editor is the correct size after window resize during load

GitOrigin-RevId: 0677ef6aa5d1dd7b6aea9158343b8ccbb3a6562b
2022-12-07 09:04:14 +00:00

37 lines
1.1 KiB
JavaScript

import i18n from '../i18n'
// Control the editor loading screen. We want to show the loading screen until
// both the websocket connection has been established (so that the editor is in
// the correct state) and the translations have been loaded (so we don't see a
// flash of untranslated text).
class LoadingManager {
constructor($scope) {
this.$scope = $scope
const socketPromise = new Promise(resolve => {
this.resolveSocketPromise = resolve
})
Promise.all([socketPromise, i18n])
.then(() => {
this.$scope.$apply(() => {
this.$scope.state.load_progress = 100
this.$scope.state.loading = false
this.$scope.$emit('editor:loaded')
})
})
// Note: this will only catch errors in from i18n setup. ConnectionManager
// handles errors for the socket connection
.catch(() => {
this.$scope.$apply(() => {
this.$scope.state.error = 'Could not load translations.'
})
})
}
socketLoaded() {
this.resolveSocketPromise()
}
}
export default LoadingManager