Whalebird-desktop-client-ma.../src/renderer/router/index.ts

223 lines
6.9 KiB
TypeScript

import { createRouter, createWebHistory } from 'vue-router'
import Login from '@/components/Login.vue'
import Authorize from '@/components/Authorize.vue'
import Preferences from '@/components/Preferences.vue'
import PreferencesGeneral from '@/components/Preferences/General.vue'
import PreferencesAppearance from '@/components/Preferences/Appearance.vue'
import PreferencesNotification from '@/components/Preferences/Notification.vue'
import PreferencesAccount from '@/components/Preferences/Account.vue'
import PreferencesLanguage from '@/components/Preferences/Language.vue'
import PreferencesNetwork from '@/components/Preferences/Network.vue'
import GlobalHeader from '@/components/GlobalHeader.vue'
import Settings from '@/components/Settings.vue'
import SettingsGeneral from '@/components/Settings/General.vue'
import SettingsTimeline from '@/components/Settings/Timeline.vue'
import SettingsFilters from '@/components/Settings/Filters.vue'
import SettingsFiltersEdit from '@/components/Settings/Filters/Edit.vue'
import SettingsFiltersNew from '@/components/Settings/Filters/New.vue'
import TimelineSpace from '@/components/TimelineSpace.vue'
import TimelineSpaceContentsHome from '@/components/TimelineSpace/Contents/Home.vue'
import TimelineSpaceContentsNotifications from '@/components/TimelineSpace/Contents/Notifications.vue'
import TimelineSpaceContentsMentions from '@/components/TimelineSpace/Contents/Mentions.vue'
import TimelineSpaceContentsFavourites from '@/components/TimelineSpace/Contents/Favourites.vue'
import TimelineSpaceContentsLocal from '@/components/TimelineSpace/Contents/Local.vue'
import TimelineSpaceContentsPublic from '@/components/TimelineSpace/Contents/Public.vue'
import TimelineSpaceContentsHashtag from '@/components/TimelineSpace/Contents/Hashtag.vue'
import TimelineSpaceContentsHashtagList from '@/components/TimelineSpace/Contents/Hashtag/List.vue'
import TimelineSpaceContentsHashtagTag from '@/components/TimelineSpace/Contents/Hashtag/Tag.vue'
import TimelineSpaceContentsSearch from '@/components/TimelineSpace/Contents/Search.vue'
import TimelineSpaceContentsDirectMessages from '@/components/TimelineSpace/Contents/DirectMessages.vue'
import TimelineSpaceContentsListsIndex from '@/components/TimelineSpace/Contents/Lists/Index.vue'
import TimelineSpaceContentsListsEdit from '@/components/TimelineSpace/Contents/Lists/Edit.vue'
import TimelineSpaceContentsListsShow from '@/components/TimelineSpace/Contents/Lists/Show.vue'
import TimelineSpaceContentsFollowRequests from '@/components/TimelineSpace/Contents/FollowRequests.vue'
import TimelineSpaceContentsBookmarks from '@/components/TimelineSpace/Contents/Bookmarks.vue'
const routes = [
{
path: '/login',
name: 'login',
component: Login
},
{
path: '/authorize',
name: 'authorize',
component: Authorize,
props: route => ({ url: route.query.url, sns: route.query.sns })
},
{
path: '/preferences/',
name: 'preferences',
component: Preferences,
children: [
{
path: 'general',
name: 'general',
component: PreferencesGeneral
},
{
path: 'appearance',
name: 'appearance',
component: PreferencesAppearance
},
{
path: 'notification',
name: 'notification',
component: PreferencesNotification
},
{
path: 'account',
name: 'account',
component: PreferencesAccount
},
{
path: 'network',
name: 'network',
component: PreferencesNetwork
},
{
path: 'language',
name: 'language',
component: PreferencesLanguage
}
]
},
{
path: '/',
name: 'global-header',
component: GlobalHeader,
children: [
{
path: ':id/settings/',
component: Settings,
children: [
{
path: 'general',
component: SettingsGeneral
},
{
path: 'timeline',
component: SettingsTimeline
},
{
path: 'filters',
component: SettingsFilters
},
{
path: 'filters/new',
component: SettingsFiltersNew
},
{
path: 'filters/:filter_id/edit',
component: SettingsFiltersEdit,
props: true
}
]
},
{
path: ':id/',
name: 'timeline-space',
component: TimelineSpace,
children: [
{
path: 'home',
name: 'home',
component: TimelineSpaceContentsHome
},
{
path: 'notifications',
name: 'notifications',
component: TimelineSpaceContentsNotifications
},
{
path: 'mentions',
name: 'mentions',
component: TimelineSpaceContentsMentions
},
{
path: 'follow-requests',
name: 'follow-requests',
component: TimelineSpaceContentsFollowRequests
},
{
path: 'favourites',
name: 'favourites',
component: TimelineSpaceContentsFavourites
},
{
path: 'bookmarks',
name: 'bookmarks',
component: TimelineSpaceContentsBookmarks
},
{
path: 'local',
name: 'local',
component: TimelineSpaceContentsLocal
},
{
path: 'public',
name: 'public',
component: TimelineSpaceContentsPublic
},
{
path: 'hashtag/',
component: TimelineSpaceContentsHashtag,
children: [
{
path: '',
name: 'hashtag-list',
component: TimelineSpaceContentsHashtagList
},
{
path: ':tag',
name: 'tag',
component: TimelineSpaceContentsHashtagTag,
props: true
}
]
},
{
path: 'search',
name: 'search',
component: TimelineSpaceContentsSearch
},
{
path: 'direct-messages',
name: 'direct-messages',
component: TimelineSpaceContentsDirectMessages
},
{
path: 'lists',
name: 'lists',
component: TimelineSpaceContentsListsIndex
},
{
path: 'lists/:list_id/edit',
name: 'edit-list',
component: TimelineSpaceContentsListsEdit,
props: true
},
{
path: 'lists/:list_id',
name: 'list',
component: TimelineSpaceContentsListsShow,
props: true
}
]
}
]
},
{
path: '/:pathMatch(.*)*',
redirect: '/'
}
]
const router = createRouter({
history: createWebHistory(),
routes: routes
})
export default router