You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import HomeView from '../views/HomeView.vue'
  3. import ProfileView from '../views/ProfileView.vue'
  4. import ChatView from '../views/ChatView.vue'
  5. import PairsView from '../views/PairsView.vue'
  6. import LoginView from '../views/LoginView.vue'
  7. import SurveyView from '../views/SurveyView.vue'
  8. import OnboardingView from '../views/OnboardingView.vue'
  9. import VerifyView from '../views/VerifyView.vue'
  10. import MessagesView from '../views/MessagesView.vue'
  11. const routes = [
  12. {
  13. path: '/',
  14. component: HomeView,
  15. name: 'HomeView',
  16. meta: { requiresAuth: true, requiresCompleteProfile: false },
  17. },
  18. {
  19. path: '/profile/:pid',
  20. component: ProfileView,
  21. name: 'ProfileView',
  22. meta: { requiresAuth: true, requiresCompleteProfile: true },
  23. },
  24. {
  25. path: '/pairs',
  26. component: PairsView,
  27. name: 'PairsView',
  28. meta: { requiresAuth: true, requiresCompleteProfile: true },
  29. },
  30. {
  31. path: '/pairs/:pid',
  32. component: ProfileView,
  33. meta: { requiresAuth: true, requiresCompleteProfile: true },
  34. },
  35. {
  36. path: '/messages',
  37. component: MessagesView,
  38. meta: {
  39. requiresAuth: true,
  40. requiresCompleteProfile: true,
  41. props: true,
  42. },
  43. },
  44. {
  45. path: '/chat/:pid',
  46. component: ChatView,
  47. meta: {
  48. requiresAuth: true,
  49. requiresCompleteProfile: true,
  50. props: true,
  51. },
  52. },
  53. {
  54. path: `/survey`,
  55. component: SurveyView,
  56. name: `SurveyView`,
  57. meta: { requiresAuth: true, requiresCompleteProfile: false },
  58. },
  59. // TODO: remove after better implementation is found for verifying email
  60. // hash
  61. {
  62. path: `/onboarding/`,
  63. component: OnboardingView,
  64. name: `OnboardingView`,
  65. meta: { requiresAuth: false, requiresCompleteProfile: false },
  66. },
  67. // We must be able to get to this route BEFORE login to activate the session
  68. {
  69. path: `/verify/:hashedToken?`,
  70. component: VerifyView,
  71. name: `VerifyView`,
  72. meta: { requiresAuth: false, requiresCompleteProfile: false },
  73. },
  74. {
  75. path: `/login`,
  76. component: LoginView,
  77. name: `LoginView`,
  78. meta: { requiresAuth: false, requiresCompleteProfile: false },
  79. },
  80. {
  81. path: `/settings`,
  82. component: HomeView,
  83. name: `SettingsView`,
  84. meta: { requiresAuth: true, requiresCompleteProfile: true },
  85. },
  86. {
  87. path: `/search`,
  88. component: HomeView,
  89. name: `SearchView`,
  90. meta: { requiresAuth: true, requiresCompleteProfile: true },
  91. },
  92. ]
  93. const router = createRouter({
  94. history: createWebHistory(),
  95. routes,
  96. })
  97. export { router }