70 lines
2.3 KiB
JavaScript
70 lines
2.3 KiB
JavaScript
|
import { filter, trim } from 'lodash'
|
||
|
import { instanceDefaultProperties, defaultState as configDefaultState } from 'src/modules/config.js'
|
||
|
|
||
|
const multiChoiceProperties = [
|
||
|
'postContentType',
|
||
|
'subjectLineBehavior'
|
||
|
]
|
||
|
|
||
|
const SharedComputedObject = () => ({
|
||
|
user () {
|
||
|
return this.$store.state.users.currentUser
|
||
|
},
|
||
|
// Getting localized values for instance-default properties
|
||
|
...instanceDefaultProperties
|
||
|
.filter(key => multiChoiceProperties.includes(key))
|
||
|
.map(key => [
|
||
|
key + 'DefaultValue',
|
||
|
function () {
|
||
|
return this.$store.getters.instanceDefaultConfig[key]
|
||
|
}
|
||
|
])
|
||
|
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),
|
||
|
...instanceDefaultProperties
|
||
|
.filter(key => !multiChoiceProperties.includes(key))
|
||
|
.map(key => [
|
||
|
key + 'LocalizedValue',
|
||
|
function () {
|
||
|
return this.$t('settings.values.' + this.$store.getters.instanceDefaultConfig[key])
|
||
|
}
|
||
|
])
|
||
|
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),
|
||
|
// Generating computed values for vuex properties
|
||
|
...Object.keys(configDefaultState)
|
||
|
.map(key => [key, {
|
||
|
get () { return this.$store.getters.mergedConfig[key] },
|
||
|
set (value) {
|
||
|
this.$store.dispatch('setOption', { name: key, value })
|
||
|
}
|
||
|
}])
|
||
|
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),
|
||
|
// Special cases (need to transform values or perform actions first)
|
||
|
muteWordsString: {
|
||
|
get () { return this.$store.getters.mergedConfig.muteWords.join('\n') },
|
||
|
set (value) {
|
||
|
this.$store.dispatch('setOption', {
|
||
|
name: 'muteWords',
|
||
|
value: filter(value.split('\n'), (word) => trim(word).length > 0)
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
useStreamingApi: {
|
||
|
get () { return this.$store.getters.mergedConfig.useStreamingApi },
|
||
|
set (value) {
|
||
|
const promise = value
|
||
|
? this.$store.dispatch('enableMastoSockets')
|
||
|
: this.$store.dispatch('disableMastoSockets')
|
||
|
|
||
|
promise.then(() => {
|
||
|
this.$store.dispatch('setOption', { name: 'useStreamingApi', value })
|
||
|
}).catch((e) => {
|
||
|
console.error('Failed starting MastoAPI Streaming socket', e)
|
||
|
this.$store.dispatch('disableMastoSockets')
|
||
|
this.$store.dispatch('setOption', { name: 'useStreamingApi', value: false })
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
export default SharedComputedObject
|