import { Routes } from '@angular/router';
import { LandingComponent } from './feature/landing/landing.component';
import { authGuard } from './auth.guard';

export const routes: Routes = [
  {
    path: '',
    component: LandingComponent,
  },
  {
    path: 'home',
    loadComponent: () => import('./feature/home/home.component'),
    canActivate: [authGuard],
  },
  {
    path: 'verify',
    loadComponent: () => import('./feature/auth/verify-email/verify-email.component'),
  },
  {
    path: 'recover-password',
    loadComponent: () => import('./feature/auth/recover-password/recover-password.component'),
  },
  {
    path: 'reset-password',
    loadComponent: () => import('./feature/auth/recover-password/recover-password.component'),
  },
  {
    path: 'oauth2/callback',
    children: [
      {
        path: 'github',
        loadComponent: () => import('./feature/auth/oauth2/oauth2-callback.component'),
        data: { provider: 'github' },
      },
      {
        path: 'google',
        loadComponent: () => import('./feature/auth/oauth2/oauth2-callback.component'),
        data: { provider: 'google' },
      },
    ],
  },
  {
    path: 'game',
    children: [
      {
        path: 'blackjack',
        loadComponent: () => import('./feature/game/blackjack/blackjack.component'),
        canActivate: [authGuard],
      },
      {
        path: 'coinflip',
        loadComponent: () => import('./feature/game/coinflip/coinflip.component'),
        canActivate: [authGuard],
      },
      {
        path: 'slots',
        loadComponent: () => import('./feature/game/slots/slots.component'),
        canActivate: [authGuard],
      },
      {
        path: 'lootboxes',
        loadComponent: () =>
          import('./feature/lootboxes/lootbox-selection/lootbox-selection.component'),
        canActivate: [authGuard],
      },
      {
        path: 'lootboxes/open/:id',
        loadComponent: () =>
          import('./feature/lootboxes/lootbox-opening/lootbox-opening.component'),
        canActivate: [authGuard],
      },
      {
        path: 'dice',
        loadComponent: () => import('./feature/game/dice/dice.component'),
        canActivate: [authGuard],
      },
    ],
  },
];
