import Vue from 'vue' import Router 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' Vue.use(Router) const router = new Router({ 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: '*', redirect: '/' } ] }) export default router