window.addEventListener('DOMContentLoaded', function (){
URL=window.URL||window.webkitURL;
var gumStream;
var recorder;
var input;
var AudioContext=window.AudioContext||window.webkitAudioContext;
var audioContext;
var recordButton=document.getElementById("recordButton");
var stopButton=document.getElementById("stopButton");
var submitButton=document.getElementById("submitButton");
var downloadButton=document.getElementById("downloadButton");
var pauseButton=document.getElementById("pauseButton");
var removeAudio=document.getElementById("remove_audio");
var blobAudio;
var submitted_audio_box=document.querySelector('.audio-alrdy-smbt');
var assignment_result_table=document.querySelector('.tutor-assignment-result-table');
if(submitted_audio_box!=undefined&&assignment_result_table!=undefined){
assignment_result_table.insertAdjacentElement('afterend', submitted_audio_box);
submitted_audio_box.style.display='block';
}
if(recordButton!==null){
recordButton.addEventListener("click", startRecording);
stopButton.addEventListener("click", stopRecording);
submitButton.addEventListener("click", submitRecording);
pauseButton.addEventListener("click", pauseRecording);
removeAudio.addEventListener("click", clearAudio);
}
function startRecording(){
var constraints={ audio: true, video: false }
navigator.mediaDevices.getUserMedia(constraints).then(function (stream){
audioContext=new AudioContext();
gumStream=stream;
input=audioContext.createMediaStreamSource(stream);
recorder=new Recorder(input, {
numChannels: 1
})
recorder.record()
}).catch(function (err){
recordButton.disabled=false;
stopButton.disabled=true;
});
recordButton.disabled=true;
stopButton.disabled=false;
pauseButton.disabled=false;
submitButton.disabled=true;
downloadButton.classList.add("disabled");
document.getElementById('audio').style.display='none';
}
function stopRecording(){
gumStream.getAudioTracks()[0].stop();
document.getElementById('audio').style.display='block';
stopButton.disabled=true;
pauseButton.disabled=true;
pauseButton.innerHTML='<span><i class="fas fa-pause"></i>'+pausebtntxt+'</span>';
submitButton.disabled=false;
recordButton.disabled=false;
downloadButton.classList.remove("disabled");
downloadButton.style.display='block';
recorder.exportWAV(createDownloadLink);
}
function pauseRecording(){
if(recorder.recording){
recorder.stop();
pauseButton.innerHTML='<span><i class="fas fa-play"></i>'+resumebtntxt+'</span>';
}else{
recorder.record();
pauseButton.innerHTML='<span><i class="fas fa-pause"></i>'+pausebtntxt+'</span>';
}}
function createDownloadLink(blob){
blobAudio=blob;
let url=URL.createObjectURL(blob);
let audio=document.getElementById("audio");
let source=document.getElementById("audio-source");
source.src=url;
audio.load();
let tagA=document.getElementById('downloadLink');
tagA.href=url;
tagA.download=new Date().toISOString() + '.wav';
}
function submitRecording(e){
e.preventDefault();
var hidden_input=document.getElementById('tada_assignment_id');
var assignmentid=hidden_input.getAttribute('data-assignment_id');
var usertid=hidden_input.getAttribute('data-user_id');
const formData=new FormData();
formData.set("uploadfiles[]", blobAudio, 'recording_audio.mp3');
formData.append("action", 'tutorlms_assignment_process_init');
formData.append("assignmentid", assignmentid);
formData.append("usertid", usertid);
jQuery.ajax({
type: 'post',
url: public.ajax_url,
data: formData,
enctype: 'multipart/form-data',
processData: false,
contentType: false,
beforeSend: function(){
jQuery('.reset_spinner').show()
},
success: function (result){
if(result.success){
console.log(result)
tutor_toast("Success",result.data,"success")
}},
error: function (result){ console.log(result); },
complete: function (xhr, textStatus){
jQuery('.reset_spinner').hide()
},
});
}
function clearAudio(){
if(recorder.recording){
recorder.clear();
location.reload();
}}
});