在两者中包装JavaScript FFI

时间:2016-08-24 16:17:51

标签: haskell ghcjs

我是JavascriptFFI的新手,非常感谢这里的帮助。

我有一个有效的javascript代码,可以从相机中获取FILE URI图像(通过cordova相机插件)。现在,它可以返回错误或文件uri成功。我们希望将它们映射到Left Int TextRight 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>

我将非常感谢如何使用ghcjs-dom-0.2.3.1(我将它与Reflex一起使用)将FFI用于navigator.camera.getPicture,以便返回结果在Either中。

然后我可以将File URI包装在ByteString中(我认为通过Cordova文件api将其首先转换为arraybuffer)并将其发送给删除服务器以保持持久性。

0 个答案:

没有答案