purityselect/resources/js/pages/conference.vue
2024-10-25 01:05:27 +05:00

144 lines
4.2 KiB
Vue

<script setup>
import axios from '@axios';
import { onBeforeMount, onMounted, ref } from 'vue';
import { onBeforeRouteLeave, useRoute, useRouter } from 'vue-router';
import { useStore } from 'vuex';
const store = useStore()
const router = useRouter()
const route = useRoute()
const recordVid = ref(true)
const agentId = ref(localStorage.getItem('agent_id'))
const token = ref(localStorage.getItem('agent_meeting_id'))
const questions = ref([]);
const call_type = ref(localStorage.getItem('call_type'));
onBeforeMount(async () => {
console.log('call type', call_type.value)
});
onMounted(() => {
const mainContainer = document.querySelector('.layout-content-wrapper');
const callContainer = document.querySelector('.draggable-off');
if (callContainer) {
callContainer.style.width = 'calc(100vw - 260px)'
callContainer.style.left = '260px'
}
console.log('mainContainer.offsetWidth', mainContainer.offsetWidth)
if (mainContainer) {
mainContainer.style.display = 'none';
}
axios.post('/agent/api/patient-recording-switch-get/' + agentId.value)
.then(response => {
console.log('rec ', response.data.recording_switch)
if (response.data.recording_switch == 1)
recordVid.value = true
else
recordVid.value = false
})
.catch(error => {
console.error('error recording ', error.response.data);
});
axios.post('/agent/api/questions-list')
.then(r => {
console.log("Question", r.data);
questions.value = r.data;
}).catch(error => {
console.log("ErrorResponse", error);
isLoadingVisible.value = false;
});
});
onUnmounted(async () => {
const mainContainer = document.querySelector('.layout-content-wrapper');
const callContainer = document.querySelector('.draggable');
console.log('callContainer', callContainer);
if (mainContainer)
mainContainer.style.display = 'block';
if (callContainer) {
callContainer.style.width = '15%'
callContainer.style.left = 'unset'
}
});
const groupedQuestions = computed(() => {
const groups = {};
for (const key in questions.value) {
if (questions.value.hasOwnProperty(key)) {
let groupQuestions = questions.value[key];
groupQuestions.forEach(question => {
const groupId = question.group_id;
if (!groups[groupId]) {
groups[groupId] = {
name: key,
questions: [],
};
}
groups[groupId].questions.push(question);
});
}
}
console.log("groups", groups);
// Convert groups object to an array
return Object.values(groups);
});
const getTranscript = (transcriptData) => {
// Parse the JSON string
const responseObj = JSON.parse(transcriptData);
// Extract the questions_and_answers array
const questionsAndAnswers = JSON.parse(responseObj.text);
if (Array.isArray(questionsAndAnswers) && questionsAndAnswers.length > 0) {
questions.value.forEach(item => {
const result = findCommonQuestion(item.question, questionsAndAnswers);
if (result.hasCommonQuestion) {
console.log(`Common question found at index ${result.indexInArray2} in array2.`);
answers.value[item.id] = questionsAndAnswers[result.indexInArray2].answer
}
});
// questions.value.forEach(item => {
// if (result.hasCommonQuestion) {
// console.log(`Common question found at index ${result.indexInArray2} in array2.`);
// answers.value[item.question.id] = questionsAndAnswers[result.indexInArray2].answer
// }
// });
// transcript.value.push(questionsAndAnswers);
// console.log('transcript ', transcript.value, hasCommonQuestion(questions.value, questionsAndAnswers))
}
};
onBeforeRouteLeave(async () => {
if (store.getters.getCallStarted) {
// const confirmation = window.confirm('Are you sure you want to leave this page?')
// if (!confirmation) {
// Prevent navigation if the user cancels
// return false
// } else {
store.dispatch('updateFloatingWindow', true)
// }
}
});
</script>
<template>
<!-- <videocall :token="token" :recording="recordVid" :call_type="call_type" @update:transcriptData="getTranscript">
</videocall> -->
<div class="videoCallContainer">
</div>
</template>
<style scoped>
.layout-content-wrapper {
display: none !important;
}
</style>