Store/Settings: Refactor `grabUserSettings` action

This function made use of a switch statement that was hundred of
lines in height and a majority of cases had similar logic.

This commit generalizes the logic of the majority of the cases into
a condensed for loop, which additionally handles the few existing
oddball cases in an easy-to-understand manner.
This commit is contained in:
Svallinn 2021-06-06 18:53:18 +01:00
parent e4d7790d6d
commit 5a2c1f401f
No known key found for this signature in database
GPG Key ID: 09FB527F34037CCA
1 changed files with 36 additions and 159 deletions

View File

@ -173,171 +173,48 @@ Object.assign(actions, {
// Add `grabUserSettings` to actions // Add `grabUserSettings` to actions
grabUserSettings: ({ commit }) => { grabUserSettings: ({ commit }) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
settingsDb.find({}, (err, results) => { settingsDb.find(
if (!err) { { _id: { $ne: 'bounds' } },
console.log(results) (err, userSettings) => {
results.forEach((result) => { if (err) {
switch (result._id) { reject(err)
case 'invidiousInstance': return
commit('setInvidiousInstance', result.value) }
break
case 'backendFallback': const specialSettings = new Map([
commit('setBackendFallback', result.value) ['uiScale',
break (value) => {
case 'defaultProfile':
commit('setDefaultProfile', result.value)
break
case 'checkForUpdates':
commit('setCheckForUpdates', result.value)
break
case 'checkForBlogPosts':
commit('setCheckForBlogPosts', result.value)
break
case 'enableSearchSuggestions':
commit('setEnableSearchSuggestions', result.value)
break
case 'backendPreference':
commit('setBackendPreference', result.value)
break
case 'landingPage':
commit('setLandingPage', result.value)
break
case 'region':
commit('setRegion', result.value)
break
case 'listType':
commit('setListType', result.value)
break
case 'thumbnailPreference':
commit('setThumbnailPreference', result.value)
break
case 'barColor':
commit('setBarColor', result.value)
break
case 'uiScale':
if (usingElectron) { if (usingElectron) {
const { webFrame } = require('electron') const { webFrame } = require('electron')
webFrame.setZoomFactor(parseInt(result.value) / 100) webFrame.setZoomFactor(parseInt(value) / 100)
} }
commit('setUiScale', result.value) commit('setUiScale', value)
break }
case 'disableSmoothScrolling': ],
commit('setDisableSmoothScrolling', result.value) ['defaultVolume',
break (value) => {
case 'hideWatchedSubs': sessionStorage.setItem('volume', value)
commit('setHideWatchedSubs', result.value) commit('setDefaultVolume', value)
break }
case 'useRssFeeds': ]
commit('setUseRssFeeds', result.value) ])
break
case 'rememberHistory': for (const setting of userSettings) {
commit('setRememberHistory', result.value) if (specialSettings.has(setting._id)) {
break const specialSettingHandler = specialSettings.get(setting._id)
case 'saveWatchedProgress': specialSettingHandler(setting.value)
commit('setSaveWatchedProgress', result.value) continue
break
case 'removeVideoMetaFiles':
commit('setRemoveVideoMetaFiles', result.value)
break
case 'autoplayVideos':
commit('setAutoplayVideos', result.value)
break
case 'autoplayPlaylists':
commit('setAutoplayPlaylists', result.value)
break
case 'playNextVideo':
commit('setPlayNextVideo', result.value)
break
case 'enableSubtitles':
commit('setEnableSubtitles', result.value)
break
case 'forceLocalBackendForLegacy':
commit('setForceLocalBackendForLegacy', result.value)
break
case 'proxyVideos':
commit('setProxyVideos', result.value)
break
case 'useProxy':
commit('setUseProxy', result.value)
break
case 'proxyProtocol':
commit('setProxyProtocol', result.value)
break
case 'proxyHostname':
commit('setProxyHostname', result.value)
break
case 'proxyPort':
commit('setProxyPort', result.value)
break
case 'defaultTheatreMode':
commit('setDefaultTheatreMode', result.value)
break
case 'defaultInterval':
commit('setDefaultInterval', result.value)
break
case 'defaultVolume':
commit('setDefaultVolume', result.value)
sessionStorage.setItem('volume', result.value)
break
case 'defaultPlayback':
commit('setDefaultPlayback', result.value)
break
case 'defaultVideoFormat':
commit('setDefaultVideoFormat', result.value)
break
case 'defaultQuality':
commit('setDefaultQuality', result.value)
break
case 'hideVideoViews':
commit('setHideVideoViews', result.value)
break
case 'hideVideoLikesAndDislikes':
commit('setHideVideoLikesAndDislikes', result.value)
break
case 'hideChannelSubscriptions':
commit('setHideChannelSubscriptions', result.value)
break
case 'hideCommentLikes':
commit('setHideCommentLikes', result.value)
break
case 'hideRecommendedVideos':
commit('setHideRecommendedVideos', result.value)
break
case 'hideTrendingVideos':
commit('setHideTrendingVideos', result.value)
break
case 'hidePopularVideos':
commit('setHidePopularVideos', result.value)
break
case 'hidePlaylists':
commit('setHidePlaylists', result.value)
break
case 'hideLiveChat':
commit('setHideLiveChat', result.value)
break
case 'hideActiveSubscriptions':
commit('setHideActiveSubscriptions', result.value)
break
case 'videoVolumeMouseScroll':
commit('setVideoVolumeMouseScroll', result.value)
break
case 'useSponsorBlock':
commit('setUseSponsorBlock', result.value)
break
case 'sponsorBlockUrl':
commit('setSponsorBlockUrl', result.value)
break
case 'sponsorBlockShowSkippedToast':
commit('setSponsorBlockShowSkippedToast', result.value)
break
case 'displayVideoPlayButton':
commit('setDisplayVideoPlayButton', result.value)
} }
})
const capitalizedSettingId =
setting._id.replace(/^\w/, (c) => c.toUpperCase())
commit('set' + capitalizedSettingId, setting.value)
}
resolve() resolve()
} }
reject(err) )
})
}) })
} }
}) })