emile 9 months ago
parent da5a8ec028
commit 5c9b2d8d0a

Binary file not shown.

@ -8,6 +8,9 @@ import requests
from django.forms.models import model_to_dict
from django.core.serializers.json import DjangoJSONEncoder
from django.db.models import Case, When, F, Max, DateTimeField
class OsitcomVisitor(WebsocketConsumer):
def connect(self):
async_to_sync(self.channel_layer.group_add)(
@ -26,6 +29,13 @@ class OsitcomVisitor(WebsocketConsumer):
def receive(self, text_data):
text_data_json = json.loads(text_data)
event_type = text_data_json.get('event_type')
if event_type == 'set_client_type':
self.client_type = text_data_json.get('client_type')
self.user_id = text_data_json.get('user_id')
self.get_vistors_handler()
if event_type == 'visitor_ping':
session_id = text_data_json.get('session_id')
if Visitor.objects.filter(session_id=session_id).last():
@ -44,6 +54,22 @@ class OsitcomVisitor(WebsocketConsumer):
visit_date = datetime.now()
)
def get_vistors_handler(self):
visitors = Visitor.objects.all().order_by('-id')
context = {
'visitors': visitors,
}
if self.client_type == 'mobile_admin':
visitor_data = []
for visitor in visitors:
visitor_data = model_to_dict(visitor)
self.send(text_data=json.dumps({
'event_type': 'get_visitors',
'visitor_data': visitor_data,
}, cls=DjangoJSONEncoder))
@ -151,6 +177,9 @@ class OsitcomChatRoom(WebsocketConsumer):
self.domain = 'https://osina.ositcom.com'
self.session_id = self.scope['url_route']['kwargs']['session_id']
self.visitor = Visitor.objects.filter(session_id=self.session_id).last()
if not self.visitor:
self.close()
return
if self.scope['url_route']['kwargs'].get('chat_id'): #Case where admin is accessing a specific conversation between the conversations of this visior
self.chat_room = get_object_or_404(ChatRoom, id=self.scope['url_route']['kwargs'].get('chat_id'))

@ -87,7 +87,7 @@
<div id="roomContainer" class="flex-l overflow-hidden h-full">
<div id="roomContainer" class="flex-l overflow-hidden">
{% if chat_room %}
{% if not chat_room.date_terminated %}
{% include 'chat-room.html' %}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

@ -1,6 +1,4 @@
const chat_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const protocol = window.location.protocol === "https:" ? "https" : "http";
const domain = "osina.ositcom.com";
let osichatSocket;
let isOpen = false;
let chatLoaded = false;
@ -88,7 +86,7 @@ async function fetchSessionID() {
let session_id = 'Unknown';
while (session_id === 'Unknown') {
try {
const response = await fetch('https://ositcom.com/get-client-session/');
const response = await fetch(`${protocol}://${ositcomDomain}/get-client-session/`);
const data = await response.json();
if (data.session_id) {
session_id = data.session_id;
@ -164,10 +162,10 @@ function handleLoadChatEvent(data, osichatSocket) {
}
if (!document.querySelector(`script[src="${protocol}://${domain}/static/js/osichat/chat-toggle.js"]`)) {
if (!document.querySelector(`script[src="${protocol}://${osinaDomain}/static/js/osichat/chat-toggle.js"]`)) {
const script = document.createElement('script');
script.type = 'text/javascript';
script.src = `${protocol}://${domain}/static/js/osichat/chat-toggle.js`;
script.src = `${protocol}://${osinaDomain}/static/js/osichat/chat-toggle.js`;
chatDiv.appendChild(script);
}
@ -178,17 +176,17 @@ function handleLoadChatEvent(data, osichatSocket) {
const sendMessageContainer = document.getElementById('sendMessage'); //Case where returned is chat-room.html
if (sendMessageContainer) {
appendTextAreaScript(domain, chatDiv);
appendTextAreaScript(osinaDomain, chatDiv);
handleFormSubmission(sendMessageContainer, 'send_message', osichatSocket);
const uploadScript = document.createElement('script');
uploadScript.type = 'text/javascript';
uploadScript.src = `${protocol}://${domain}/static/js/osichat/upload-file.js`;
uploadScript.src = `${protocol}://${osinaDomain}/static/js/osichat/upload-file.js`;
chatDiv.appendChild(uploadScript);
const endChatScript = document.createElement('script');
endChatScript.type = 'text/javascript';
endChatScript.src = `${protocol}://${domain}/static/js/osichat/end-chat.js`;
endChatScript.src = `${protocol}://${osinaDomain}/static/js/osichat/end-chat.js`;
chatDiv.appendChild(endChatScript);
const endChatButton = document.getElementById('endChat');
@ -199,7 +197,7 @@ function handleLoadChatEvent(data, osichatSocket) {
if (sendReviewContainer) {
const sendReviewScript = document.createElement('script');
sendReviewScript.type = 'text/javascript';
sendReviewScript.src = `${protocol}://${domain}/static/js/osichat/send-review.js`;
sendReviewScript.src = `${protocol}://${osinaDomain}/static/js/osichat/send-review.js`;
chatDiv.appendChild(sendReviewScript);
}
}
@ -208,7 +206,7 @@ function handleLoadChatEvent(data, osichatSocket) {
// FUNCTION TO INITIALIZE WEB SOCKET CONNECTION
async function initializeChatWebSocket() {
const session_id = await fetchSessionID();
let osichatSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/${session_id}/`;
let osichatSocketUrl = `${wsScheme}://${osinaDomain}/ws/osichat/${session_id}/`;
osichatSocket = new WebSocket(osichatSocketUrl);
osichatSocket.onopen = () => {
@ -289,7 +287,7 @@ async function initializeChatWebSocket() {
unreadMessages.classList.remove('hidden');
unreadMessages.innerHTML = data.html;
const script = document.createElement('script');
script.src = `${protocol}://${domain}/static/js/osichat/chat-toggle.js`;
script.src = `${protocol}://${osinaDomain}/static/js/osichat/chat-toggle.js`;
document.body.appendChild(script);
} else {
unreadMessages.classList.add('hidden');
@ -305,7 +303,7 @@ async function initializeChatWebSocket() {
document.getElementById(`endChat`).classList.add('hidden');
const sendReviewScript = document.createElement('script');
sendReviewScript.type = 'text/javascript';
sendReviewScript.src = `${protocol}://${domain}/static/js/osichat/send-review.js`;
sendReviewScript.src = `${protocol}://${osinaDomain}/static/js/osichat/send-review.js`;
currentChat.appendChild(sendReviewScript);
break;
case 'submit_review':
@ -315,7 +313,7 @@ async function initializeChatWebSocket() {
}
const reviewScript = document.createElement('script');
reviewScript.type = 'text/javascript';
reviewScript.src = `${protocol}://${domain}/static/js/osichat/send-review.js`;
reviewScript.src = `${protocol}://${osinaDomain}/static/js/osichat/send-review.js`;
submitReview.appendChild(reviewScript);
break;
default:

@ -20,14 +20,14 @@
}
// Perform the upload
fetch(`${protocol}://${domain}/chat-file-uploader/`, {
fetch(`${protocol}://${osinaDomain}/chat-file-uploader/`, {
method: 'POST',
body: formData,
})
.then(response => response.json())
.then(data => {
if (data.data === 'Uploaded Successfully') {
const fullPath = `${protocol}://${domain}/${data.existingPath}`;
const fullPath = `${protocol}://${osinaDomain}/${data.existingPath}`;
updateSelectTag(fullPath, file.name);
if (file.type.startsWith('image/')) {
osichatSocket.send(JSON.stringify({ 'event_type': 'uploaded_file', 'path': data.existingPath, 'file_type': 'image', 'file_name': file.name }));

@ -1,11 +1,13 @@
const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const my_domain = "osina.ositcom.com";
const wsScheme = window.location.protocol === "https:" ? "wss" : "ws";
const protocol = window.location.protocol === "https:" ? "https" : "http";
const osinaDomain = "osina.ositcom.com";
const ositcomDomain = "ositcom.com";
async function fetchClientData() {
let clientData = { client_ip: 'Unknown', client_country: 'Unknown' };
while (clientData.client_ip === 'Unknown') {
try {
const response = await fetch('https://osina.ositcom.com/get-client-ip/');
const response = await fetch(`${protocol}://${osinaDomain}/get-client-ip/`);
const data = await response.json();
if (data.ip) {
clientData = {
@ -25,7 +27,7 @@ async function fetchVisitorsSession() {
let session_id = 'Unknown';
while (session_id === 'Unknown') {
try {
const response = await fetch('https://ositcom.com/get-client-session/');
const response = await fetch(`${protocol}://${ositcomDomain}/get-client-session/`);
const data = await response.json();
if (data.session_id) {
session_id = data.session_id;
@ -42,7 +44,7 @@ async function initializeVisitorsWebSocket() {
const referrer = document.referrer;
const clientData = await fetchClientData();
const session_id = await fetchVisitorsSession();
const visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`;
const visitorsSocketUrl = `${wsScheme}://${osinaDomain}/ws/osichat/visitors/`;
const visitorsSocket = new WebSocket(visitorsSocketUrl);
visitorsSocket.onopen = () => {

Loading…
Cancel
Save