Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified dist/FileAPI.flash.swf
Binary file not shown.
4 changes: 4 additions & 0 deletions flash/core/src/ru/mail/communication/JSCallbackPresenter.as
Original file line number Diff line number Diff line change
Expand Up @@ -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: '...',
Expand Down
32 changes: 32 additions & 0 deletions flash/core/src/ru/mail/controller/AppController.as
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,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)
Expand Down
5 changes: 3 additions & 2 deletions flash/core/src/ru/mail/data/IImageFactory.as
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
21 changes: 18 additions & 3 deletions flash/core/src/ru/mail/data/ImageFactory.as
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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 );
Expand All @@ -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
Expand Down