Skip to content

Commit c57c2f3

Browse files
committed
Merge pull request mailru#158 from im-saxo/dev
#157: readAsBase64 (Flash-fallback)
2 parents d26b1b3 + 8b33325 commit c57c2f3

File tree

5 files changed

+57
-5
lines changed

5 files changed

+57
-5
lines changed

dist/FileAPI.flash.swf

168 Bytes
Binary file not shown.

flash/core/src/ru/mail/communication/JSCallbackPresenter.as

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ package ru.mail.communication
9696
// cmd('getFileInfo', { id: '...', callback: '...' });
9797
appController.getFileInfo(data.id, data.callback)
9898
break;
99+
case "readAsBase64":
100+
// cmd('readAsBase64', { id: '...', callback: '...' });
101+
appController.readAsBase64(data.id, data.callback)
102+
break;
99103
case "imageTransform":
100104
// cmd('imageTransform', {
101105
// id: '...',

flash/core/src/ru/mail/controller/AppController.as

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,38 @@ package ru.mail.controller
550550
imageFactory.createImage(null);
551551
}
552552

553+
/**
554+
* Load file, return it as base64 independ of its type,
555+
* @param fileID
556+
* @param callback
557+
*
558+
*/
559+
public function readAsBase64(fileID:String, callback:String):void
560+
{
561+
LoggerJS.log('readAsBase64, fileID: '+fileID+', callback: '+callback );
562+
var file:BaseFileVO = _model.filesBuilder.getFileByID(fileID);
563+
if (!file) {
564+
LoggerJS.log("readAsBase64, file with id "+ fileID +" doen't exist" );
565+
_jsCaller.callJS(callback, "File with id "+ fileID +" doen't exist" );
566+
return;
567+
}
568+
569+
var imageFactory:IImageFactory = file.imageFactory;
570+
(imageFactory as EventDispatcher).addEventListener(ImageTransformCompleteEvent.TYPE,function (event:ImageTransformCompleteEvent):void {
571+
event.currentTarget.removeEventListener(event.type, arguments.callee);
572+
LoggerJS.log("readAsBase64 complete, success = "+ event.isSuccess );
573+
if (event.isSuccess) {
574+
_jsCaller.callJS( callback, false, Base64.encode(event.data) );
575+
}
576+
else {
577+
// report error
578+
_jsCaller.callJS(callback, event.error.getError() );
579+
}
580+
});
581+
582+
imageFactory.createImage(null, true);
583+
}
584+
553585
/**
554586
* Transform image, return base64 string with transformed image.
555587
* If needed, load file before transform (if it wasn't loaded yet)

flash/core/src/ru/mail/data/IImageFactory.as

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ package ru.mail.data
1414
* if imageTransform is null, return original image.
1515
* If original image has not been loaded, first load it.
1616
* The result image is returned async via completeEvent
17-
* @param imageTransform
17+
* @param imageTransform - if null, return fileData (ByteArray)
18+
* @param noImage - if true, do not create imageData, just load and return fileData.
1819
*
1920
*/
20-
function createImage(imageTransform:ImageTransformVO):void;
21+
function createImage(imageTransform:ImageTransformVO, noImage:Boolean = false):void;
2122
/**
2223
* try to read file's exif. return object with "Orientation" value
2324
* @return

flash/core/src/ru/mail/data/ImageFactory.as

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,12 @@ package ru.mail.data
5151
file = target;
5252
}
5353

54-
public function createImage(imageTransform:ImageTransformVO):void {
54+
/**
55+
* @param imageTransform - if null, return fileData (ByteArray)
56+
* @param noImage - if true, do not create imageData, just load and return fileData.
57+
*
58+
*/
59+
public function createImage(imageTransform:ImageTransformVO, noImage:Boolean = false):void {
5560
isFileLoaded = false;
5661
isOverlayLoaded = false;
5762

@@ -66,7 +71,12 @@ package ru.mail.data
6671
LoggerJS.log('ImageFactory loadFile complete, success '+ event.isSuccess);
6772
loadCommand = null;
6873
if(event.isSuccess) {
69-
onLoadImageAndOverlay(true, imageTransform);
74+
if (noImage) {
75+
// job done
76+
complete(true, file.fileData);
77+
} else {
78+
onLoadImageAndOverlay(true, imageTransform);
79+
}
7080
}
7181
else {
7282
complete( false, event.data, event.error );
@@ -79,7 +89,12 @@ package ru.mail.data
7989
}
8090
}
8191
else {
82-
onLoadImageAndOverlay(true, imageTransform);
92+
if (noImage) {
93+
// job done
94+
complete(true, file.fileData);
95+
} else {
96+
onLoadImageAndOverlay(true, imageTransform);
97+
}
8398
}
8499

85100
// check overlay

0 commit comments

Comments
 (0)