Browse Source

Fixed Chrome App file download bugs

Closes #335
master
Igor Zhukov 11 years ago
parent
commit
2bca6fae41
  1. 2
      app/js/lib/aes_worker.js
  2. 2
      app/js/lib/mtproto_wrapper.js
  3. 44
      app/js/lib/ng_utils.js
  4. 2
      app/js/lib/pq_worker.js
  5. 2
      app/js/lib/sha1_worker.js
  6. 4
      app/partials/phonebook_modal.html

2
app/js/lib/aes_worker.js

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
importScripts(
'../../vendor/console-polyfill/console-polyfill.js',
'mtproto.js',
'bin_utils.js',
'../../vendor/jsbn/jsbn_combined.js',
'../../vendor/cryptoJS/crypto.js'
);

2
app/js/lib/mtproto_wrapper.js

@ -422,7 +422,7 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto']) @@ -422,7 +422,7 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto'])
deferred.resolve(cachedDownloads[fileName] = FileManager.getUrl(blob, mimeType));
}
}, function () {
var fileWriterPromise = toFileEntry ? $q.when(toFileEntry) : fileStorage.getFileWriter(fileName, mimeType);
var fileWriterPromise = toFileEntry ? FileManager.getFileWriter(toFileEntry) : fileStorage.getFileWriter(fileName, mimeType);
fileWriterPromise.then(function (fileWriter) {
cacheFileWriter = fileWriter;

44
app/js/lib/ng_utils.js

@ -140,20 +140,14 @@ angular.module('izhukov.utils', []) @@ -140,20 +140,14 @@ angular.module('izhukov.utils', [])
$window.BlobBuilder = $window.BlobBuilder || $window.WebKitBlobBuilder || $window.MozBlobBuilder;
function fileCopyTo (fromFileEntry, toFileEntry) {
var deferred = $q.defer();
toFileEntry.createWriter(function (fileWriter) {
fileWriteData(fileWriter, fromFileEntry).then(function () {
deferred.resolve(fileWriter);
}, function (e) {
deferred.reject(e);
return getFileWriter(toFileEntry).then(function (fileWriter) {
return fileWriteData(fileWriter, fromFileEntry).then(function () {
return fileWriter;
}, function (error) {
return $q.reject(error);
fileWriter.truncate(0);
});
}, function (e) {
deferred.reject(e);
});
return deferred.promise;
}
function fileWriteData(fileWriter, bytes) {
@ -166,9 +160,15 @@ angular.module('izhukov.utils', []) @@ -166,9 +160,15 @@ angular.module('izhukov.utils', [])
deferred.reject();
};
if (bytes instanceof Blob) { // is file bytes
if (bytes instanceof FileEntry) {
bytes.file(function (file) {
fileWriter.write(file);
}, fileWriter.onerror);
}
else if (bytes instanceof Blob) { // is file bytes
fileWriter.write(bytes);
} else {
}
else {
fileWriter.write(new Blob([bytesToArrayBuffer(bytes)]));
}
@ -195,6 +195,18 @@ angular.module('izhukov.utils', []) @@ -195,6 +195,18 @@ angular.module('izhukov.utils', [])
return deferred.promise;
}
function getFileWriter (fileEntry) {
var deferred = $q.defer();
fileEntry.createWriter(function (fileWriter) {
deferred.resolve(fileWriter);
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
function getFakeFileWriter (mimeType, saveFileCallback) {
var blobParts = [],
fakeFileWriter = {
@ -259,6 +271,7 @@ angular.module('izhukov.utils', []) @@ -259,6 +271,7 @@ angular.module('izhukov.utils', [])
return {
copy: fileCopyTo,
write: fileWriteData,
getFileWriter: getFileWriter,
getFakeFileWriter: getFakeFileWriter,
chooseSave: chooseSaveFile,
getUrl: getUrl,
@ -429,7 +442,7 @@ angular.module('izhukov.utils', []) @@ -429,7 +442,7 @@ angular.module('izhukov.utils', [])
fileEntry.file(function(file) {
// console.log(dT(), 'aa', file);
if (file.size >= size) {
deferred.resolve(fileEntry);
deferred.resolve(file);
} else {
deferred.reject(new Error('FILE_NOT_FOUND'));
}
@ -457,11 +470,10 @@ angular.module('izhukov.utils', []) @@ -457,11 +470,10 @@ angular.module('izhukov.utils', [])
return requestFS().then(function () {
var deferred = $q.defer();
cachedFs.root.getFile(fileName, {create: true}, function (fileEntry) {
fileEntry.createWriter(function (fileWriter) {
FileManager.getFileWriter(fileEntry).then(function (fileWriter) {
fileWriter.finalize = function () {
return fileEntry;
}
// console.log(dT(), 'got writer');
deferred.resolve(fileWriter);
}, function (error) {
deferred.reject(error);

2
app/js/lib/pq_worker.js

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
importScripts(
'../../vendor/console-polyfill/console-polyfill.js',
'mtproto.js',
'bin_utils.js',
'../../vendor/closure/long.js',
'../../vendor/jsbn/jsbn_combined.js'
);

2
app/js/lib/sha1_worker.js

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
importScripts(
'../../vendor/console-polyfill/console-polyfill.js',
'mtproto.js',
'bin_utils.js',
'../../vendor/cryptoJS/crypto.js'
);

4
app/partials/phonebook_modal.html

@ -1,7 +1,11 @@ @@ -1,7 +1,11 @@
<div class="contacts_modal_wrap" my-modal-position>
<a class="modal-close-button visible-xs" ng-click="$dismiss()"><i></i></a>
<div class="modal-body">
<h4 class="modal_simple_header visible-xs">Phonebook</h4>
<div class="contacts_modal_search">
<input class="form-control contacts_modal_search_field" my-focused type="search" placeholder="Search" ng-model="search.query"/>
<a class="contacts_modal_search_clear" ng-click="search.query = ''" ng-show="search.query.length"></a>

Loading…
Cancel
Save