Co-authored-by: Erez Rokah <erezrokah@users.noreply.github.com>
This commit is contained in:
@ -413,6 +413,7 @@ function mediaLibraryOpened(payload: {
|
||||
forImage?: boolean;
|
||||
privateUpload?: boolean;
|
||||
value?: string;
|
||||
replaceIndex?: number;
|
||||
allowMultiple?: boolean;
|
||||
config?: Map<string, unknown>;
|
||||
field?: EntryField;
|
||||
|
@ -45,6 +45,8 @@ const defaultState: {
|
||||
files?: MediaFile[];
|
||||
config: Map<string, unknown>;
|
||||
field?: EntryField;
|
||||
value?: string | string[];
|
||||
replaceIndex?: number;
|
||||
} = {
|
||||
isVisible: false,
|
||||
showMediaButton: true,
|
||||
@ -62,7 +64,8 @@ function mediaLibrary(state = Map(defaultState), action: MediaLibraryAction) {
|
||||
});
|
||||
|
||||
case MEDIA_LIBRARY_OPEN: {
|
||||
const { controlID, forImage, privateUpload, config, field } = action.payload;
|
||||
const { controlID, forImage, privateUpload, config, field, value, replaceIndex } =
|
||||
action.payload;
|
||||
const libConfig = config || Map();
|
||||
const privateUploadChanged = state.get('privateUpload') !== privateUpload;
|
||||
if (privateUploadChanged) {
|
||||
@ -76,6 +79,8 @@ function mediaLibrary(state = Map(defaultState), action: MediaLibraryAction) {
|
||||
controlMedia: Map(),
|
||||
displayURLs: Map(),
|
||||
field,
|
||||
value,
|
||||
replaceIndex,
|
||||
});
|
||||
}
|
||||
return state.withMutations(map => {
|
||||
@ -86,6 +91,8 @@ function mediaLibrary(state = Map(defaultState), action: MediaLibraryAction) {
|
||||
map.set('privateUpload', privateUpload);
|
||||
map.set('config', libConfig);
|
||||
map.set('field', field);
|
||||
map.set('value', value);
|
||||
map.set('replaceIndex', replaceIndex);
|
||||
});
|
||||
}
|
||||
|
||||
@ -95,8 +102,25 @@ function mediaLibrary(state = Map(defaultState), action: MediaLibraryAction) {
|
||||
case MEDIA_INSERT: {
|
||||
const { mediaPath } = action.payload;
|
||||
const controlID = state.get('controlID');
|
||||
const value = state.get('value');
|
||||
|
||||
if (!Array.isArray(value)) {
|
||||
return state.withMutations(map => {
|
||||
map.setIn(['controlMedia', controlID], mediaPath);
|
||||
});
|
||||
}
|
||||
|
||||
const replaceIndex = state.get('replaceIndex');
|
||||
const mediaArray = Array.isArray(mediaPath) ? mediaPath : [mediaPath];
|
||||
const valueArray = value as string[];
|
||||
if (typeof replaceIndex == 'number') {
|
||||
valueArray[replaceIndex] = mediaArray[0];
|
||||
} else {
|
||||
valueArray.push(...mediaArray);
|
||||
}
|
||||
|
||||
return state.withMutations(map => {
|
||||
map.setIn(['controlMedia', controlID], mediaPath);
|
||||
map.setIn(['controlMedia', controlID], valueArray);
|
||||
});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user