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:
parent
e4d7790d6d
commit
5a2c1f401f
|
@ -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)
|
|
||||||
break
|
|
||||||
case 'hideWatchedSubs':
|
|
||||||
commit('setHideWatchedSubs', result.value)
|
|
||||||
break
|
|
||||||
case 'useRssFeeds':
|
|
||||||
commit('setUseRssFeeds', result.value)
|
|
||||||
break
|
|
||||||
case 'rememberHistory':
|
|
||||||
commit('setRememberHistory', result.value)
|
|
||||||
break
|
|
||||||
case 'saveWatchedProgress':
|
|
||||||
commit('setSaveWatchedProgress', result.value)
|
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
})
|
],
|
||||||
|
['defaultVolume',
|
||||||
|
(value) => {
|
||||||
|
sessionStorage.setItem('volume', value)
|
||||||
|
commit('setDefaultVolume', value)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
])
|
||||||
|
|
||||||
|
for (const setting of userSettings) {
|
||||||
|
if (specialSettings.has(setting._id)) {
|
||||||
|
const specialSettingHandler = specialSettings.get(setting._id)
|
||||||
|
specialSettingHandler(setting.value)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
const capitalizedSettingId =
|
||||||
|
setting._id.replace(/^\w/, (c) => c.toUpperCase())
|
||||||
|
|
||||||
|
commit('set' + capitalizedSettingId, setting.value)
|
||||||
|
}
|
||||||
|
|
||||||
resolve()
|
resolve()
|
||||||
}
|
}
|
||||||
reject(err)
|
)
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue