diff options
| author | Henry Jameson <me@hjkos.com> | 2018-11-26 05:21:58 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2018-11-26 05:21:58 +0300 |
| commit | a806d43f05ddded69a00156bc31fe33806426ecb (patch) | |
| tree | afa9a3f43043bbce92739fb48d048605e0c45c2b /src/main.js | |
| parent | 08838774e41b9beba8f884da15ab1314eddf28f8 (diff) | |
| parent | 91272dc5558e1326dac872f927dc8da7f9109cd0 (diff) | |
Merge remote-tracking branch 'upstream/develop' into feature/theming2
* upstream/develop: (60 commits)
whoops
whoops
DM timeline: stream new statuses
update-japanese-translation
Add actual user search.
incorporate most translation changes from MR 368
update french translation
Always show dm panel.
Add direct message tab.
api service url
remove deploy stage
remove deploy stage
updated and completed German translation
On logout switch to public timeline.
minor modification of Chinese translation
update Chinese translation
Add Chinese language
Fix posting.
Put oauth text into description.
Display OAuth login on login form button.
...
Diffstat (limited to 'src/main.js')
| -rw-r--r-- | src/main.js | 207 |
1 files changed, 28 insertions, 179 deletions
diff --git a/src/main.js b/src/main.js index 367db881..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,149 +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 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: '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 - store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: data.metadata.mediaProxy }) - store.dispatch('setInstanceOption', { name: 'chatAvailable', value: data.metadata.chat }) - store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: data.metadata.gopher }) - - const suggestions = metadata.suggestions - store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled }) - store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web }) - }) + afterStoreSetup({store, i18n}) +}) |
