Send server announce when users upload a video
[oweals/peertube.git] / client / src / main.browser.ts
index 70bf4853782ed6ac515d453e34b36ea955e0300a..28f0d57814b524f89506b5832d7e42d08a39d694 100644 (file)
@@ -1,20 +1,45 @@
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-import { decorateModuleRef } from './app/environment';
-import { bootloader } from '@angularclass/hmr';
-/*
+/* tslint: disable */
+
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
+import { decorateModuleRef } from './app/environment'
+import { hmrModule } from '@angularclass/hmr'
+
+/**
  * App Module
  * our top level module that holds all of our components
  */
-import { AppModule } from './app';
+import { AppModule } from './app'
 
-/*
+/**
  * Bootstrap our Angular app with a top level NgModule
  */
-export function main(): Promise<any> {
+export function main (): Promise<any> {
   return platformBrowserDynamic()
     .bootstrapModule(AppModule)
     .then(decorateModuleRef)
-    .catch(err => console.error(err));
+    .then((ngModuleRef: any) => {
+      // `module` global ref for webpackhmr
+      // Don't run this in Prod
+      return hmrModule(ngModuleRef, module)
+    })
+    .catch((err) => console.error(err))
+}
+
+/**
+ * Needed for hmr
+ * in prod this is replace for document ready
+ */
+switch (document.readyState) {
+  case 'loading':
+    document.addEventListener('DOMContentLoaded', _domReadyHandler, false)
+    break
+  case 'interactive':
+  case 'complete':
+  default:
+    main()
 }
 
-bootloader(main);
+function _domReadyHandler () {
+  document.removeEventListener('DOMContentLoaded', _domReadyHandler, false)
+  main()
+}