Make fs.read compatible with filecache

Former-commit-id: 38f9dc7c7f825a77969ad55d7c4d25e4dc1aef22 [formerly a2c490caa3e19bab560b1f231b9985a881f170e9]
Former-commit-id: dd3ec30dc2ed7ce373eb2c2dcb3bb7f0629de83e
This commit is contained in:
Jaifroid 2020-02-15 12:34:28 +00:00
parent 34db2795c3
commit df6d26a066
3 changed files with 47 additions and 29 deletions

View File

@ -55,10 +55,9 @@
window.requireNode = window.require; window.requireNode = window.require;
window.require = undefined; window.require = undefined;
window.fs = requireNode('fs'); window.fs = requireNode('fs');
} } else if ("serviceWorker" in navigator) {
// Try to activate Service Worker // Try to activate Service Worker
console.log('Trying to activate Service Worker...'); console.log('Trying to activate Service Worker...');
if ("serviceWorker" in navigator) {
// Register the service worker // Register the service worker
navigator.serviceWorker.register("../pwabuilder-sw.js", { navigator.serviceWorker.register("../pwabuilder-sw.js", {
scope: "../" scope: "../"

View File

@ -156,6 +156,24 @@ define(['q'], function(Q) {
}; };
var readInternal = function(file, begin, end) { var readInternal = function(file, begin, end) {
return Q.Promise(function(resolve, reject) { return Q.Promise(function(resolve, reject) {
if (file.readMode === 'electron') {
// We are reading a packaged file and have to use Electron fs.read (so we don't have to pick the file)
fs.open(file.path, 'r', function (err, fd) {
if (err) {
console.error('Could not find file!', err);
reject(err);
} else {
var size = end - begin;
fs.read(fd, Buffer.alloc(size), 0, size, begin, function (err, bytesRead, data) {
if (err) reject(err);
else resolve(data);
fs.close(fd, function (err) {
if (err) console.log('Could not close file...', err);
});
});
}
});
} else {
var reader = new FileReader(); var reader = new FileReader();
reader.readAsArrayBuffer(file.slice(begin, end)); reader.readAsArrayBuffer(file.slice(begin, end));
reader.onload = function(e) { reader.onload = function(e) {
@ -164,6 +182,7 @@ define(['q'], function(Q) {
reader.onerror = reader.onabort = function(e) { reader.onerror = reader.onabort = function(e) {
reject(e); reject(e);
}; };
}
}); });
}; };

View File

@ -212,22 +212,22 @@ define(['q', 'filecache'], function(q, FileCache) {
*/ */
function readFileSlice(file, begin, size) { function readFileSlice(file, begin, size) {
// var deferred = q.defer(); // var deferred = q.defer();
if (file.readMode === 'electron') { // if (file.readMode === 'electron') {
// We are reading a packaged file and have to use Electron fs.read (so we don't have to pick the file) // // We are reading a packaged file and have to use Electron fs.read (so we don't have to pick the file)
fs.open(file.path, 'r', function (err, fd) { // fs.open(file.path, 'r', function (err, fd) {
if (err) { // if (err) {
console.error('Could not find file!', err); // console.error('Could not find file!', err);
} else { // } else {
fs.read(fd, new Uint8Array(size), 0, size, begin, function (err, bytesRead, data) { // fs.read(fd, Buffer.alloc(size), 0, size, begin, function (err, bytesRead, data) {
if (err) deferred.reject(err); // if (err) deferred.reject(err);
else deferred.resolve(data); // else deferred.resolve(data);
fs.close(fd, function (err) { // fs.close(fd, function (err) {
if (err) console.log('Could not close file...', err); // if (err) console.log('Could not close file...', err);
}); // });
}); // });
} // }
}); // });
} else { // } else {
// We are reading a picked file, so use vanilla JS methods // We are reading a picked file, so use vanilla JS methods
// var reader = new FileReader(); // var reader = new FileReader();
// reader.onload = function (e) { // reader.onload = function (e) {
@ -240,7 +240,7 @@ define(['q', 'filecache'], function(q, FileCache) {
// } // }
// return deferred.promise; // return deferred.promise;
return FileCache.read(file, begin, begin + size); return FileCache.read(file, begin, begin + size);
} // }
} }
/** /**