Skip to content

Commit f7e018d

Browse files
committed
Merge pull request mailru#273 from termi/issue-272
#272 fixed: call reader.readEntries till it return non-empty array
2 parents 98093c0 + 8d2dac1 commit f7e018d

File tree

4 files changed

+80
-60
lines changed

4 files changed

+80
-60
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,11 @@ Button like link.
13961396
## Changelog
13971397
13981398
1399+
### 2.0.10
1400+
<ul>
1401+
<li>#272: fixed `entry.createReader().readEntries`</li>
1402+
</ul>
1403+
13991404
### 2.0.9
14001405
<ul>
14011406
<li>#253: fixed `proxyXHR.loaded`</li>

dist/FileAPI.html5.js

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1592,29 +1592,34 @@
15921592
else if( entry.isDirectory ){
15931593
var reader = entry.createReader(), result = [];
15941594

1595-
reader.readEntries(function(entries){
1595+
var onerror = function() {
1596+
// error
1597+
callback('directory_reader');
1598+
};
1599+
var ondone = function ondone(entries) {
15961600
// success
1597-
api.afor(entries, function (next, entry){
1598-
_readEntryAsFiles(entry, function (err, files){
1599-
if( err ){
1600-
api.log(err);
1601-
}
1602-
else {
1603-
result = result.concat(files);
1604-
}
1601+
if ( entries.length ) {
1602+
api.afor(entries, function (next, entry){
1603+
_readEntryAsFiles(entry, function (err, files){
1604+
if( !err ){
1605+
result = result.concat(files);
1606+
}
16051607

1606-
if( next ){
1607-
next();
1608-
}
1609-
else {
1610-
callback(false, result);
1611-
}
1608+
if( next ){
1609+
next();
1610+
}
1611+
else {
1612+
reader.readEntries(ondone, onerror);
1613+
}
1614+
});
16121615
});
1613-
});
1614-
}, function (err){
1615-
// error
1616-
callback('directory_reader: ' + err);
1617-
});
1616+
}
1617+
else {
1618+
callback(false, result);
1619+
}
1620+
};
1621+
1622+
reader.readEntries(ondone, onerror);
16181623
}
16191624
else {
16201625
_readEntryAsFiles(_getAsEntry(entry), callback);

dist/FileAPI.js

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1592,29 +1592,34 @@
15921592
else if( entry.isDirectory ){
15931593
var reader = entry.createReader(), result = [];
15941594

1595-
reader.readEntries(function(entries){
1595+
var onerror = function() {
1596+
// error
1597+
callback('directory_reader');
1598+
};
1599+
var ondone = function ondone(entries) {
15961600
// success
1597-
api.afor(entries, function (next, entry){
1598-
_readEntryAsFiles(entry, function (err, files){
1599-
if( err ){
1600-
api.log(err);
1601-
}
1602-
else {
1603-
result = result.concat(files);
1604-
}
1601+
if ( entries.length ) {
1602+
api.afor(entries, function (next, entry){
1603+
_readEntryAsFiles(entry, function (err, files){
1604+
if( !err ){
1605+
result = result.concat(files);
1606+
}
16051607

1606-
if( next ){
1607-
next();
1608-
}
1609-
else {
1610-
callback(false, result);
1611-
}
1608+
if( next ){
1609+
next();
1610+
}
1611+
else {
1612+
reader.readEntries(ondone, onerror);
1613+
}
1614+
});
16121615
});
1613-
});
1614-
}, function (err){
1615-
// error
1616-
callback('directory_reader: ' + err);
1617-
});
1616+
}
1617+
else {
1618+
callback(false, result);
1619+
}
1620+
};
1621+
1622+
reader.readEntries(ondone, onerror);
16181623
}
16191624
else {
16201625
_readEntryAsFiles(_getAsEntry(entry), callback);

lib/FileAPI.core.js

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1498,29 +1498,34 @@
14981498
else if( entry.isDirectory ){
14991499
var reader = entry.createReader(), result = [];
15001500

1501-
reader.readEntries(function(entries){
1501+
var onerror = function() {
1502+
// error
1503+
callback('directory_reader');
1504+
};
1505+
var ondone = function ondone(entries) {
15021506
// success
1503-
api.afor(entries, function (next, entry){
1504-
_readEntryAsFiles(entry, function (err, files){
1505-
if( err ){
1506-
api.log(err);
1507-
}
1508-
else {
1509-
result = result.concat(files);
1510-
}
1507+
if ( entries.length ) {
1508+
api.afor(entries, function (next, entry){
1509+
_readEntryAsFiles(entry, function (err, files){
1510+
if( !err ){
1511+
result = result.concat(files);
1512+
}
15111513

1512-
if( next ){
1513-
next();
1514-
}
1515-
else {
1516-
callback(false, result);
1517-
}
1514+
if( next ){
1515+
next();
1516+
}
1517+
else {
1518+
reader.readEntries(ondone, onerror);
1519+
}
1520+
});
15181521
});
1519-
});
1520-
}, function (err){
1521-
// error
1522-
callback('directory_reader: ' + err);
1523-
});
1522+
}
1523+
else {
1524+
callback(false, result);
1525+
}
1526+
};
1527+
1528+
reader.readEntries(ondone, onerror);
15241529
}
15251530
else {
15261531
_readEntryAsFiles(_getAsEntry(entry), callback);

0 commit comments

Comments
 (0)