2b41d8a838
* fix(media_folder_relative): use collection name in unpublished entry * refactor: pass arguments as object to AssetProxy ctor * feat: support media folders per collection * feat: resolve media files path based on entry path * fix: asset public path resolving * refactor: introduce typescript for AssetProxy * refactor: code cleanup * refactor(asset-proxy): add tests,switch to typescript,extract arguments * refactor: typescript for editorialWorkflow * refactor: add typescript for media library actions * refactor: fix type error on map set * refactor: move locale selector into reducer * refactor: add typescript for entries actions * refactor: remove duplication between asset store and media lib * feat: load assets from backend using API * refactor(github): add typescript, cache media files * fix: don't load media URL if already loaded * feat: add media folder config to collection * fix: load assets from API when not in UI state * feat: load entry media files when opening media library * fix: editorial workflow draft media files bug fixes * test(unit): fix unit tests * fix: editor control losing focus * style: add eslint object-shorthand rule * test(cypress): re-record mock data * fix: fix non github backends, large media * test: uncomment only in tests * fix(backend-test): add missing displayURL property * test(e2e): add media library tests * test(e2e): enable visual testing * test(e2e): add github backend media library tests * test(e2e): add git-gateway large media tests * chore: post rebase fixes * test: fix tests * test: fix tests * test(cypress): fix tests * docs: add media_folder docs * test(e2e): add media library delete test * test(e2e): try and fix image comparison on CI * ci: reduce test machines from 9 to 8 * test: add reducers and selectors unit tests * test(e2e): disable visual regression testing for now * test: add getAsset unit tests * refactor: use Asset class component instead of hooks * build: don't inline source maps * test: add more media path tests
71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
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 '../constants/publishModes';
|
|
import { State } from '../types/redux';
|
|
|
|
const reducers = {
|
|
auth,
|
|
config,
|
|
collections,
|
|
search,
|
|
integrations,
|
|
entries,
|
|
cursors,
|
|
editorialWorkflow,
|
|
entryDraft,
|
|
medias,
|
|
mediaLibrary,
|
|
deploys,
|
|
globalUI,
|
|
};
|
|
|
|
export default reducers;
|
|
|
|
/*
|
|
* Selectors
|
|
*/
|
|
export const selectEntry = (state: State, collection: string, slug: string) =>
|
|
fromEntries.selectEntry(state.entries, collection, slug);
|
|
|
|
export const selectEntries = (state: State, collection: string) =>
|
|
fromEntries.selectEntries(state.entries, collection);
|
|
|
|
export const selectPublishedSlugs = (state: State, collection: string) =>
|
|
fromEntries.selectPublishedSlugs(state.entries, collection);
|
|
|
|
export const selectSearchedEntries = (state: State) => {
|
|
const searchItems = state.search.get('entryIds');
|
|
return (
|
|
searchItems &&
|
|
searchItems.map(({ collection, slug }) =>
|
|
fromEntries.selectEntry(state.entries, collection, slug),
|
|
)
|
|
);
|
|
};
|
|
|
|
export const selectDeployPreview = (state: State, collection: string, slug: string) =>
|
|
fromDeploys.selectDeployPreview(state.deploys, collection, slug);
|
|
|
|
export const selectUnpublishedEntry = (state: State, collection: string, slug: string) =>
|
|
fromEditorialWorkflow.selectUnpublishedEntry(state.editorialWorkflow, collection, slug);
|
|
|
|
export const selectUnpublishedEntriesByStatus = (state: State, status: Status) =>
|
|
fromEditorialWorkflow.selectUnpublishedEntriesByStatus(state.editorialWorkflow, status);
|
|
|
|
export const selectUnpublishedSlugs = (state: State, collection: string) =>
|
|
fromEditorialWorkflow.selectUnpublishedSlugs(state.editorialWorkflow, collection);
|
|
|
|
export const selectIntegration = (state: State, collection: string | null, hook: string) =>
|
|
fromIntegrations.selectIntegration(state.integrations, collection, hook);
|