|
|
@@ -23,6 +23,10 @@ function endsWith(what, endings) { |
|
|
|
throw Error('Expected second argument to be either a string or an array');
|
|
|
|
}
|
|
|
|
|
|
|
|
function maskRows(rows) {
|
|
|
|
return rows.map(r => r.map(c => '-'));
|
|
|
|
}
|
|
|
|
|
|
|
|
class WBCollectionContent extends Component {
|
|
|
|
constructor(...args) {
|
|
|
|
super(...args);
|
|
|
@@ -74,16 +78,29 @@ class WBCollectionContent extends Component { |
|
|
|
return manifestWorker.postMessage([ 'precreatePaths', paths ]);
|
|
|
|
});
|
|
|
|
|
|
|
|
let lastListingTimestamp = new Date(0);
|
|
|
|
|
|
|
|
for (let i = 0; i < streams.length; i++) {
|
|
|
|
prom_1 = prom_1.then(() => manifestWorker.postMessage([ 'parseStream', streams[i] ]));
|
|
|
|
|
|
|
|
prom_1 = prom_1.then(() => manifestWorker.postMessage([
|
|
|
|
'listDirectory', '.' + this.props.collectionPath, true
|
|
|
|
]));
|
|
|
|
prom_1 = prom_1.then(() => {
|
|
|
|
if (new Date() - lastListingTimestamp < 1000)
|
|
|
|
return;
|
|
|
|
|
|
|
|
lastListingTimestamp = new Date();
|
|
|
|
|
|
|
|
prom_1 = prom_1.then(e => {
|
|
|
|
this.prepareRows(e.data[1]);
|
|
|
|
this.setState({ 'parsedStreams': (i + 1) });
|
|
|
|
let prom_2 = new Promise(accept => accept());
|
|
|
|
|
|
|
|
prom_2 = prom_2.then(() => manifestWorker.postMessage([
|
|
|
|
'listDirectory', '.' + this.props.collectionPath, true
|
|
|
|
]));
|
|
|
|
|
|
|
|
prom_2 = prom_2.then(e => {
|
|
|
|
this.prepareRows(e.data[1]);
|
|
|
|
this.setState({ 'parsedStreams': (i + 1) });
|
|
|
|
});
|
|
|
|
|
|
|
|
return prom_2;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
@@ -102,6 +119,8 @@ class WBCollectionContent extends Component { |
|
|
|
componentWillReceiveProps(nextProps) {
|
|
|
|
this.props = nextProps;
|
|
|
|
|
|
|
|
this.setState({ rows: maskRows(this.state.rows) });
|
|
|
|
|
|
|
|
const { manifestWorker, mode } = this.state;
|
|
|
|
const { collectionPath } = this.props;
|
|
|
|
|
|
|
|