diff --git a/bin/resources/app/renderer.js b/bin/resources/app/renderer.js
index 77c2a6d..181f60c 100644
--- a/bin/resources/app/renderer.js
+++ b/bin/resources/app/renderer.js
@@ -190,20 +190,46 @@ function getDirectoryContents(contentClass, directory) {
let options = { withFileTypes: true }
- fs.readdir(directory, { withFileTypes: true }, function (err, files) {
+ scanDirStream(directory)
+}
- if (err) {
- return console.log('Unable to scan directory: ' + err);
- }
+function processFolderListing(file, type) {
+ var res = file.split('\r\n')
+ var fileList = ''
+ var itemsProcessed = 0;
- files.forEach( (file) => {
- if (file.isFile()) {
- document.getElementsByClassName(contentClass)[activeTabIndex].innerHTML += `
${file.name}`
- }
- else if (file.isDirectory() && !['$', '.'].includes(file.name.charAt(0))) {
- document.getElementsByClassName(contentClass)[activeTabIndex].innerHTML += `${file.name}`
- }
+ res.forEach( (element) => {
- });
+ if (element.length !== 0) {
+ if (type === 'file') {
+ fileList += `${element}`
+ }
+ else if (!['$', '.'].includes(element.charAt(0))) {
+ fileList += `${element}`
+ }
+ }
+
+ itemsProcessed++;
+
+ if(itemsProcessed === res.length) {
+ document.getElementsByClassName(contentClass)[activeTabIndex].innerHTML += fileList
+ }
});
+}
+
+function scanDirStream(needle) {
+ return new Promise((resolve, reject) => {
+
+ var dirListing = exec('dir /B /A:D ' + needle)
+
+ var fileListing = exec('dir /B /A:-D ' + needle)
+
+ dirListing.stdout.on('data', _data => {
+ processFolderListing(_data, 'directory')
+ });
+
+ fileListing.stdout.on('data', _data => {
+ processFolderListing(_data, 'file')
+ });
+ })
}
\ No newline at end of file
diff --git a/renderer.js b/renderer.js
index 77c2a6d..181f60c 100644
--- a/renderer.js
+++ b/renderer.js
@@ -190,20 +190,46 @@ function getDirectoryContents(contentClass, directory) {
let options = { withFileTypes: true }
- fs.readdir(directory, { withFileTypes: true }, function (err, files) {
+ scanDirStream(directory)
+}
- if (err) {
- return console.log('Unable to scan directory: ' + err);
- }
+function processFolderListing(file, type) {
+ var res = file.split('\r\n')
+ var fileList = ''
+ var itemsProcessed = 0;
- files.forEach( (file) => {
- if (file.isFile()) {
- document.getElementsByClassName(contentClass)[activeTabIndex].innerHTML += `${file.name}`
- }
- else if (file.isDirectory() && !['$', '.'].includes(file.name.charAt(0))) {
- document.getElementsByClassName(contentClass)[activeTabIndex].innerHTML += `${file.name}`
- }
+ res.forEach( (element) => {
- });
+ if (element.length !== 0) {
+ if (type === 'file') {
+ fileList += `${element}`
+ }
+ else if (!['$', '.'].includes(element.charAt(0))) {
+ fileList += `${element}`
+ }
+ }
+
+ itemsProcessed++;
+
+ if(itemsProcessed === res.length) {
+ document.getElementsByClassName(contentClass)[activeTabIndex].innerHTML += fileList
+ }
});
+}
+
+function scanDirStream(needle) {
+ return new Promise((resolve, reject) => {
+
+ var dirListing = exec('dir /B /A:D ' + needle)
+
+ var fileListing = exec('dir /B /A:-D ' + needle)
+
+ dirListing.stdout.on('data', _data => {
+ processFolderListing(_data, 'directory')
+ });
+
+ fileListing.stdout.on('data', _data => {
+ processFolderListing(_data, 'file')
+ });
+ })
}
\ No newline at end of file