Skip to content

Commit

Permalink
remove field refs from AssetProxy
Browse files Browse the repository at this point in the history
  • Loading branch information
erquhart committed Jul 24, 2017
1 parent 44d39f4 commit da96123
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
5 changes: 4 additions & 1 deletion src/components/Widgets/FileControl.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,17 @@ export default class FileControl extends React.Component {
const fileList = e.dataTransfer ? e.dataTransfer.files : e.target.files;
const files = [...fileList];
const imageType = /^image\//;
const isPrivate = this.props.field.get('private', false);
const mediaFolder = this.props.field.get('media_folder');
const publicFolder = this.props.field.get('public_folder');

// Return the first file on the list
const file = files[0];

this.props.onRemoveAsset(this.props.value);
if (file) {
this.setState({ processing: true });
this.promise = createAssetProxy(file.name, file, false, this.props.field)
this.promise = createAssetProxy(file.name, file, false, { isPrivate, mediaFolder, publicFolder })
.then((assetProxy) => {
this.setState({ processing: false });
this.props.onAddAsset(assetProxy);
Expand Down
4 changes: 3 additions & 1 deletion src/components/Widgets/ImageControl.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ export default class ImageControl extends React.Component {
const fileList = e.dataTransfer ? e.dataTransfer.files : e.target.files;
const files = [...fileList];
const imageType = /^image\//;
const mediaFolder = this.props.field.get('media_folder');
const publicFolder = this.props.field.get('public_folder');

// Iterate through the list of files and return the first image on the list
const file = files.find((currentFile) => {
Expand All @@ -57,7 +59,7 @@ export default class ImageControl extends React.Component {
this.props.onRemoveAsset(this.props.value);
if (file) {
this.setState({ processing: true });
this.promise = createAssetProxy(file.name, file, false, this.props.field)
this.promise = createAssetProxy(file.name, file, false, { mediaFolder, publicFolder })
.then((assetProxy) => {
this.setState({ processing: false });
this.props.onAddAsset(assetProxy);
Expand Down
17 changes: 9 additions & 8 deletions src/valueObjects/AssetProxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ export const setStore = (storeObj) => {
store = storeObj;
};

export default function AssetProxy(value, fileObj, uploaded = false, field = null) {
export default function AssetProxy(value, fileObj, uploaded = false, opts = {}) {
const config = store.getState().config;
const media_folder = (field && field.has('media_folder')) ? field.get('media_folder') : config.get('media_folder');
const public_folder = (field && field.has('public_folder')) ? field.get('public_folder') : '/' + media_folder;
const mediaFolder = opts.mediaFolder || config.get('media_folder');
const publicFolder = opts.mediaFolder || config.get('public_folder');
this.value = value;
this.fileObj = fileObj;
this.uploaded = uploaded;
this.sha = null;
this.path = media_folder && !uploaded ? resolvePath(value, media_folder) : value;
this.public_path = !uploaded ? resolvePath(value, public_folder) : value;
this.path = mediaFolder && !uploaded ? resolvePath(value, mediaFolder) : value;
this.public_path = !uploaded ? resolvePath(value, publicFolder) : value;
}

AssetProxy.prototype.toString = function () {
Expand All @@ -41,15 +41,16 @@ AssetProxy.prototype.toBase64 = function () {
});
};

export function createAssetProxy(value, fileObj, uploaded = false, field = null) {
export function createAssetProxy(value, fileObj, uploaded = false, opts = {}) {
const state = store.getState();
const privateUpload = field ? field.get('private', false) : false;
const privateUpload = opts.isPrivate || false;
const integration = selectIntegration(state, null, 'assetStore');
if (integration && !uploaded) {
const provider = integration && getIntegrationProvider(state.integrations, currentBackend(state.config).getToken, integration);
return provider.upload(fileObj, privateUpload).then(
response => (
new AssetProxy(response.assetURL.replace(/^(https?):/, ''), null, true, field)
const assetProxyOpts = { mediaFolder: opts.mediaFolder, publicFolder: opts.publicFolder };
new AssetProxy(response.assetURL.replace(/^(https?):/, ''), null, true, assetProxyOpts)
),
error => new AssetProxy(value, fileObj, false, field)
);
Expand Down

0 comments on commit da96123

Please sign in to comment.