summaryrefslogtreecommitdiff
path: root/web/source/settings/redux
diff options
context:
space:
mode:
Diffstat (limited to 'web/source/settings/redux')
-rw-r--r--web/source/settings/redux/index.js34
-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.js99
-rw-r--r--web/source/settings/redux/reducers/instances.js42
-rw-r--r--web/source/settings/redux/reducers/temporary.js32
-rw-r--r--web/source/settings/redux/reducers/user.js50
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