diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3
index 259b267e..22275b54 100644
Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ
diff --git a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc
index d9f9096c..77783d42 100644
Binary files a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc and b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc differ
diff --git a/osinaweb/osichat/consumers.py b/osinaweb/osichat/consumers.py
index 7766ff5c..5906a68c 100644
--- a/osinaweb/osichat/consumers.py
+++ b/osinaweb/osichat/consumers.py
@@ -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'))
diff --git a/osinaweb/osichat/templates/chat-widget.html b/osinaweb/osichat/templates/chat-widget.html
index e9ad768e..27b6312f 100644
--- a/osinaweb/osichat/templates/chat-widget.html
+++ b/osinaweb/osichat/templates/chat-widget.html
@@ -87,7 +87,7 @@
-
+
{% if chat_room %}
{% if not chat_room.date_terminated %}
{% include 'chat-room.html' %}
diff --git a/osinaweb/static/images/uploaded_chat_files/1669023419225 (1).jpeg b/osinaweb/static/images/uploaded_chat_files/1669023419225 (1).jpeg
new file mode 100644
index 00000000..cae3b9f9
Binary files /dev/null and b/osinaweb/static/images/uploaded_chat_files/1669023419225 (1).jpeg differ
diff --git a/osinaweb/static/js/osichat/conversation.js b/osinaweb/static/js/osichat/conversation.js
index 9d1396eb..02ba396b 100644
--- a/osinaweb/static/js/osichat/conversation.js
+++ b/osinaweb/static/js/osichat/conversation.js
@@ -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:
diff --git a/osinaweb/static/js/osichat/upload-file.js b/osinaweb/static/js/osichat/upload-file.js
index be54afb0..1dad1c90 100644
--- a/osinaweb/static/js/osichat/upload-file.js
+++ b/osinaweb/static/js/osichat/upload-file.js
@@ -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 }));
diff --git a/osinaweb/static/js/osichat/visitors.js b/osinaweb/static/js/osichat/visitors.js
index 50a278c7..c5f36492 100644
--- a/osinaweb/static/js/osichat/visitors.js
+++ b/osinaweb/static/js/osichat/visitors.js
@@ -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 = () => {