Обёртывание JavaScript FFI в любом
Я очень новичок в JavascriptFFI
и будет очень признателен за помощь здесь.
У меня есть рабочий код JavaScript, чтобы захватить изображение как FILE URI
с камеры (через плагин Cordova Camera). Теперь он может вернуть либо ошибку, либо файл URI в случае успеха. Мы хотим сопоставить их Left Int Text
а также Right GHCJS.DOM.Types.File
(не уверен, что я получил тип FILE URI
право).
Вот код javascript (непроверенный, так как я изменил его из проверенного, чтобы он возвращал только fileuri или ошибку вместо отображения в браузере).
<script type="text/javascript" charset="utf-8">
var destinationType; // sets the format of returned value
// Wait for device API libraries to load
document.addEventListener("deviceready",onDeviceReady,false);
// device APIs are available
function onDeviceReady() {
pictureSource=navigator.camera.PictureSourceType;
destinationType=navigator.camera.DestinationType;
}
// Called when a photo is successfully retrieved
//
function onPhotoURISuccess(imageURI) {
console.log("success");
return imageURI;
}
// A button will call this function for testing
function capturePhotoEdit() {
// Take picture using device camera, allow edit, and retrieve image as binary data
navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 20, allowEdit: true,
destinationType: destinationType.FILE_URI });
}
// Called if something bad happens.
//
function onFail(message) {
console.log("failure");
return[1, message];
}
</script>
Я буду признателен за указатели о том, как сделать FFI для navigator.camera.getPicture
с ghcjs-dom-0.2.3.1 (я использую его с Reflex), так что возвращаемый результат находится в любом из них.
Я могу затем обернуть File URI
в ByteString
(Я думаю, через Cordova файл API, чтобы сначала преобразовать его в arraybuffer
) и отправить его на удаление сервера для сохранения.