diff --git a/apps.json b/apps.json index 8982726fe..d44c0b051 100644 --- a/apps.json +++ b/apps.json @@ -2293,7 +2293,7 @@ "name": "File manager", "shortName":"FileManager", "icon": "icons8-filing-cabinet-48.png", - "version":"0.01", + "version":"0.02", "description": "Simple file manager, allows user to examine watch storage and display, load or delete individual files", "tags": "tools", "readme": "README.md", diff --git a/apps/fileman/ChangeLog b/apps/fileman/ChangeLog index 1a3bc1757..72ee0b566 100644 --- a/apps/fileman/ChangeLog +++ b/apps/fileman/ChangeLog @@ -1 +1,2 @@ 0.01: New app! +0.02: Improve handling of large amounts of files (fix #579) diff --git a/apps/fileman/fileman.app.js b/apps/fileman/fileman.app.js index a8acb22f6..03e135cb2 100644 --- a/apps/fileman/fileman.app.js +++ b/apps/fileman/fileman.app.js @@ -10,12 +10,12 @@ function delete_file(fn) { E.showPrompt("Delete\n"+fn+"?", {buttons: {"No":false, "Yes":true}}).then(function(v) { if (v) { if (fn.charCodeAt(fn.length-1)==1) { - var fh = STOR.open(fn.substr(0, fn.length-1), "w"); + var fh = STOR.open(fn.substr(0, fn.length-1), "r"); fh.erase(); } else STOR.erase(fn); } - }).then(function() { files=get_pruned_file_list(); }).then(drawMenu); + }).then(function() { filed=[];files=get_pruned_file_list(); }).then(drawMenu); } function get_length(fn) { @@ -90,10 +90,13 @@ function drawMenu() { } function get_pruned_file_list() { - var fl = STOR.list(/^[^\.]/); + // get storagefile list + var sf = STOR.list(/\1$/).map(s=>s.slice(0,-1)); + var sffilter = f=>!sf.includes(f.slice(0,-1)) || f.endsWith("\1"); + // get files - put '.' last + var fl = STOR.list(/^[^\.]/).filter(sffilter); fl.sort(); - fl = fl.concat(STOR.list(/^\./)); - fl = fl.filter(f => (f.charCodeAt(f.length-1)>31 || f.charCodeAt(f.length-1)<2)); + fl = fl.concat(STOR.list(/^\./).filter(sffilter).sort()); return fl; }