import type { RouteRecordRaw } from 'vue-router'

import store from '~/store'

export default [
  { suffix: '.full', path: '@:username@:domain' },
  { suffix: '', path: '@:username' }
].map((route) => {
  return {
    path: route.path,
    name: `profile${route.suffix}`,
    component: () => import('~/views/auth/ProfileBase.vue'),
    beforeEnter (to, from, next) {
      if (!store.state.auth.authenticated && to.query.domain && store.getters['instance/domain'] !== to.query.domain) {
        return next({ name: 'login', query: { next: to.fullPath } })
      }

      next()
    },
    props: true,
    children: [
      {
        path: '',
        name: `profile${route.suffix}.overview`,
        component: () => import('~/views/auth/ProfileOverview.vue')
      },
      {
        path: 'activity',
        name: `profile${route.suffix}.activity`,
        component: () => import('~/views/auth/ProfileActivity.vue')
      }
    ]
  }
}) as RouteRecordRaw[]
