diff options
| author | lambda <pleromagit@rogerbraun.net> | 2018-11-13 18:42:07 +0000 |
|---|---|---|
| committer | lambda <pleromagit@rogerbraun.net> | 2018-11-13 18:42:07 +0000 |
| commit | 11f8a4f312675a82d5fed9c5e75fed63a8456ffc (patch) | |
| tree | 18c0c0d6d966ca23f4644638974613d75ba1c8fe /src/main.js | |
| parent | e9b68b8c972e25df852543e9aa6670088bee06bb (diff) | |
| parent | 9f64c96721028b2749f17cbf7bd910382ce58154 (diff) | |
Merge branch 'oauth' into 'develop'
Move login to oauth.
See merge request pleroma/pleroma-fe!367
Diffstat (limited to 'src/main.js')
| -rw-r--r-- | src/main.js | 213 |
1 files changed, 28 insertions, 185 deletions
diff --git a/src/main.js b/src/main.js index b71ae4cb..9f094ada 100644 --- a/src/main.js +++ b/src/main.js @@ -1,18 +1,6 @@ import Vue from 'vue' import VueRouter from 'vue-router' import Vuex from 'vuex' -import App from './App.vue' -import PublicTimeline from './components/public_timeline/public_timeline.vue' -import PublicAndExternalTimeline from './components/public_and_external_timeline/public_and_external_timeline.vue' -import FriendsTimeline from './components/friends_timeline/friends_timeline.vue' -import TagTimeline from './components/tag_timeline/tag_timeline.vue' -import ConversationPage from './components/conversation-page/conversation-page.vue' -import Mentions from './components/mentions/mentions.vue' -import UserProfile from './components/user_profile/user_profile.vue' -import Settings from './components/settings/settings.vue' -import Registration from './components/registration/registration.vue' -import UserSettings from './components/user_settings/user_settings.vue' -import FollowRequests from './components/follow_requests/follow_requests.vue' import interfaceModule from './modules/interface.js' import instanceModule from './modules/instance.js' @@ -21,6 +9,7 @@ import usersModule from './modules/users.js' import apiModule from './modules/api.js' import configModule from './modules/config.js' import chatModule from './modules/chat.js' +import oauthModule from './modules/oauth.js' import VueTimeago from 'vue-timeago' import VueI18n from 'vue-i18n' @@ -31,6 +20,8 @@ import messages from './i18n/messages.js' import VueChatScroll from 'vue-chat-scroll' +import afterStoreSetup from './boot/after_store.js' + const currentLocale = (window.navigator.language || 'en').split('-')[0] Vue.use(Vuex) @@ -45,29 +36,6 @@ Vue.use(VueTimeago, { Vue.use(VueI18n) Vue.use(VueChatScroll) -const persistedStateOptions = { - paths: [ - 'config', - 'users.lastLoginName', - 'statuses.notifications.maxSavedId' - ] -} - -const store = new Vuex.Store({ - modules: { - interface: interfaceModule, - instance: instanceModule, - statuses: statusesModule, - users: usersModule, - api: apiModule, - config: configModule, - chat: chatModule - }, - plugins: [createPersistedState(persistedStateOptions)], - strict: false // Socket modifies itself, let's ignore this for now. - // strict: process.env.NODE_ENV !== 'production' -}) - const i18n = new VueI18n({ // By default, use the browser locale, we will update it if neccessary locale: currentLocale, @@ -75,155 +43,30 @@ const i18n = new VueI18n({ messages }) -window.fetch('/api/statusnet/config.json') - .then((res) => res.json()) - .then((data) => { - const {name, closed: registrationClosed, textlimit, server} = data.site - - store.dispatch('setInstanceOption', { name: 'name', value: name }) - store.dispatch('setInstanceOption', { name: 'registrationOpen', value: (registrationClosed === '0') }) - store.dispatch('setInstanceOption', { name: 'textlimit', value: parseInt(textlimit) }) - store.dispatch('setInstanceOption', { name: 'server', value: server }) - - var apiConfig = data.site.pleromafe - - window.fetch('/static/config.json') - .then((res) => res.json()) - .catch((err) => { - console.warn('Failed to load static/config.json, continuing without it.') - console.warn(err) - return {} - }) - .then((staticConfig) => { - // This takes static config and overrides properties that are present in apiConfig - var config = Object.assign({}, staticConfig, apiConfig) - - var theme = (config.theme) - var background = (config.background) - var hidePostStats = (config.hidePostStats) - var hideUserStats = (config.hideUserStats) - var logo = (config.logo) - var logoMask = (typeof config.logoMask === 'undefined' ? true : config.logoMask) - var logoMargin = (typeof config.logoMargin === 'undefined' ? 0 : config.logoMargin) - var redirectRootNoLogin = (config.redirectRootNoLogin) - var redirectRootLogin = (config.redirectRootLogin) - var chatDisabled = (config.chatDisabled) - var showInstanceSpecificPanel = (config.showInstanceSpecificPanel) - var scopeOptionsEnabled = (config.scopeOptionsEnabled) - var formattingOptionsEnabled = (config.formattingOptionsEnabled) - var collapseMessageWithSubject = (config.collapseMessageWithSubject) - - store.dispatch('setInstanceOption', { name: 'theme', value: theme }) - store.dispatch('setInstanceOption', { name: 'background', value: background }) - store.dispatch('setInstanceOption', { name: 'hidePostStats', value: hidePostStats }) - store.dispatch('setInstanceOption', { name: 'hideUserStats', value: hideUserStats }) - store.dispatch('setInstanceOption', { name: 'logo', value: logo }) - store.dispatch('setInstanceOption', { name: 'logoMask', value: logoMask }) - store.dispatch('setInstanceOption', { name: 'logoMargin', value: logoMargin }) - store.dispatch('setInstanceOption', { name: 'redirectRootNoLogin', value: redirectRootNoLogin }) - store.dispatch('setInstanceOption', { name: 'redirectRootLogin', value: redirectRootLogin }) - store.dispatch('setInstanceOption', { name: 'showInstanceSpecificPanel', value: showInstanceSpecificPanel }) - store.dispatch('setInstanceOption', { name: 'scopeOptionsEnabled', value: scopeOptionsEnabled }) - store.dispatch('setInstanceOption', { name: 'formattingOptionsEnabled', value: formattingOptionsEnabled }) - store.dispatch('setInstanceOption', { name: 'collapseMessageWithSubject', value: collapseMessageWithSubject }) - if (chatDisabled) { - store.dispatch('disableChat') - } - - const routes = [ - { name: 'root', - path: '/', - redirect: to => { - return (store.state.users.currentUser - ? store.state.instance.redirectRootLogin - : store.state.instance.redirectRootNoLogin) || '/main/all' - }}, - { path: '/main/all', component: PublicAndExternalTimeline }, - { path: '/main/public', component: PublicTimeline }, - { path: '/main/friends', component: FriendsTimeline }, - { path: '/tag/:tag', component: TagTimeline }, - { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } }, - { name: 'user-profile', path: '/users/:id', component: UserProfile }, - { name: 'mentions', path: '/:username/mentions', component: Mentions }, - { name: 'settings', path: '/settings', component: Settings }, - { name: 'registration', path: '/registration', component: Registration }, - { name: 'registration', path: '/registration/:token', component: Registration }, - { name: 'friend-requests', path: '/friend-requests', component: FollowRequests }, - { name: 'user-settings', path: '/user-settings', component: UserSettings } - ] - - const router = new VueRouter({ - mode: 'history', - routes, - scrollBehavior: (to, from, savedPosition) => { - if (to.matched.some(m => m.meta.dontScroll)) { - return false - } - return savedPosition || { x: 0, y: 0 } - } - }) - - /* eslint-disable no-new */ - new Vue({ - router, - store, - i18n, - el: '#app', - render: h => h(App) - }) - }) - }) - -window.fetch('/static/terms-of-service.html') - .then((res) => res.text()) - .then((html) => { - store.dispatch('setInstanceOption', { name: 'tos', value: html }) - }) - -window.fetch('/api/pleroma/emoji.json') - .then( - (res) => res.json() - .then( - (values) => { - const emoji = Object.keys(values).map((key) => { - return { shortcode: key, image_url: values[key] } - }) - store.dispatch('setInstanceOption', { name: 'customEmoji', value: emoji }) - store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: true }) - }, - (failure) => { - store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: false }) - } - ), - (error) => console.log(error) - ) - -window.fetch('/static/emoji.json') - .then((res) => res.json()) - .then((values) => { - const emoji = Object.keys(values).map((key) => { - return { shortcode: key, image_url: false, 'utf': values[key] } - }) - store.dispatch('setInstanceOption', { name: 'emoji', value: emoji }) - }) - -window.fetch('/instance/panel.html') - .then((res) => res.text()) - .then((html) => { - store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html }) +const persistedStateOptions = { + paths: [ + 'config', + 'users.lastLoginName', + 'statuses.notifications.maxSavedId', + 'oauth' + ] +} +createPersistedState(persistedStateOptions).then((persistedState) => { + const store = new Vuex.Store({ + modules: { + interface: interfaceModule, + instance: instanceModule, + statuses: statusesModule, + users: usersModule, + api: apiModule, + config: configModule, + chat: chatModule, + oauth: oauthModule + }, + plugins: [persistedState], + strict: false // Socket modifies itself, let's ignore this for now. + // strict: process.env.NODE_ENV !== 'production' }) -window.fetch('/nodeinfo/2.0.json') - .then((res) => res.json()) - .then((data) => { - const metadata = data.metadata - - const features = metadata.features - store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') }) - store.dispatch('setInstanceOption', { name: 'chatAvailable', value: features.includes('chat') }) - store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') }) - - const suggestions = metadata.suggestions - store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled }) - store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web }) - }) + afterStoreSetup({store, i18n}) +}) |
