Daniel Lautzenheiser 8acda23acc
Feature/rebrand (#3)
2022-09-30 08:13:47 -04:00

83 lines
2.6 KiB
TypeScript

import { List } from 'immutable';
import auth from './auth';
import config from './config';
import integrations, * as fromIntegrations from './integrations';
import entries, * as fromEntries from './entries';
import cursors from './cursors';
import editorialWorkflow, * as fromEditorialWorkflow from './editorialWorkflow';
import entryDraft from './entryDraft';
import collections from './collections';
import search from './search';
import medias from './medias';
import mediaLibrary from './mediaLibrary';
import deploys, * as fromDeploys from './deploys';
import globalUI from './globalUI';
import status from './status';
import scroll from './scroll';
import type { Status } from '../constants/publishModes';
import type { State, Collection } from '../types/redux';
const reducers = {
auth,
config,
collections,
search,
integrations,
entries,
cursors,
editorialWorkflow,
entryDraft,
medias,
mediaLibrary,
deploys,
globalUI,
status,
scroll,
};
export default reducers;
/*
* Selectors
*/
export function selectEntry(state: State, collection: string, slug: string) {
return fromEntries.selectEntry(state.entries, collection, slug);
}
export function selectEntries(state: State, collection: Collection) {
return fromEntries.selectEntries(state.entries, collection);
}
export function selectPublishedSlugs(state: State, collection: string) {
return fromEntries.selectPublishedSlugs(state.entries, collection);
}
export function selectSearchedEntries(state: State, availableCollections: string[]) {
// only return search results for actually available collections
return List(state.search.entryIds)
.filter(entryId => availableCollections.indexOf(entryId!.collection) !== -1)
.map(entryId => fromEntries.selectEntry(state.entries, entryId!.collection, entryId!.slug));
}
export function selectDeployPreview(state: State, collection: string, slug: string) {
return fromDeploys.selectDeployPreview(state.deploys, collection, slug);
}
export function selectUnpublishedEntry(state: State, collection: string, slug: string) {
return fromEditorialWorkflow.selectUnpublishedEntry(state.editorialWorkflow, collection, slug);
}
export function selectUnpublishedEntriesByStatus(state: State, status: Status) {
return fromEditorialWorkflow.selectUnpublishedEntriesByStatus(state.editorialWorkflow, status);
}
export function selectUnpublishedSlugs(state: State, collection: string) {
return fromEditorialWorkflow.selectUnpublishedSlugs(state.editorialWorkflow, collection);
}
export function selectIntegration(state: State, collection: string | null, hook: string) {
return fromIntegrations.selectIntegration(state.integrations, collection, hook);
}