From 75128f4c3b8d8a8201fab0117d5a11e0eca8c6c5 Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Sat, 18 Oct 2014 21:58:54 +0200 Subject: [PATCH] Supported file download resume for tmpFS --- app/js/lib/mtproto_wrapper.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/js/lib/mtproto_wrapper.js b/app/js/lib/mtproto_wrapper.js index 5d66e162..ac5cf2a7 100644 --- a/app/js/lib/mtproto_wrapper.js +++ b/app/js/lib/mtproto_wrapper.js @@ -418,11 +418,14 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto']) errorHandler = function (error) { deferred.reject(error); errorHandler = angular.noop; - if (cacheFileWriter) cacheFileWriter.truncate(0); + if (cacheFileWriter && + (!error || error.type != 'DOWNLOAD_CANCELED')) { + cacheFileWriter.truncate(0); + } }; - fileStorage.getFile(fileName).then(function (blob) { + fileStorage.getFile(fileName, size).then(function (blob) { if (toFileEntry) { FileManager.copy(blob, toFileEntry).then(function () { deferred.resolve(); @@ -436,9 +439,16 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto']) fileWriterPromise.then(function (fileWriter) { cacheFileWriter = fileWriter; var limit = 524288, + offset, + startOffset = 0, writeFilePromise = $q.when(), writeFileDeferred; - for (var offset = 0; offset < size; offset += limit) { + if (fileWriter.length) { + startOffset = fileWriter.length; + fileWriter.seek(startOffset); + deferred.notify({done: startOffset, total: size}); + } + for (offset = startOffset; offset < size; offset += limit) { writeFileDeferred = $q.defer(); (function (isFinal, offset, writeFileDeferred, writeFilePromise) { return downloadRequest(dcID, function () { @@ -479,7 +489,7 @@ angular.module('izhukov.mtproto.wrapper', ['izhukov.utils', 'izhukov.mtproto']) writeFilePromise = writeFileDeferred.promise; } }); - }) + }); deferred.promise.cancel = function () { if (!canceled && !resolved) {