]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/main.ts
Translated using Weblate (Persian)
[github/Chocobozzz/PeerTube.git] / client / src / main.ts
index f9c1d50b8f963efafbae056c8d861627d459919a..159c47e868484424e7c4052d3320f0bef4514d2b 100644 (file)
@@ -1,12 +1,44 @@
-import { enableProdMode } from '@angular/core';
-import { bootstrap }    from '@angular/platform-browser-dynamic';
-import { provideRouter } from '@angular/router';
+import { ApplicationRef, enableProdMode } from '@angular/core'
+import { enableDebugTools } from '@angular/platform-browser'
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
+import { AppModule } from './app/app.module'
+import { environment } from './environments/environment'
+import { logger } from './root-helpers'
 
-import { AppComponent } from './app/app.component';
-import { routes } from './app/app.routes';
-
-if (process.env.ENV === 'production') {
-  enableProdMode();
+if (environment.production) {
+  enableProdMode()
 }
 
-bootstrap(AppComponent, [ provideRouter(routes) ]);
+logger.registerServerSending(environment.apiUrl)
+
+const bootstrap = () => platformBrowserDynamic()
+  .bootstrapModule(AppModule)
+  .then(bootstrapModule => {
+    if (!environment.production) {
+      const applicationRef = bootstrapModule.injector.get(ApplicationRef)
+      const componentRef = applicationRef.components[0]
+
+      // allows to run `ng.profiler.timeChangeDetection();`
+      enableDebugTools(componentRef)
+    }
+
+    return bootstrapModule
+  })
+  .catch(err => {
+    try {
+      logger.error(err)
+    } catch (err2) {
+      console.error('Cannot log error', { err, err2 })
+    }
+
+    // Ensure we display an "incompatible message" on Angular bootstrap error
+    setTimeout(() => {
+      if (document.querySelector('my-app').innerHTML === '') {
+        throw err
+      }
+    }, 1000)
+
+    return null
+  })
+
+bootstrap()