diff options
Diffstat (limited to 'src/modules/serverSideConfig.js')
| -rw-r--r-- | src/modules/serverSideConfig.js | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/src/modules/serverSideConfig.js b/src/modules/serverSideConfig.js deleted file mode 100644 index 476263bc..00000000 --- a/src/modules/serverSideConfig.js +++ /dev/null @@ -1,140 +0,0 @@ -import { get, set } from 'lodash' - -const defaultApi = ({ rootState, commit }, { path, value }) => { - const params = {} - set(params, path, value) - return rootState - .api - .backendInteractor - .updateProfile({ params }) - .then(result => { - commit('addNewUsers', [result]) - commit('setCurrentUser', result) - }) -} - -const notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => { - const settings = {} - set(settings, path, value) - return rootState - .api - .backendInteractor - .updateNotificationSettings({ settings }) - .then(result => { - if (result.status === 'success') { - commit('confirmServerSideOption', { name, value }) - } else { - commit('confirmServerSideOption', { name, value: oldValue }) - } - }) -} - -/** - * Map that stores relation between path for reading (from user profile), - * for writing (into API) an what API to use. - * - * Shorthand - instead of { get, set, api? } object it's possible to use string - * in case default api is used and get = set - * - * If no api is specified, defaultApi is used (see above) - */ -export const settingsMap = { - defaultScope: 'source.privacy', - defaultNSFW: 'source.sensitive', // BROKEN: pleroma/pleroma#2837 - stripRichContent: { - get: 'source.pleroma.no_rich_text', - set: 'no_rich_text' - }, - // Privacy - locked: 'locked', - acceptChatMessages: { - get: 'pleroma.accepts_chat_messages', - set: 'accepts_chat_messages' - }, - allowFollowingMove: { - get: 'pleroma.allow_following_move', - set: 'allow_following_move' - }, - discoverable: { - get: 'source.pleroma.discoverable', - set: 'discoverable' - }, - hideFavorites: { - get: 'pleroma.hide_favorites', - set: 'hide_favorites' - }, - hideFollowers: { - get: 'pleroma.hide_followers', - set: 'hide_followers' - }, - hideFollows: { - get: 'pleroma.hide_follows', - set: 'hide_follows' - }, - hideFollowersCount: { - get: 'pleroma.hide_followers_count', - set: 'hide_followers_count' - }, - hideFollowsCount: { - get: 'pleroma.hide_follows_count', - set: 'hide_follows_count' - }, - // NotificationSettingsAPIs - webPushHideContents: { - get: 'pleroma.notification_settings.hide_notification_contents', - set: 'hide_notification_contents', - api: notificationsApi - }, - blockNotificationsFromStrangers: { - get: 'pleroma.notification_settings.block_from_strangers', - set: 'block_from_strangers', - api: notificationsApi - } -} - -export const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null])) - -const serverSideConfig = { - state: { ...defaultState }, - mutations: { - confirmServerSideOption (state, { name, value }) { - set(state, name, value) - }, - wipeServerSideOption (state, { name }) { - set(state, name, null) - }, - wipeAllServerSideOptions (state) { - Object.keys(settingsMap).forEach(key => { - set(state, key, null) - }) - }, - // Set the settings based on their path location - setCurrentUser (state, user) { - Object.entries(settingsMap).forEach((map) => { - const [name, value] = map - const { get: path = value } = value - set(state, name, get(user._original, path)) - }) - } - }, - actions: { - setServerSideOption ({ rootState, state, commit, dispatch }, { name, value }) { - const oldValue = get(state, name) - const map = settingsMap[name] - if (!map) throw new Error('Invalid server-side setting') - const { set: path = map, api = defaultApi } = map - commit('wipeServerSideOption', { name }) - - api({ rootState, commit }, { path, value, oldValue }) - .catch((e) => { - console.warn('Error setting server-side option:', e) - commit('confirmServerSideOption', { name, value: oldValue }) - }) - }, - logout ({ commit }) { - commit('wipeAllServerSideOptions') - } - } -} - -export default serverSideConfig |
