pleroma/packages/pl-fe/src/reducers/index.ts

118 lines
3 KiB
TypeScript
Raw Normal View History

import { combineReducers } from '@reduxjs/toolkit';
import { AUTH_LOGGED_OUT } from 'pl-fe/actions/auth';
import * as BuildConfig from 'pl-fe/build-config';
import entities from 'pl-fe/entity-store/reducer';
2022-11-16 05:32:32 -08:00
import accounts_meta from './accounts-meta';
import admin from './admin';
import admin_user_index from './admin-user-index';
import aliases from './aliases';
import auth from './auth';
import backups from './backups';
2020-03-27 13:59:38 -07:00
import compose from './compose';
import contexts from './contexts';
import conversations from './conversations';
2022-11-15 12:39:43 -08:00
import custom_emojis from './custom-emojis';
import domain_lists from './domain-lists';
import draft_statuses from './draft-statuses';
2020-03-27 13:59:38 -07:00
import filters from './filters';
import followed_tags from './followed-tags';
import history from './history';
2020-04-01 13:05:52 -07:00
import instance from './instance';
2022-11-15 12:39:43 -08:00
import listAdder from './list-adder';
import listEditor from './list-editor';
import lists from './lists';
import locations from './locations';
import me from './me';
import meta from './meta';
import mutes from './mutes';
import notifications from './notifications';
2022-05-02 13:55:52 -07:00
import onboarding from './onboarding';
2022-11-15 12:39:43 -08:00
import pending_statuses from './pending-statuses';
import plfe from './pl-fe';
import polls from './polls';
2022-11-15 12:39:43 -08:00
import push_notifications from './push-notifications';
import scheduled_statuses from './scheduled-statuses';
import search from './search';
import security from './security';
2022-11-15 12:39:43 -08:00
import status_lists from './status-lists';
import statuses from './statuses';
import suggestions from './suggestions';
import tags from './tags';
import timelines from './timelines';
2022-11-15 12:39:43 -08:00
import trending_statuses from './trending-statuses';
import trends from './trends';
2022-11-15 12:39:43 -08:00
import user_lists from './user-lists';
2020-03-27 13:59:38 -07:00
const reducers = {
accounts_meta,
admin,
admin_user_index,
aliases,
auth,
backups,
2020-03-27 13:59:38 -07:00
compose,
contexts,
conversations,
2020-03-27 13:59:38 -07:00
custom_emojis,
domain_lists,
draft_statuses,
entities,
2020-03-27 13:59:38 -07:00
filters,
followed_tags,
history,
2020-04-01 13:05:52 -07:00
instance,
2020-03-27 13:59:38 -07:00
listAdder,
listEditor,
lists,
locations,
me,
meta,
mutes,
notifications,
onboarding,
pending_statuses,
plfe,
2020-03-27 13:59:38 -07:00
polls,
push_notifications,
2021-06-27 12:58:40 -07:00
scheduled_statuses,
search,
security,
status_lists,
statuses,
suggestions,
tags,
timelines,
2022-03-21 11:09:01 -07:00
trending_statuses,
trends,
user_lists,
};
const appReducer = combineReducers(reducers);
type AppState = ReturnType<typeof appReducer>;
2020-09-27 17:09:35 -07:00
// Clear the state (mostly) when the user logs out
const logOut = (state: AppState): ReturnType<typeof appReducer> => {
2022-03-21 11:09:01 -07:00
if (BuildConfig.NODE_ENV === 'production') {
location.href = '/login';
}
const newState = rootReducer(undefined, { type: '' });
2020-09-27 17:09:35 -07:00
const { instance, plfe, custom_emojis, auth } = state;
return { ...newState, instance, plfe, custom_emojis, auth };
2020-09-27 17:09:35 -07:00
};
2022-03-15 06:48:18 -07:00
const rootReducer: typeof appReducer = (state, action) => {
switch (action.type) {
2022-05-11 14:06:35 -07:00
case AUTH_LOGGED_OUT:
return appReducer(logOut(state as AppState), action);
2022-05-11 14:06:35 -07:00
default:
return appReducer(state, action);
2020-09-27 17:09:35 -07:00
}
2020-03-27 13:59:38 -07:00
};
export default appReducer;