require('./brewCompress.less'); const React = require('react'); const createClass = require('create-react-class'); const request = require('superagent'); const BrewCompress = createClass({ displayName : 'BrewCompress', getDefaultProps(){ return {}; }, getInitialState() { return { count : 0, batchRange : 0, pending : false, primed : false, err : null, ids : null }; }, prime(){ this.setState({ pending: true }); request.get('/admin/finduncompressed') .then((res)=>this.setState({ count: res.body.count, primed: true, ids: res.body.ids })) .catch((err)=>this.setState({ error: err })) .finally(()=>this.setState({ pending: false })); }, cleanup(){ const brews = this.state.ids; const compressBatches = ()=>{ if(brews.length == 0){ this.setState({ pending: false, primed: false }); return; } const batch = brews.splice(0, 1000); // Process brews in batches of 1000 this.setState({ batchRange: this.state.count - brews.length }); batch.forEach((id, idx)=>{ request.put(`/admin/compress/${id}`) .catch((err)=>this.setState({ error: err })); }); setTimeout(compressBatches, 10000); //Wait 10 seconds between batches }; this.setState({ pending: true }); compressBatches(); }, renderPrimed(){ if(!this.state.primed) return; if(!this.state.count){ return
Compresses the text in brews to binary
{this.renderPrimed()} {this.state.error &&