spee.ch/react/containers/ShowAsset/view.jsx

82 lines
2.9 KiB
React
Raw Normal View History

import React from 'react';
import ErrorPage from 'components/ErrorPage';
import ShowAssetLite from 'components/ShowAssetLite';
import ShowAssetDetails from 'components/ShowAssetDetails';
class ShowAsset extends React.Component {
componentDidMount () {
2018-02-08 05:15:44 +01:00
const { requestId, requestName, requestModifier, assetRequests } = this.props;
2018-02-07 22:26:07 +01:00
// check to see if we have this asset
2018-02-08 05:15:44 +01:00
if (assetRequests[requestId]) { // case: the assetRequest exists
const request = assetRequests[requestId];
this.onRepeatRequest(requestId, request);
} else { // case: the asset request does not exist
2018-02-08 05:15:44 +01:00
this.onNewRequest(requestId, requestName, requestModifier);
}
}
componentWillReceiveProps (nextProps) {
2018-02-08 05:15:44 +01:00
// case where componentDidMount triggered new props
if (nextProps.assetRequests !== this.props.assetRequests) { // note: reason for not showing small url requests?
console.log('show.assetRequests updated');
const { requestId, requestName, requestModifier, assetRequests } = nextProps;
// if the component received new assetRequests, check again to see if the current request matches one
2018-02-08 05:15:44 +01:00
if (assetRequests[requestId]) { // case: the assetRequest exists
const request = assetRequests[requestId];
this.onRepeatRequest(requestId, request);
} else { // case: the asset request does not exist
2018-02-08 05:15:44 +01:00
this.onNewRequest(requestId, requestName, requestModifier);
}
2018-02-08 05:15:44 +01:00
} else {
console.log('show.assetRequests did not update');
}
}
onNewRequest (id, requestName, requestModifier) {
console.log('new request');
this.props.onNewRequest(id, requestName, requestModifier);
}
onRepeatRequest (requestId, request) {
console.log('repeat request');
const { assets } = this.props;
const { error: requestError, name, claimId } = request;
2018-02-08 05:15:44 +01:00
const assetId = `a#${name}#${claimId}`;
// if error, return and update state with error
if (requestError) {
return this.props.onRequestError(requestError);
}
// update the show asset data in the store
if (assets[assetId]) { // case: the asset data already exists
let { error, name, claimId, shortId, claimData } = assets[assetId];
this.props.onShowExistingAsset(assetId, error, name, claimId, shortId, claimData);
} else { // case: the asset data does not exist yet
this.props.onShowNewAsset(assetId, name, claimId);
}
}
2018-02-05 01:40:28 +01:00
componentWillUnmount () {
this.props.onLeaveShowAsset();
2018-02-05 01:40:28 +01:00
}
render () {
const { error, name, requestExtension } = this.props;
if (error) {
return (
<ErrorPage error={error}/>
);
}
2018-02-08 05:15:44 +01:00
if (name) { // direct requests are passing because name is present so it just goes
if (requestExtension) {
2018-02-05 02:51:17 +01:00
return (
<ShowAssetLite />
2018-02-05 02:51:17 +01:00
);
} else {
return (
<ShowAssetDetails />
2018-02-05 02:51:17 +01:00
);
}
};
return (
<div> </div>
);
}
};
export default ShowAsset;