1
0
mirror of https://github.com/ascribe/onion.git synced 2024-12-22 09:23:13 +01:00

Refactor to comply with PR feedback

This commit is contained in:
Tim Daubenschütz 2016-03-01 12:55:27 +01:00
parent b2a21c5cc1
commit e863349531
2 changed files with 27 additions and 32 deletions

View File

@ -41,42 +41,41 @@ const S3DownloadButton = React.createClass({
window.clearInterval(this.state.signatureExpiryTime); window.clearInterval(this.state.signatureExpiryTime);
}, },
componentDidUpdate() {
const { signatureExpiryTimerId, downloadUrl } = this.state;
if(!signatureExpiryTimerId && downloadUrl) {
/**
* The signed url, however can expire, which is why
* we need to renew it when it expires.
*/
const { downloadUrl } = this.state;
const expires = parseInt(queryParamsToArgs(downloadUrl.split('?')[1]).expires, 10);
const now = new Date().getTime() / 1000;
/**
* Amazon uses seconds as their signature unix timestamp
* while `setInterval` uses milliseconds. Therefore we need to
* multiply with 1000.
*/
const interval = (expires - now) * 1000;
this.setState({
// Substract 5s to make sure there is a big enough window to sign again before expiration
signatureExpiryTimerId: window.setInterval(this.signUrl, interval - 5000)
});
}
},
transformS3UrlToS3Key(url) { transformS3UrlToS3Key(url) {
return url.replace(`https://${AppConstants.cloudfrontDomain}/`, ''); return url.replace(`https://${AppConstants.cloudfrontDomain}/`, '');
}, },
signUrl(next) { signUrl() {
const { url, title, artistName } = this.props; const { url, title, artistName } = this.props;
S3Fetcher S3Fetcher
.signUrl(this.transformS3UrlToS3Key(url), title, artistName) .signUrl(this.transformS3UrlToS3Key(url), title, artistName)
.then(({ signed_url: downloadUrl }) => this.setState({ downloadUrl }, next)) .then(({ signed_url: downloadUrl }) => {
const { signatureExpiryTimerId } = this.state;
let newState = { downloadUrl };
if(!signatureExpiryTimerId) {
/**
* The signed url, however can expire, which is why
* we need to renew it when it expires.
*/
const expires = parseInt(queryParamsToArgs(downloadUrl.split('?')[1]).expires, 10);
const now = new Date().getTime() / 1000;
/**
* Amazon uses seconds as their signature unix timestamp
* while `setInterval` uses milliseconds. Therefore we need to
* multiply with 1000.
*/
const interval = (expires - now) * 1000;
Object.assign(newState, {
// Substract 5s to make sure there is a big enough window to sign again before expiration
signatureExpiryTimerId: window.setInterval(this.signUrl, interval - 5000)
});
}
this.setState(newState);
})
.catch(console.logGlobal); .catch(console.logGlobal);
}, },

View File

@ -34,10 +34,6 @@ class NotificationStore {
this.editionListNotifications = res.notifications; this.editionListNotifications = res.notifications;
} }
onFlushPieceListNotifications() {
this.editionListNotifications = [];
}
onUpdateEditionNotifications(res) { onUpdateEditionNotifications(res) {
this.editionNotifications = res.notification; this.editionNotifications = res.notification;
} }