From a4b31817444dd340521cd6aabd5bac37793d4767 Mon Sep 17 00:00:00 2001
From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com>
Date: Fri, 21 May 2021 14:48:45 +0200
Subject: [PATCH] feat: add admin and profile as lazy loaded modules

---
 src/app/admin/admin-routing.module.ts     | 15 +++++++++++++++
 src/app/admin/admin.module.ts             |  4 ++--
 src/app/app-routing.module.ts             | 14 ++++++--------
 src/app/app.module.ts                     |  2 +-
 src/app/profile/profile-routing.module.ts | 15 +++++++++++++++
 src/app/profile/profile.module.ts         |  5 ++---
 6 files changed, 41 insertions(+), 14 deletions(-)
 create mode 100644 src/app/admin/admin-routing.module.ts
 create mode 100644 src/app/profile/profile-routing.module.ts

diff --git a/src/app/admin/admin-routing.module.ts b/src/app/admin/admin-routing.module.ts
new file mode 100644
index 000000000..9a945719d
--- /dev/null
+++ b/src/app/admin/admin-routing.module.ts
@@ -0,0 +1,15 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { PanelComponent } from './components/panel/panel.component';
+
+const routes: Routes = [
+  {
+    path: '',
+    component: PanelComponent,
+  },
+];
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule],
+})
+export class AdminRoutingModule {}
diff --git a/src/app/admin/admin.module.ts b/src/app/admin/admin.module.ts
index e808d3c49..bf5a0e7a4 100644
--- a/src/app/admin/admin.module.ts
+++ b/src/app/admin/admin.module.ts
@@ -4,11 +4,11 @@ import { PanelComponent } from './components/panel/panel.component';
 import { ClaimStructureComponent } from './components/claim-structure/claim-structure.component';
 import { DeleteUserComponent } from './components/delete-user/delete-user.component';
 import { SharedModule } from '../shared/shared.module';
-import { NewsComponent } from '../post/news.component';
 import { NewsletterUsersComponent } from './components/newsletter-users/newsletter-users.component';
+import { AdminRoutingModule } from './admin-routing.module';
 
 @NgModule({
   declarations: [PanelComponent, ClaimStructureComponent, DeleteUserComponent, NewsletterUsersComponent],
-  imports: [CommonModule, SharedModule],
+  imports: [CommonModule, AdminRoutingModule, SharedModule],
 })
 export class AdminModule {}
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 8aa4f5974..a4aa2711f 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -1,14 +1,12 @@
 import { NgModule } from '@angular/core';
 import { Routes, RouterModule } from '@angular/router';
 import { AboutComponent } from './about/about.component';
-import { PanelComponent } from './admin/components/panel/panel.component';
 import { FormComponent } from './form/form.component';
 import { AdminGuard } from './guards/admin.guard';
 import { AuthGuard } from './guards/auth.guard';
 import { DeactivateGuard } from './guards/deactivate.guard';
 import { CartoComponent } from './carto/carto.component';
 import { LegalNoticeComponent } from './legal-notice/legal-notice.component';
-import { ProfileComponent } from './profile/profile.component';
 import { ResetEmailComponent } from './reset-email/reset-email.component';
 import { ResetPasswordComponent } from './reset-password/reset-password.component';
 import { TempUserResolver } from './resolvers/temp-user.resolver';
@@ -59,7 +57,7 @@ const routes: Routes = [
   {
     path: 'profile',
     canActivate: [AuthGuard],
-    component: ProfileComponent,
+    loadChildren: () => import('./profile/profile.module').then((m) => m.ProfileModule),
   },
   {
     path: 'join',
@@ -70,11 +68,6 @@ const routes: Routes = [
     path: 'reset-password',
     component: ResetPasswordComponent,
   },
-  {
-    path: 'admin',
-    canActivate: [AdminGuard],
-    component: PanelComponent,
-  },
   {
     path: 'create-structure',
     component: FormComponent,
@@ -94,6 +87,11 @@ const routes: Routes = [
     path: 'news',
     loadChildren: () => import('./post/post.module').then((m) => m.PostModule),
   },
+  {
+    path: 'admin',
+    canActivate: [AdminGuard],
+    loadChildren: () => import('./admin/admin.module').then((m) => m.AdminModule),
+  },
   {
     path: 'home',
     redirectTo: 'news',
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index eaf45b743..e709b556c 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -57,7 +57,7 @@ import { NewsletterSubscriptionComponent } from './newsletter-subscription/newsl
     StructureJoinComponent,
     NewsletterSubscriptionComponent,
   ],
-  imports: [BrowserModule, HttpClientModule, AppRoutingModule, SharedModule, MapModule, ProfileModule, AdminModule],
+  imports: [BrowserModule, HttpClientModule, AppRoutingModule, SharedModule, MapModule],
   providers: [
     { provide: LOCALE_ID, useValue: 'fr' },
     { provide: HTTP_INTERCEPTORS, useClass: CustomHttpInterceptor, multi: true },
diff --git a/src/app/profile/profile-routing.module.ts b/src/app/profile/profile-routing.module.ts
new file mode 100644
index 000000000..e6fd6675e
--- /dev/null
+++ b/src/app/profile/profile-routing.module.ts
@@ -0,0 +1,15 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { ProfileComponent } from './profile.component';
+
+const routes: Routes = [
+  {
+    path: '',
+    component: ProfileComponent,
+  },
+];
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule],
+})
+export class ProfileRoutingModule {}
diff --git a/src/app/profile/profile.module.ts b/src/app/profile/profile.module.ts
index a9427003f..0de33f82d 100644
--- a/src/app/profile/profile.module.ts
+++ b/src/app/profile/profile.module.ts
@@ -2,11 +2,10 @@ import { NgModule } from '@angular/core';
 import { ProfileComponent } from './profile.component';
 import { SharedModule } from '../shared/shared.module';
 import { CommonModule } from '@angular/common';
-import { BrowserModule } from '@angular/platform-browser';
+import { ProfileRoutingModule } from './profile-routing.module';
 
 @NgModule({
-  imports: [CommonModule, BrowserModule, SharedModule],
   declarations: [ProfileComponent],
-  exports: [ProfileComponent],
+  imports: [CommonModule, ProfileRoutingModule, SharedModule],
 })
 export class ProfileModule {}
-- 
GitLab