{"version":3,"file":"poodll_mobilerecorder.min.js","sources":["../src/poodll_mobilerecorder.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log', 'filter_poodll/utils_amd', 'filter_poodll/uploader', 'filter_poodll/poodll_uploadrecorder',], function ($, log, utils, uploader, uploadrec) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('PoodLL Mobile Recorder: initialising');\n\n    return {\n\n        instanceprops: [],\n\n        fetch_instance_props: function (widgetid) {\n            return this.instanceprops[widgetid];\n        },\n\n        init_instance_props: function (widgetid) {\n            var props = {};\n            props.config = null;\n            props.uploader = null;\n            props.linkid = null;\n            this.instanceprops[widgetid] = props\n        },\n\n        // This recorder supports the current browser\n        supports_current_browser: function (config) {\n            if (config.mediatype != 'audio' && config.mediatype != 'video') {\n                return false;\n            }\n            var supports = utils.is_ios();\n            return supports;//or false\n        },\n\n        // Perform the embed of this recorder on the page\n        //into the element passed in. with config\n        embed: function (element, config) {\n            this.init_instance_props(config.widgetid);\n            var ip = this.fetch_instance_props(config.widgetid);\n            //set config\n            ip.config = config;\n\n            //set uploader\n            ip.uploader = uploader.clone();\n            ip.uploader.init(element, config);\n\n            ip.linkid = 'filter_poodll_mobilerecorder_link_' + config.widgetid;\n            switch (config.mediatype) {\n                case 'audio':\n                    this.insert_upload_button(element, config.widgetid);\n                    if (config.showmobile == 1) {\n                        this.insert_audio_button(element, config.widgetid);\n                    }\n                    break;\n                case 'video':\n                    this.insert_upload_button(element, config.widgetid);\n                    if (config.showmobile == 1) {\n                        this.insert_video_button(element, config.widgetid);\n                    }\n                    break;\n\n            }\n\n            this.register_events(element, config.widgetid);\n            return true;//or false\n        },\n\n        // handle audio/video/image file uploads for Mobile\n        register_events: function (element, widgetid) {\n            var ip = this.fetch_instance_props(widgetid);\n            var config = ip.config;\n            var mobilerecorder = this;\n            //launch the app from the link\n            $('#' + ip.linkid).on('mousedown touchstart', function (e) {\n                    //to make sure both \"confirm\" and \"openapp\"\n                    //happened. I had to do this\n                    // e.preventDefault();\n                    //  e.stopPropagation();\n                    mobilerecorder.confirm_s3_arrival(widgetid);\n                    // window.location=$(this).attr('href');\n                    ip.uploader.Output(M.util.get_string('recui_awaitingconfirmation', 'filter_poodll'));\n                    return;\n\n                    //but I wanted to just do this\n                    /*\n                    mobilerecorder.confirm_s3_arrival();\n                    uploader.Output(\"awaiting confirmation\");\n                    return true;\n                    */\n                }\n            );\n            //launch the upload dialog (if no app or whatever)\n            $('#' + ip.linkid + '_uploadafile').on('mousedown touchstart', function (e) {\n                    $(element).empty();\n                    uploadrec.embed(element, config);\n                }\n            );\n        },\n\n        insert_video_button: function (element, widgetid) {\n            var ip = this.fetch_instance_props(widgetid);\n            var controls = '<a class =\"filter_poodll_mobilerecorderlink\" id=\"' + ip.linkid +\n                '\" href=\"poodllrecorder://?presignedurl=' + encodeURIComponent(ip.config.quicktimesignedurl) +\n                '&type=' + ip.config.mediatype + '&quality=' + ip.config.mobilequality +\n                '&camera=' + ip.config.mobilecamera +\n                '&timelimit=' + ip.config.timelimit + '\">' +\n                M.util.get_string('recui_openrecorderapp', 'filter_poodll') + '</a>';\n            $(element).prepend(controls);\n        },\n        insert_audio_button: function (element, widgetid) {\n            var ip = this.fetch_instance_props(widgetid);\n            var controls = '<a class =\"filter_poodll_mobilerecorderlink\"  id=\"' + ip.linkid +\n                '\" href=\"poodllrecorder://?presignedurl=' + encodeURIComponent(ip.config.posturl) +\n                '&type=' + ip.config.mediatype + '&quality=' + ip.config.mobilequality +\n                '&camera=' + ip.config.mobilecamera +\n                '&timelimit=' + ip.config.timelimit + '\">' +\n                M.util.get_string('recui_openrecorderapp', 'filter_poodll') + '</a>';\n            $(element).prepend(controls);\n        },\n\n        insert_upload_button: function (element, widgetid) {\n            var ip = this.fetch_instance_props(widgetid);\n            var controls = '<a class =\"filter_poodll_uploadafilelink\" id=\"' + ip.linkid + '_uploadafile' +\n                '\" href=\"#\">' +\n                M.util.get_string('recui_uploadafile', 'filter_poodll') + '</a>';\n            $(element).prepend(controls);\n        },\n\n        confirm_s3_arrival: function (widgetid) {\n            var ip = this.fetch_instance_props(widgetid);\n            var xhr = new XMLHttpRequest();\n            var config = ip.config;\n\n\n            var posturl = config.wwwroot + '/filter/poodll/poodllfilelib.php';\n            var params = \"datatype=confirmarrival\";\n            params += \"&mediatype=\" + config.mediatype;\n            params += \"&filename=\" + config.filename;\n            xhr.open(\"POST\", posturl, true);\n            xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n            xhr.setRequestHeader(\"Cache-Control\", \"no-cache\");\n            xhr.setRequestHeader(\"Content-length\", params.length);\n            xhr.setRequestHeader(\"Connection\", \"close\");\n\n            xhr.addEventListener(\"load\", function () {\n                if (xhr.response && xhr.response.indexOf(config.filename) > 0) {\n                    ip.uploader.pokeFilename(config.filename, ip.uploader);\n                    ip.uploader.postprocess_s3_upload(ip.uploader);\n                    ip.uploader.Output(M.util.get_string('recui_uploadsuccess', 'filter_poodll'));\n                    ip.uploader.doCallback(ip.uploader, config.filename);\n                } else {\n                    // setTimeout(mobilerecorder.confirm_s3_arrival,2000);\n                    setTimeout(function () {\n                        xhr.open(\"POST\", posturl, true);\n                        xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n                        xhr.setRequestHeader(\"Cache-Control\", \"no-cache\");\n                        xhr.setRequestHeader(\"Content-length\", params.length);\n                        xhr.setRequestHeader(\"Connection\", \"close\");\n                        xhr.send(params);\n                    }, 2000);\n                }\n            });\n\n            xhr.send(params);\n        }\n    }//end of returned object\n});//total end\n"],"names":["define","$","log","utils","uploader","uploadrec","debug","instanceprops","fetch_instance_props","widgetid","this","init_instance_props","props","supports_current_browser","config","mediatype","is_ios","embed","element","ip","clone","init","linkid","insert_upload_button","showmobile","insert_audio_button","insert_video_button","register_events","mobilerecorder","on","e","confirm_s3_arrival","Output","M","util","get_string","empty","controls","encodeURIComponent","quicktimesignedurl","mobilequality","mobilecamera","timelimit","prepend","posturl","xhr","XMLHttpRequest","wwwroot","params","filename","open","setRequestHeader","length","addEventListener","response","indexOf","pokeFilename","postprocess_s3_upload","doCallback","setTimeout","send"],"mappings":"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"}