import { Routes } from '@angular/router';

/** Application route configuration with lazy-loaded feature components. */
export const routes: Routes = [
  {
    path: '',
    redirectTo: 'search',
    pathMatch: 'full'
  },
  {
    path: 'login',
    loadComponent: () =>
      import('./domains/authentication/feature/login/login.component').then((module) => module.LoginComponent)
  },
  {
    path: 'register',
    loadComponent: () =>
      import('./domains/authentication/feature/register/register.component').then((module) => module.RegisterComponent)
  },
  {
    path: 'invite/:inviteId',
    loadComponent: () =>
      import('./domains/server-directory/feature/invite/invite.component').then((module) => module.InviteComponent)
  },
  {
    path: 'search',
    loadComponent: () =>
      import('./domains/server-directory/feature/server-search/server-search.component').then(
        (module) => module.ServerSearchComponent
      )
  },
  {
    path: 'room/:roomId',
    loadComponent: () =>
      import('./features/room/chat-room/chat-room.component').then((module) => module.ChatRoomComponent)
  },
  {
    path: 'dm',
    loadComponent: () =>
      import('./domains/direct-message/feature/dm-workspace/dm-workspace.component').then((module) => module.DmWorkspaceComponent)
  },
  {
    path: 'dm/:conversationId',
    loadComponent: () =>
      import('./domains/direct-message/feature/dm-workspace/dm-workspace.component').then((module) => module.DmWorkspaceComponent)
  },
  {
    path: 'pm',
    loadComponent: () =>
      import('./domains/direct-message/feature/dm-workspace/dm-workspace.component').then((module) => module.DmWorkspaceComponent)
  },
  {
    path: 'pm/:conversationId',
    loadComponent: () =>
      import('./domains/direct-message/feature/dm-workspace/dm-workspace.component').then((module) => module.DmWorkspaceComponent)
  },
  {
    path: 'call/:callId',
    loadComponent: () =>
      import('./features/direct-call/private-call.component').then((module) => module.PrivateCallComponent)
  },
  {
    path: 'settings',
    loadComponent: () =>
      import('./features/settings/settings.component').then((module) => module.SettingsComponent)
  },
  {
    path: 'plugin-store',
    loadComponent: () =>
      import('./domains/plugins/feature/plugin-store/plugin-store.component').then((module) => module.PluginStoreComponent)
  },
  {
    path: 'plugins/:pluginId/:pageId',
    loadComponent: () =>
      import('./domains/plugins/feature/plugin-page-host/plugin-page-host.component').then((module) => module.PluginPageHostComponent)
  }
];
