created mergedConfig getter to avoid obnoxious checks for undefined everywhere
This commit is contained in:
parent
aadd36f3ec
commit
979e170bd6
|
@ -1,10 +1,9 @@
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
const FavoriteButton = {
|
const FavoriteButton = {
|
||||||
props: ['status', 'loggedIn'],
|
props: ['status', 'loggedIn'],
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
hidePostStatsLocal: typeof this.$store.state.config.hidePostStats === 'undefined'
|
|
||||||
? this.$store.state.instance.hidePostStats
|
|
||||||
: this.$store.state.config.hidePostStats,
|
|
||||||
animated: false
|
animated: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -28,7 +27,8 @@ const FavoriteButton = {
|
||||||
'icon-star': this.status.favorited,
|
'icon-star': this.status.favorited,
|
||||||
'animate-spin': this.animated
|
'animate-spin': this.animated
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
...mapGetters(['mergedConfig'])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
:title="$t('tool_tip.favorite')"
|
:title="$t('tool_tip.favorite')"
|
||||||
@click.prevent="favorite()"
|
@click.prevent="favorite()"
|
||||||
/>
|
/>
|
||||||
<span v-if="!hidePostStatsLocal && status.fave_num > 0">{{ status.fave_num }}</span>
|
<span v-if="!mergedConfig.hidePostStats && status.fave_num > 0">{{ status.fave_num }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<i
|
<i
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
class="button-icon favorite-button"
|
class="button-icon favorite-button"
|
||||||
:title="$t('tool_tip.favorite')"
|
:title="$t('tool_tip.favorite')"
|
||||||
/>
|
/>
|
||||||
<span v-if="!hidePostStatsLocal && status.fave_num > 0">{{ status.fave_num }}</span>
|
<span v-if="!mergedConfig.hidePostStats && status.fave_num > 0">{{ status.fave_num }}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import fileTypeService from '../../services/file_type/file_type.service.js'
|
||||||
import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
|
import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
|
||||||
import { reject, map, uniqBy } from 'lodash'
|
import { reject, map, uniqBy } from 'lodash'
|
||||||
import suggestor from '../emoji_input/suggestor.js'
|
import suggestor from '../emoji_input/suggestor.js'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
const buildMentionsString = ({ user, attentions = [] }, currentUser) => {
|
const buildMentionsString = ({ user, attentions = [] }, currentUser) => {
|
||||||
let allAttentions = [...attentions]
|
let allAttentions = [...attentions]
|
||||||
|
@ -50,9 +51,7 @@ const PostStatusForm = {
|
||||||
const preset = this.$route.query.message
|
const preset = this.$route.query.message
|
||||||
let statusText = preset || ''
|
let statusText = preset || ''
|
||||||
|
|
||||||
const scopeCopy = typeof this.$store.state.config.scopeCopy === 'undefined'
|
const { scopeCopy } = this.$store.getters.mergedConfig
|
||||||
? this.$store.state.instance.scopeCopy
|
|
||||||
: this.$store.state.config.scopeCopy
|
|
||||||
|
|
||||||
if (this.replyTo) {
|
if (this.replyTo) {
|
||||||
const currentUser = this.$store.state.users.currentUser
|
const currentUser = this.$store.state.users.currentUser
|
||||||
|
@ -63,9 +62,7 @@ const PostStatusForm = {
|
||||||
? this.copyMessageScope
|
? this.copyMessageScope
|
||||||
: this.$store.state.users.currentUser.default_scope
|
: this.$store.state.users.currentUser.default_scope
|
||||||
|
|
||||||
const contentType = typeof this.$store.state.config.postContentType === 'undefined'
|
const { postContentType: contentType } = this.$store.getters.mergedConfig
|
||||||
? this.$store.state.instance.postContentType
|
|
||||||
: this.$store.state.config.postContentType
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
dropFiles: [],
|
dropFiles: [],
|
||||||
|
@ -94,10 +91,7 @@ const PostStatusForm = {
|
||||||
return this.$store.state.users.currentUser.default_scope
|
return this.$store.state.users.currentUser.default_scope
|
||||||
},
|
},
|
||||||
showAllScopes () {
|
showAllScopes () {
|
||||||
const minimalScopesMode = typeof this.$store.state.config.minimalScopesMode === 'undefined'
|
return this.mergedConfig.minimalScopesMode
|
||||||
? this.$store.state.instance.minimalScopesMode
|
|
||||||
: this.$store.state.config.minimalScopesMode
|
|
||||||
return !minimalScopesMode
|
|
||||||
},
|
},
|
||||||
emojiUserSuggestor () {
|
emojiUserSuggestor () {
|
||||||
return suggestor({
|
return suggestor({
|
||||||
|
@ -145,13 +139,7 @@ const PostStatusForm = {
|
||||||
return this.$store.state.instance.minimalScopesMode
|
return this.$store.state.instance.minimalScopesMode
|
||||||
},
|
},
|
||||||
alwaysShowSubject () {
|
alwaysShowSubject () {
|
||||||
if (typeof this.$store.state.config.alwaysShowSubjectInput !== 'undefined') {
|
return this.mergedConfig.alwaysShowSubjectInput
|
||||||
return this.$store.state.config.alwaysShowSubjectInput
|
|
||||||
} else if (typeof this.$store.state.instance.alwaysShowSubjectInput !== 'undefined') {
|
|
||||||
return this.$store.state.instance.alwaysShowSubjectInput
|
|
||||||
} else {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
postFormats () {
|
postFormats () {
|
||||||
return this.$store.state.instance.postFormats || []
|
return this.$store.state.instance.postFormats || []
|
||||||
|
@ -170,7 +158,8 @@ const PostStatusForm = {
|
||||||
return this.pollFormVisible &&
|
return this.pollFormVisible &&
|
||||||
this.newStatus.poll &&
|
this.newStatus.poll &&
|
||||||
this.newStatus.poll.error
|
this.newStatus.poll.error
|
||||||
}
|
},
|
||||||
|
...mapGetters(['mergedConfig'])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
postStatus (newStatus) {
|
postStatus (newStatus) {
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
const RetweetButton = {
|
const RetweetButton = {
|
||||||
props: ['status', 'loggedIn', 'visibility'],
|
props: ['status', 'loggedIn', 'visibility'],
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
hidePostStatsLocal: typeof this.$store.state.config.hidePostStats === 'undefined'
|
|
||||||
? this.$store.state.instance.hidePostStats
|
|
||||||
: this.$store.state.config.hidePostStats,
|
|
||||||
animated: false
|
animated: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -28,7 +27,8 @@ const RetweetButton = {
|
||||||
'retweeted-empty': !this.status.repeated,
|
'retweeted-empty': !this.status.repeated,
|
||||||
'animate-spin': this.animated
|
'animate-spin': this.animated
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
...mapGetters(['mergedConfig'])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
:title="$t('tool_tip.repeat')"
|
:title="$t('tool_tip.repeat')"
|
||||||
@click.prevent="retweet()"
|
@click.prevent="retweet()"
|
||||||
/>
|
/>
|
||||||
<span v-if="!hidePostStatsLocal && status.repeat_num > 0">{{ status.repeat_num }}</span>
|
<span v-if="!mergedConfig.hidePostStats && status.repeat_num > 0">{{ status.repeat_num }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<i
|
<i
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
class="button-icon icon-retweet"
|
class="button-icon icon-retweet"
|
||||||
:title="$t('tool_tip.repeat')"
|
:title="$t('tool_tip.repeat')"
|
||||||
/>
|
/>
|
||||||
<span v-if="!hidePostStatsLocal && status.repeat_num > 0">{{ status.repeat_num }}</span>
|
<span v-if="!mergedConfig.hidePostStats && status.repeat_num > 0">{{ status.repeat_num }}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ import fileType from 'src/services/file_type/file_type.service'
|
||||||
import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'
|
import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'
|
||||||
import { mentionMatchesUrl, extractTagFromUrl } from 'src/services/matcher/matcher.service.js'
|
import { mentionMatchesUrl, extractTagFromUrl } from 'src/services/matcher/matcher.service.js'
|
||||||
import { filter, find, unescape, uniqBy } from 'lodash'
|
import { filter, find, unescape, uniqBy } from 'lodash'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
const Status = {
|
const Status = {
|
||||||
name: 'Status',
|
name: 'Status',
|
||||||
|
@ -42,20 +43,16 @@ const Status = {
|
||||||
showingTall: this.inConversation && this.focused,
|
showingTall: this.inConversation && this.focused,
|
||||||
showingLongSubject: false,
|
showingLongSubject: false,
|
||||||
error: null,
|
error: null,
|
||||||
expandingSubject: typeof this.$store.state.config.collapseMessageWithSubject === 'undefined'
|
expandingSubject: this.$store.getters.mergedConfig.collapseMessageWithSubject,
|
||||||
? !this.$store.state.instance.collapseMessageWithSubject
|
|
||||||
: !this.$store.state.config.collapseMessageWithSubject,
|
|
||||||
betterShadow: this.$store.state.interface.browserSupport.cssFilter
|
betterShadow: this.$store.state.interface.browserSupport.cssFilter
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
localCollapseSubjectDefault () {
|
localCollapseSubjectDefault () {
|
||||||
return typeof this.$store.state.config.collapseMessageWithSubject === 'undefined'
|
return this.mergedConfig.collapseMessageWithSubject
|
||||||
? this.$store.state.instance.collapseMessageWithSubject
|
|
||||||
: this.$store.state.config.collapseMessageWithSubject
|
|
||||||
},
|
},
|
||||||
muteWords () {
|
muteWords () {
|
||||||
return this.$store.state.config.muteWords
|
return this.mergedConfig.muteWords
|
||||||
},
|
},
|
||||||
repeaterClass () {
|
repeaterClass () {
|
||||||
const user = this.statusoid.user
|
const user = this.statusoid.user
|
||||||
|
@ -70,18 +67,18 @@ const Status = {
|
||||||
},
|
},
|
||||||
repeaterStyle () {
|
repeaterStyle () {
|
||||||
const user = this.statusoid.user
|
const user = this.statusoid.user
|
||||||
const highlight = this.$store.state.config.highlight
|
const highlight = this.mergedConfig.highlight
|
||||||
return highlightStyle(highlight[user.screen_name])
|
return highlightStyle(highlight[user.screen_name])
|
||||||
},
|
},
|
||||||
userStyle () {
|
userStyle () {
|
||||||
if (this.noHeading) return
|
if (this.noHeading) return
|
||||||
const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user
|
const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user
|
||||||
const highlight = this.$store.state.config.highlight
|
const highlight = this.mergedConfig.highlight
|
||||||
return highlightStyle(highlight[user.screen_name])
|
return highlightStyle(highlight[user.screen_name])
|
||||||
},
|
},
|
||||||
hideAttachments () {
|
hideAttachments () {
|
||||||
return (this.$store.state.config.hideAttachments && !this.inConversation) ||
|
return (this.mergedConfig.hideAttachments && !this.inConversation) ||
|
||||||
(this.$store.state.config.hideAttachmentsInConv && this.inConversation)
|
(this.mergedConfig.hideAttachmentsInConv && this.inConversation)
|
||||||
},
|
},
|
||||||
userProfileLink () {
|
userProfileLink () {
|
||||||
return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)
|
return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)
|
||||||
|
@ -120,9 +117,7 @@ const Status = {
|
||||||
},
|
},
|
||||||
muted () { return !this.unmuted && ((!this.inProfile && this.status.user.muted) || (!this.inConversation && this.status.thread_muted) || this.muteWordHits.length > 0) },
|
muted () { return !this.unmuted && ((!this.inProfile && this.status.user.muted) || (!this.inConversation && this.status.thread_muted) || this.muteWordHits.length > 0) },
|
||||||
hideFilteredStatuses () {
|
hideFilteredStatuses () {
|
||||||
return typeof this.$store.state.config.hideFilteredStatuses === 'undefined'
|
return this.mergedConfig.hideFilteredStatuses
|
||||||
? this.$store.state.instance.hideFilteredStatuses
|
|
||||||
: this.$store.state.config.hideFilteredStatuses
|
|
||||||
},
|
},
|
||||||
hideStatus () {
|
hideStatus () {
|
||||||
return (this.hideReply || this.deleted) || (this.muted && this.hideFilteredStatuses)
|
return (this.hideReply || this.deleted) || (this.muted && this.hideFilteredStatuses)
|
||||||
|
@ -163,7 +158,7 @@ const Status = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
hideReply () {
|
hideReply () {
|
||||||
if (this.$store.state.config.replyVisibility === 'all') {
|
if (this.mergedConfig.replyVisibility === 'all') {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if (this.inConversation || !this.isReply) {
|
if (this.inConversation || !this.isReply) {
|
||||||
|
@ -175,7 +170,7 @@ const Status = {
|
||||||
if (this.status.type === 'retweet') {
|
if (this.status.type === 'retweet') {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
const checkFollowing = this.$store.state.config.replyVisibility === 'following'
|
const checkFollowing = this.mergedConfig.replyVisibility === 'following'
|
||||||
for (var i = 0; i < this.status.attentions.length; ++i) {
|
for (var i = 0; i < this.status.attentions.length; ++i) {
|
||||||
if (this.status.user.id === this.status.attentions[i].id) {
|
if (this.status.user.id === this.status.attentions[i].id) {
|
||||||
continue
|
continue
|
||||||
|
@ -220,9 +215,7 @@ const Status = {
|
||||||
replySubject () {
|
replySubject () {
|
||||||
if (!this.status.summary) return ''
|
if (!this.status.summary) return ''
|
||||||
const decodedSummary = unescape(this.status.summary)
|
const decodedSummary = unescape(this.status.summary)
|
||||||
const behavior = typeof this.$store.state.config.subjectLineBehavior === 'undefined'
|
const behavior = this.mergedConfig.subjectLineBehavior
|
||||||
? this.$store.state.instance.subjectLineBehavior
|
|
||||||
: this.$store.state.config.subjectLineBehavior
|
|
||||||
const startsWithRe = decodedSummary.match(/^re[: ]/i)
|
const startsWithRe = decodedSummary.match(/^re[: ]/i)
|
||||||
if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {
|
if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {
|
||||||
return decodedSummary
|
return decodedSummary
|
||||||
|
@ -233,8 +226,8 @@ const Status = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
attachmentSize () {
|
attachmentSize () {
|
||||||
if ((this.$store.state.config.hideAttachments && !this.inConversation) ||
|
if ((this.mergedConfig.hideAttachments && !this.inConversation) ||
|
||||||
(this.$store.state.config.hideAttachmentsInConv && this.inConversation) ||
|
(this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||
|
||||||
(this.status.attachments.length > this.maxThumbnails)) {
|
(this.status.attachments.length > this.maxThumbnails)) {
|
||||||
return 'hide'
|
return 'hide'
|
||||||
} else if (this.compact) {
|
} else if (this.compact) {
|
||||||
|
@ -246,7 +239,7 @@ const Status = {
|
||||||
if (this.attachmentSize === 'hide') {
|
if (this.attachmentSize === 'hide') {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
return this.$store.state.config.playVideosInModal
|
return this.mergedConfig.playVideosInModal
|
||||||
? ['image', 'video']
|
? ['image', 'video']
|
||||||
: ['image']
|
: ['image']
|
||||||
},
|
},
|
||||||
|
@ -261,7 +254,7 @@ const Status = {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
maxThumbnails () {
|
maxThumbnails () {
|
||||||
return this.$store.state.config.maxThumbnails
|
return this.mergedConfig.maxThumbnails
|
||||||
},
|
},
|
||||||
contentHtml () {
|
contentHtml () {
|
||||||
if (!this.status.summary_html) {
|
if (!this.status.summary_html) {
|
||||||
|
@ -284,10 +277,9 @@ const Status = {
|
||||||
return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')
|
return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')
|
||||||
},
|
},
|
||||||
hidePostStats () {
|
hidePostStats () {
|
||||||
return typeof this.$store.state.config.hidePostStats === 'undefined'
|
return this.mergedConfig.hidePostStats
|
||||||
? this.$store.state.instance.hidePostStats
|
},
|
||||||
: this.$store.state.config.hidePostStats
|
...mapGetters(['mergedConfig'])
|
||||||
}
|
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
Attachment,
|
Attachment,
|
||||||
|
|
|
@ -5,15 +5,13 @@ import ModerationTools from '../moderation_tools/moderation_tools.vue'
|
||||||
import { hex2rgb } from '../../services/color_convert/color_convert.js'
|
import { hex2rgb } from '../../services/color_convert/color_convert.js'
|
||||||
import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'
|
import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'
|
||||||
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
|
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: [ 'user', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar' ],
|
props: [ 'user', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar' ],
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
followRequestInProgress: false,
|
followRequestInProgress: false,
|
||||||
hideUserStatsLocal: typeof this.$store.state.config.hideUserStats === 'undefined'
|
|
||||||
? this.$store.state.instance.hideUserStats
|
|
||||||
: this.$store.state.config.hideUserStats,
|
|
||||||
betterShadow: this.$store.state.interface.browserSupport.cssFilter
|
betterShadow: this.$store.state.interface.browserSupport.cssFilter
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -73,7 +71,8 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })
|
this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
...mapGetters(['mergedConfig'])
|
||||||
},
|
},
|
||||||
userHighlightColor: {
|
userHighlightColor: {
|
||||||
get () {
|
get () {
|
||||||
|
@ -90,7 +89,8 @@ export default {
|
||||||
const validRole = rights.admin || rights.moderator
|
const validRole = rights.admin || rights.moderator
|
||||||
const roleTitle = rights.admin ? 'admin' : 'moderator'
|
const roleTitle = rights.admin ? 'admin' : 'moderator'
|
||||||
return validRole && roleTitle
|
return validRole && roleTitle
|
||||||
}
|
},
|
||||||
|
...mapGetters(['mergedConfig'])
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
UserAvatar,
|
UserAvatar,
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
>{{ visibleRole }}</span>
|
>{{ visibleRole }}</span>
|
||||||
<span v-if="user.locked"><i class="icon icon-lock" /></span>
|
<span v-if="user.locked"><i class="icon icon-lock" /></span>
|
||||||
<span
|
<span
|
||||||
v-if="!hideUserStatsLocal && !hideBio"
|
v-if="!mergedConfig.hideUserStats && !hideBio"
|
||||||
class="dailyAvg"
|
class="dailyAvg"
|
||||||
>{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>
|
>{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -262,7 +262,7 @@
|
||||||
class="panel-body"
|
class="panel-body"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
v-if="!hideUserStatsLocal && switcher"
|
v-if="!mergedConfig.hideUserStats && switcher"
|
||||||
class="user-counts"
|
class="user-counts"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
|
|
@ -40,8 +40,27 @@ const defaultState = {
|
||||||
minimalScopesMode: undefined // instance default
|
minimalScopesMode: undefined // instance default
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// caching the instance default properties
|
||||||
|
export const instanceDefaultProperties = Object.entries(defaultState)
|
||||||
|
.filter(([key, value]) => value === undefined)
|
||||||
|
.map(([key, value]) => key)
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
state: defaultState,
|
state: defaultState,
|
||||||
|
getters: {
|
||||||
|
mergedConfig (state, getters, rootState, rootGetters) {
|
||||||
|
const { instance } = rootState
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
...instanceDefaultProperties
|
||||||
|
.map(key => [key, state[key] === undefined
|
||||||
|
? instance[key]
|
||||||
|
: state[key]
|
||||||
|
])
|
||||||
|
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
setOption (state, { name, value }) {
|
setOption (state, { name, value }) {
|
||||||
set(state, name, value)
|
set(state, name, value)
|
||||||
|
|
Loading…
Reference in New Issue