From 401e3f0ba3a9f87c1f9902f5ab7424dfde92bf2f Mon Sep 17 00:00:00 2001 From: Lebedev Konstantin Date: Fri, 22 Nov 2013 00:25:10 -0800 Subject: [PATCH 1/3] Merge pull request #158 from im-saxo/dev Conflicts: dist/FileAPI.flash.swf --- .../mail/communication/JSCallbackPresenter.as | 4 +++ .../src/ru/mail/controller/AppController.as | 32 +++++++++++++++++++ flash/core/src/ru/mail/data/IImageFactory.as | 5 +-- flash/core/src/ru/mail/data/ImageFactory.as | 21 ++++++++++-- 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/flash/core/src/ru/mail/communication/JSCallbackPresenter.as b/flash/core/src/ru/mail/communication/JSCallbackPresenter.as index 3c45892d..298c6143 100644 --- a/flash/core/src/ru/mail/communication/JSCallbackPresenter.as +++ b/flash/core/src/ru/mail/communication/JSCallbackPresenter.as @@ -96,6 +96,10 @@ package ru.mail.communication // cmd('getFileInfo', { id: '...', callback: '...' }); appController.getFileInfo(data.id, data.callback) break; + case "readAsBase64": + // cmd('readAsBase64', { id: '...', callback: '...' }); + appController.readAsBase64(data.id, data.callback) + break; case "imageTransform": // cmd('imageTransform', { // id: '...', diff --git a/flash/core/src/ru/mail/controller/AppController.as b/flash/core/src/ru/mail/controller/AppController.as index 2c5e38d9..1de610b9 100644 --- a/flash/core/src/ru/mail/controller/AppController.as +++ b/flash/core/src/ru/mail/controller/AppController.as @@ -547,6 +547,38 @@ package ru.mail.controller imageFactory.createImage(null); } + /** + * Load file, return it as base64 independ of its type, + * @param fileID + * @param callback + * + */ + public function readAsBase64(fileID:String, callback:String):void + { + LoggerJS.log('readAsBase64, fileID: '+fileID+', callback: '+callback ); + var file:BaseFileVO = _model.filesBuilder.getFileByID(fileID); + if (!file) { + LoggerJS.log("readAsBase64, file with id "+ fileID +" doen't exist" ); + _jsCaller.callJS(callback, "File with id "+ fileID +" doen't exist" ); + return; + } + + var imageFactory:IImageFactory = file.imageFactory; + (imageFactory as EventDispatcher).addEventListener(ImageTransformCompleteEvent.TYPE,function (event:ImageTransformCompleteEvent):void { + event.currentTarget.removeEventListener(event.type, arguments.callee); + LoggerJS.log("readAsBase64 complete, success = "+ event.isSuccess ); + if (event.isSuccess) { + _jsCaller.callJS( callback, false, Base64.encode(event.data) ); + } + else { + // report error + _jsCaller.callJS(callback, event.error.getError() ); + } + }); + + imageFactory.createImage(null, true); + } + /** * Transform image, return base64 string with transformed image. * If needed, load file before transform (if it wasn't loaded yet) diff --git a/flash/core/src/ru/mail/data/IImageFactory.as b/flash/core/src/ru/mail/data/IImageFactory.as index 04fbfa38..543fecd8 100644 --- a/flash/core/src/ru/mail/data/IImageFactory.as +++ b/flash/core/src/ru/mail/data/IImageFactory.as @@ -14,10 +14,11 @@ package ru.mail.data * if imageTransform is null, return original image. * If original image has not been loaded, first load it. * The result image is returned async via completeEvent - * @param imageTransform + * @param imageTransform - if null, return fileData (ByteArray) + * @param noImage - if true, do not create imageData, just load and return fileData. * */ - function createImage(imageTransform:ImageTransformVO):void; + function createImage(imageTransform:ImageTransformVO, noImage:Boolean = false):void; /** * try to read file's exif. return object with "Orientation" value * @return diff --git a/flash/core/src/ru/mail/data/ImageFactory.as b/flash/core/src/ru/mail/data/ImageFactory.as index 8ca45f8e..ade8135c 100644 --- a/flash/core/src/ru/mail/data/ImageFactory.as +++ b/flash/core/src/ru/mail/data/ImageFactory.as @@ -51,7 +51,12 @@ package ru.mail.data file = target; } - public function createImage(imageTransform:ImageTransformVO):void { + /** + * @param imageTransform - if null, return fileData (ByteArray) + * @param noImage - if true, do not create imageData, just load and return fileData. + * + */ + public function createImage(imageTransform:ImageTransformVO, noImage:Boolean = false):void { isFileLoaded = false; isOverlayLoaded = false; @@ -66,7 +71,12 @@ package ru.mail.data LoggerJS.log('ImageFactory loadFile complete, success '+ event.isSuccess); loadCommand = null; if(event.isSuccess) { - onLoadImageAndOverlay(true, imageTransform); + if (noImage) { + // job done + complete(true, file.fileData); + } else { + onLoadImageAndOverlay(true, imageTransform); + } } else { complete( false, event.data, event.error ); @@ -79,7 +89,12 @@ package ru.mail.data } } else { - onLoadImageAndOverlay(true, imageTransform); + if (noImage) { + // job done + complete(true, file.fileData); + } else { + onLoadImageAndOverlay(true, imageTransform); + } } // check overlay From b5e4337e561a23f3fb7f1cbe05b8ca1ccf0e5ed7 Mon Sep 17 00:00:00 2001 From: RubaXa Date: Fri, 22 Nov 2013 13:05:47 +0400 Subject: [PATCH 2/3] Conflicts: README.md dist/FileAPI.html5.min.js dist/FileAPI.min.js --- README.md | 5 +++ dist/FileAPI.html5.js | 4 +-- dist/FileAPI.js | 48 +++++++++++++++++++++++++-- lib/FileAPI.Flash.js | 44 +++++++++++++++++++++++++ lib/FileAPI.core.js | 4 +-- tests/tests.js | 75 +++++++++++++++++++++++++------------------ 6 files changed, 143 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 8746cc46..56d5aa07 100644 --- a/README.md +++ b/README.md @@ -1398,6 +1398,11 @@ Button like link. ### 2.0.10