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 }) }) // 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