diff options
Diffstat (limited to 'web/source/settings/redux')
-rw-r--r-- | web/source/settings/redux/index.js | 34 | ||||
-rw-r--r-- | web/source/settings/redux/oauth.js (renamed from web/source/settings/redux/reducers/oauth.js) | 28 | ||||
-rw-r--r-- | web/source/settings/redux/reducers/admin.js | 99 | ||||
-rw-r--r-- | web/source/settings/redux/reducers/instances.js | 42 | ||||
-rw-r--r-- | web/source/settings/redux/reducers/temporary.js | 32 | ||||
-rw-r--r-- | web/source/settings/redux/reducers/user.js | 50 |
6 files changed, 27 insertions, 258 deletions
diff --git a/web/source/settings/redux/index.js b/web/source/settings/redux/index.js index d7a2e6449..12b3db743 100644 --- a/web/source/settings/redux/index.js +++ b/web/source/settings/redux/index.js @@ -1,19 +1,19 @@ /* - GoToSocial - Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org + GoToSocial + Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ "use strict"; @@ -34,18 +34,14 @@ const { const query = require("../lib/query/base"); const combinedReducers = combineReducers({ - oauth: require("./reducers/oauth").reducer, - instances: require("./reducers/instances").reducer, - temporary: require("./reducers/temporary").reducer, - user: require("./reducers/user").reducer, - admin: require("./reducers/admin").reducer, + oauth: require("./oauth").reducer, [query.reducerPath]: query.reducer }); const persistedReducer = persistReducer({ key: "gotosocial-settings", storage: require("redux-persist/lib/storage").default, - stateReconciler: require("redux-persist/lib/stateReconciler/autoMergeLevel2").default, + stateReconciler: require("redux-persist/lib/stateReconciler/autoMergeLevel1").default, whitelist: ["oauth"], }, combinedReducers); @@ -54,7 +50,7 @@ const store = configureStore({ middleware: (getDefaultMiddleware) => { return getDefaultMiddleware({ serializableCheck: { - ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER, "temporary/setScrollElement"] + ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER] } }).concat(query.middleware); } diff --git a/web/source/settings/redux/reducers/oauth.js b/web/source/settings/redux/oauth.js index 129115c9e..081d4e508 100644 --- a/web/source/settings/redux/reducers/oauth.js +++ b/web/source/settings/redux/oauth.js @@ -18,35 +18,31 @@ "use strict"; -const {createSlice} = require("@reduxjs/toolkit"); +const { createSlice } = require("@reduxjs/toolkit"); module.exports = createSlice({ name: "oauth", initialState: { - loginState: 'none', + loginState: 'none' }, reducers: { - setInstance: (state, {payload}) => { - state.instance = payload; + setInstance: (state, { payload }) => { + return { + ...state, + ...payload /* overrides instance, registration keys */ + }; }, - setRegistration: (state, {payload}) => { - state.registration = payload; + authorize: (state) => { + state.loginState = "callback"; }, - setLoginState: (state, {payload}) => { - state.loginState = payload; - }, - login: (state, {payload}) => { + setToken: (state, { payload }) => { state.token = `${payload.token_type} ${payload.access_token}`; state.loginState = "login"; }, - remove: (state, {_payload}) => { + remove: (state, { _payload }) => { delete state.token; delete state.registration; - delete state.isAdmin; - state.loginState = "none"; - }, - setAdmin: (state, {payload}) => { - state.isAdmin = payload; + state.loginState = "logout"; } } });
\ No newline at end of file diff --git a/web/source/settings/redux/reducers/admin.js b/web/source/settings/redux/reducers/admin.js deleted file mode 100644 index 52fbe65e5..000000000 --- a/web/source/settings/redux/reducers/admin.js +++ /dev/null @@ -1,99 +0,0 @@ -/* - GoToSocial - Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -"use strict"; - -const { createSlice } = require("@reduxjs/toolkit"); - -function sortBlocks(blocks) { - return blocks.sort((a, b) => { // alphabetical sort - return a.domain.localeCompare(b.domain); - }); -} - -function emptyBlock() { - return { - public_comment: "", - private_comment: "", - obfuscate: false - }; -} - -module.exports = createSlice({ - name: "admin", - initialState: { - loadedBlockedInstances: false, - blockedInstances: undefined, - bulkBlock: { - list: "", - exportType: "plain", - ...emptyBlock() - }, - newInstanceBlocks: {} - }, - reducers: { - setBlockedInstances: (state, { payload }) => { - state.blockedInstances = {}; - sortBlocks(payload).forEach((entry) => { - state.blockedInstances[entry.domain] = entry; - }); - state.loadedBlockedInstances = true; - }, - - newDomainBlock: (state, { payload: [domain, data] }) => { - if (data == undefined) { - data = { - new: true, - domain, - ...emptyBlock() - }; - } - state.newInstanceBlocks[domain] = data; - }, - - setDomainBlock: (state, { payload: [domain, data = {}] }) => { - state.blockedInstances[domain] = data; - }, - - removeDomainBlock: (state, {payload: domain}) => { - delete state.blockedInstances[domain]; - }, - - updateDomainBlockVal: (state, { payload: [domain, key, val] }) => { - state.newInstanceBlocks[domain][key] = val; - }, - - updateBulkBlockVal: (state, { payload: [key, val] }) => { - state.bulkBlock[key] = val; - }, - - resetBulkBlockVal: (state, { _payload }) => { - state.bulkBlock = { - list: "", - exportType: "plain", - ...emptyBlock() - }; - }, - - exportToField: (state, { _payload }) => { - state.bulkBlock.list = Object.values(state.blockedInstances).map((entry) => { - return entry.domain; - }).join("\n"); - } - } -});
\ No newline at end of file diff --git a/web/source/settings/redux/reducers/instances.js b/web/source/settings/redux/reducers/instances.js deleted file mode 100644 index c58f068ca..000000000 --- a/web/source/settings/redux/reducers/instances.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - GoToSocial - Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -"use strict"; - -const {createSlice} = require("@reduxjs/toolkit"); -const d = require("dotty"); - -module.exports = createSlice({ - name: "instances", - initialState: { - info: {}, - }, - reducers: { - setNamedInstanceInfo: (state, {payload}) => { - let [key, info] = payload; - state.info[key] = info; - }, - setInstanceInfo: (state, {payload}) => { - state.current = payload; - state.adminSettings = payload; - }, - setAdminSettingsVal: (state, {payload: [key, val]}) => { - d.put(state.adminSettings, key, val); - } - } -});
\ No newline at end of file diff --git a/web/source/settings/redux/reducers/temporary.js b/web/source/settings/redux/reducers/temporary.js deleted file mode 100644 index 0155f097a..000000000 --- a/web/source/settings/redux/reducers/temporary.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - GoToSocial - Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -"use strict"; - -const {createSlice} = require("@reduxjs/toolkit"); - -module.exports = createSlice({ - name: "temporary", - initialState: { - }, - reducers: { - setStatus: function(state, {payload}) { - state.status = payload; - } - } -});
\ No newline at end of file diff --git a/web/source/settings/redux/reducers/user.js b/web/source/settings/redux/reducers/user.js deleted file mode 100644 index 21177ebdc..000000000 --- a/web/source/settings/redux/reducers/user.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - GoToSocial - Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -"use strict"; - -const { createSlice } = require("@reduxjs/toolkit"); -const d = require("dotty"); - -module.exports = createSlice({ - name: "user", - initialState: { - profile: {}, - settings: {} - }, - reducers: { - setAccount: (state, { payload }) => { - payload.source = payload.source ?? {}; - payload.source.language = payload.source.language.toUpperCase() ?? "EN"; - payload.source.status_format = payload.source.status_format ?? "plain"; - payload.source.sensitive = payload.source.sensitive ?? false; - - state.profile = payload; - // /user/settings only needs a copy of the 'source' obj - state.settings = { - source: payload.source - }; - }, - setProfileVal: (state, { payload: [key, val] }) => { - d.put(state.profile, key, val); - }, - setSettingsVal: (state, { payload: [key, val] }) => { - d.put(state.settings, key, val); - } - } -});
\ No newline at end of file |