Fix UWP ability to reload split ZIM files

Former-commit-id: 0a9c6dca42bc5209f0ccd58d736cb391869a63f5 [formerly cbf9ad92760d86b436dc17eed0addfaf721636ec [formerly 2e759d8b5c27f53ddb6432fbe6813554871f4abc]]
Former-commit-id: 428c3ea1a831be352b0745bb2a04ad2f81772055
Former-commit-id: edfd9f9870c59bcb7ca78eb29812b1c201ba12e1
This commit is contained in:
Jaifroid 2020-10-20 09:44:56 +01:00
parent 490fd6145b
commit 257d74beb9

View File

@ -1806,6 +1806,7 @@ define(['jquery', 'zimArchiveLoader', 'uiUtil', 'util', 'cache', 'images', 'cook
var query = params.pickedFolder.createFileQuery();
query.getFilesAsync().done(function (files) {
var file;
var fileset = [];
if (files) {
for (var i = 0; i < files.length; i++) {
if (files[i].name == archiveDirectory) {
@ -1814,10 +1815,9 @@ define(['jquery', 'zimArchiveLoader', 'uiUtil', 'util', 'cache', 'images', 'cook
}
}
if (file) {
var fileset = [];
if (/\.zim\w\w$/i.test(file.name)) {
var genericFileName = file.name.replace(/(.*)\.zim\w\w$/i, "$1");
var testFileName = new RegExp(genericFileName + '\\.zim\\w\\w$');
var genericFileName = file.name.replace(/(\.zim)\w\w$/i, '$1');
var testFileName = new RegExp(genericFileName + '\\w\\w$');
for (i = 0; i < files.length; i++) {
if (testFileName.test(files[i].name)) {
//This converts a UWP storage file object into a standard JavaScript web file object
@ -1826,11 +1826,11 @@ define(['jquery', 'zimArchiveLoader', 'uiUtil', 'util', 'cache', 'images', 'cook
}
} else {
//This converts a UWP storage file object into a standard JavaScript web file object
fileset = [MSApp.createFileFromStorageFile(file)];
fileset.push(MSApp.createFileFromStorageFile(file));
}
}
}
if (fileset && fileset.length) {
if (fileset.length) {
setLocalArchiveFromFileList(fileset);
} else {
console.error("The picked file could not be found in the selected folder!");
@ -1854,6 +1854,7 @@ define(['jquery', 'zimArchiveLoader', 'uiUtil', 'util', 'cache', 'images', 'cook
} else if (params.pickedFolder.kind === 'directory') {
return processNativeDirHandle(params.pickedFolder, function(fileHandles) {
var fileHandle;
var fileset = [];
if (fileHandles) {
for (var i = 0; i < fileHandles.length; i++) {
if (fileHandles[i].name == archiveDirectory) {
@ -1862,13 +1863,12 @@ define(['jquery', 'zimArchiveLoader', 'uiUtil', 'util', 'cache', 'images', 'cook
}
}
if (fileHandle) {
var fileset = [];
if (/\.zim\w\w$/i.test(fileHandle.name)) {
var genericFileName = fileHandle.name.replace(/(\.zim)\w\w$/i, '$1');
var testFileName = new RegExp(genericFileName + '\\w\\w$');
for (i = 0; i < fileHandles.length; i++) {
if (testFileName.test(fileHandles[i].name)) {
//This converts a UWP storage file object into a standard JavaScript web file object
//This gets a JS File object from a file handle
fileset.push(fileHandles[i].getFile().then(function(file) {
return file;
}));
@ -1879,9 +1879,13 @@ define(['jquery', 'zimArchiveLoader', 'uiUtil', 'util', 'cache', 'images', 'cook
return file;
}));
}
Q.all(fileset).then(function(resolvedFiles) {
setLocalArchiveFromFileList(resolvedFiles);
});
if (fileset.length) {
Q.all(fileset).then(function (resolvedFiles) {
setLocalArchiveFromFileList(resolvedFiles);
});
} else {
console.error("There was an error reading the picked file(s)!");
}
} else {
console.error("The picked file could not be found in the selected folder!");
var archiveList = [];
@ -2059,6 +2063,12 @@ define(['jquery', 'zimArchiveLoader', 'uiUtil', 'util', 'cache', 'images', 'cook
function processPickedFileUWP(file) {
if (file) {
if (params.falFolderToken && /\.zim\w\w$/i.test(file.name)) {
// This is a split file in a picked folder, so we need to process differently
params.pickedFile = '';
setLocalArchiveFromArchiveList([file]);
return;
}
// Cache file so the contents can be accessed at a later time
Windows.Storage.AccessCache.StorageApplicationPermissions.futureAccessList.addOrReplace(params.falFileToken, file);
params.pickedFile = file;