fix: folder collection path (#549)
This commit is contained in:
committed by
GitHub
parent
93915dac35
commit
8f7237ab7c
@ -44,7 +44,7 @@ import { Cursor } from '../lib/util';
|
||||
import { selectFields, updateFieldByKey } from '../lib/util/collection.util';
|
||||
import { selectCollectionEntriesCursor } from '../reducers/selectors/cursors';
|
||||
import {
|
||||
selectEntriesSortFields,
|
||||
selectEntriesSortField,
|
||||
selectIsFetching,
|
||||
selectPublishedSlugs,
|
||||
} from '../reducers/selectors/entries';
|
||||
@ -653,10 +653,9 @@ export function loadEntries(collection: Collection, page = 0) {
|
||||
return;
|
||||
}
|
||||
const state = getState();
|
||||
const sortFields = selectEntriesSortFields(state, collection.name);
|
||||
if (sortFields && sortFields.length > 0) {
|
||||
const field = sortFields[0];
|
||||
return dispatch(sortByField(collection, field.key, field.direction));
|
||||
const sortField = selectEntriesSortField(collection.name)(state);
|
||||
if (sortField) {
|
||||
return dispatch(sortByField(collection, sortField.key, sortField.direction));
|
||||
}
|
||||
|
||||
const configState = state.config;
|
||||
@ -956,7 +955,7 @@ export function persistEntry(collection: Collection) {
|
||||
const state = getState();
|
||||
const entryDraft = state.entryDraft;
|
||||
const fieldsErrors = entryDraft.fieldsErrors;
|
||||
const usedSlugs = selectPublishedSlugs(state, collection.name);
|
||||
const usedSlugs = selectPublishedSlugs(collection.name)(state);
|
||||
|
||||
// Early return if draft contains validation errors
|
||||
if (Object.keys(fieldsErrors).length > 0) {
|
||||
|
@ -6,11 +6,9 @@ import {
|
||||
LOAD_ASSET_SUCCESS,
|
||||
REMOVE_ASSET,
|
||||
} from '../constants';
|
||||
import { isAbsolutePath } from '../lib/util';
|
||||
import { selectMediaFilePath } from '../lib/util/media.util';
|
||||
import { selectMediaFileByPath } from '../reducers/selectors/mediaLibrary';
|
||||
import { createAssetProxy } from '../valueObjects/AssetProxy';
|
||||
import { getMediaDisplayURL, getMediaFile, waitForMediaLibraryToLoad } from './mediaLibrary';
|
||||
import { getMediaFile, waitForMediaLibraryToLoad } from './mediaLibrary';
|
||||
|
||||
import type { AnyAction } from 'redux';
|
||||
import type { ThunkDispatch } from 'redux-thunk';
|
||||
@ -58,18 +56,9 @@ async function loadAsset(
|
||||
dispatch(loadAssetRequest(resolvedPath));
|
||||
// load asset url from backend
|
||||
await waitForMediaLibraryToLoad(dispatch, getState());
|
||||
const file = selectMediaFileByPath(getState(), resolvedPath);
|
||||
|
||||
let asset: AssetProxy;
|
||||
if (file) {
|
||||
const url = await getMediaDisplayURL(dispatch, getState(), file);
|
||||
asset = createAssetProxy({ path: resolvedPath, url: url || resolvedPath });
|
||||
dispatch(addAsset(asset));
|
||||
} else {
|
||||
const { url } = await getMediaFile(getState(), resolvedPath);
|
||||
asset = createAssetProxy({ path: resolvedPath, url });
|
||||
dispatch(addAsset(asset));
|
||||
}
|
||||
const { url } = await getMediaFile(getState(), resolvedPath);
|
||||
const asset = createAssetProxy({ path: resolvedPath, url });
|
||||
dispatch(addAsset(asset));
|
||||
dispatch(loadAssetSuccess(resolvedPath));
|
||||
return asset;
|
||||
} catch (error: unknown) {
|
||||
@ -105,7 +94,8 @@ export function getAsset<F extends BaseField = UnknownField>(
|
||||
path,
|
||||
field as Field,
|
||||
);
|
||||
let { asset, isLoading, error } = state.medias[resolvedPath] || {};
|
||||
|
||||
const { asset, isLoading } = state.medias[resolvedPath] || {};
|
||||
if (isLoading) {
|
||||
return promiseCache[resolvedPath];
|
||||
}
|
||||
@ -116,23 +106,9 @@ export function getAsset<F extends BaseField = UnknownField>(
|
||||
}
|
||||
|
||||
const p = new Promise<AssetProxy>(resolve => {
|
||||
if (isAbsolutePath(resolvedPath)) {
|
||||
// asset path is a public url so we can just use it as is
|
||||
asset = createAssetProxy({ path: resolvedPath, url: path });
|
||||
dispatch(addAsset(asset));
|
||||
loadAsset(resolvedPath, dispatch, getState).then(asset => {
|
||||
resolve(asset);
|
||||
} else {
|
||||
if (error) {
|
||||
// on load error default back to original path
|
||||
asset = createAssetProxy({ path: resolvedPath, url: path });
|
||||
dispatch(addAsset(asset));
|
||||
resolve(asset);
|
||||
} else {
|
||||
loadAsset(resolvedPath, dispatch, getState).then(asset => {
|
||||
resolve(asset);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
promiseCache[resolvedPath] = p;
|
||||
|
@ -34,6 +34,7 @@ import type { AnyAction } from 'redux';
|
||||
import type { ThunkDispatch } from 'redux-thunk';
|
||||
import type {
|
||||
BaseField,
|
||||
Collection,
|
||||
DisplayURLState,
|
||||
Field,
|
||||
ImplementationMediaFile,
|
||||
@ -83,16 +84,28 @@ export function openMediaLibrary<F extends BaseField = UnknownField>(
|
||||
allowMultiple?: boolean;
|
||||
replaceIndex?: number;
|
||||
config?: Record<string, unknown>;
|
||||
collection?: Collection<F>;
|
||||
field?: F;
|
||||
} = {},
|
||||
) {
|
||||
return (dispatch: ThunkDispatch<RootState, {}, AnyAction>, getState: () => RootState) => {
|
||||
const state = getState();
|
||||
const mediaLibrary = state.mediaLibrary.externalLibrary;
|
||||
const { controlID, value, config = {}, allowMultiple, forImage, replaceIndex, field } = payload;
|
||||
const {
|
||||
controlID,
|
||||
value,
|
||||
config = {},
|
||||
allowMultiple,
|
||||
forImage,
|
||||
replaceIndex,
|
||||
collection,
|
||||
field,
|
||||
} = payload;
|
||||
|
||||
if (mediaLibrary) {
|
||||
mediaLibrary.show({ id: controlID, value, config, allowMultiple, imagesOnly: forImage });
|
||||
}
|
||||
|
||||
dispatch(
|
||||
mediaLibraryOpened({
|
||||
controlID,
|
||||
@ -101,6 +114,7 @@ export function openMediaLibrary<F extends BaseField = UnknownField>(
|
||||
allowMultiple,
|
||||
replaceIndex,
|
||||
config,
|
||||
collection: collection as Collection,
|
||||
field: field as Field,
|
||||
}),
|
||||
);
|
||||
@ -406,6 +420,7 @@ function mediaLibraryOpened(payload: {
|
||||
replaceIndex?: number;
|
||||
allowMultiple?: boolean;
|
||||
config?: Record<string, unknown>;
|
||||
collection?: Collection;
|
||||
field?: Field;
|
||||
}) {
|
||||
return { type: MEDIA_LIBRARY_OPEN, payload } as const;
|
||||
|
Reference in New Issue
Block a user