Starting at $100.00

tetsdfrt

TalalHena
TalalHena Account verified
2 orders in queue

3 days for delivery

N/A
( 0 reviews )
Contact Supplier

Actions

.remove());

playNotificationSound(

"new_message",

data.from_id == getMessengerId() && data.to_id == auth_id

);

});

clientListenChannel.bind("client-typing", function (data) {

data.from_id == getMessengerId() &&

data.to_id == auth_id &&

(data.typing

? messagesContainer.find(".typing-indicator").show()

: messagesContainer.find(".typing-indicator").hide());

// scroll to bottom

scrollToBottom(messagesContainer);

});

clientListenChannel.bind("client-seen", function (data) {

data.from_id == getMessengerId() &&

data.to_id == auth_id &&

data.seen == true &&

($(".message-seen-status").html(

'<svg class="text-blue-500 w-4.5 h-4.5 -mt-px message-is-seen" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M11.602 13.76l1.412 1.412 8.466-8.466 1.414 1.414-9.88 9.88-6.364-6.364 1.414-1.414 2.125 2.125 1.413 1.412zm.002-2.828l4.952-4.953 1.41 1.41-4.952 4.953-1.41-1.41zm-2.827 5.655L7.364 18 1 11.636l1.414-1.414 1.413 1.413-.001.001 4.951 4.951z"></path></g></svg>'

),

$(".message-seen-status").find(".message-not-seen").remove());

});

clientListenChannel.bind("client-contactItem", function (data) {

data.update_for == auth_id &&

(data.updating == true

? updateContactItem(data.update_to)

: console.error("[Contact Item updates] Updating failed!"));

});

clientListenChannel.bind("client-messageDelete", function (data) {

$("body")

.find(".message-card[data-id=" + data.id + "]")

.remove();

});

// -------------------------------------

// presence channel [User Active Status]

var activeStatusChannel = pusher.subscribe("presence-activeStatus");


// Joined

activeStatusChannel.bind("pusher:member_added", function (member) {

setActiveStatus(1, member.id);

$(".messenger-list-item[data-contact-id=" + member.id + "]")

.find(".activeStatus")

.remove();

$(".messenger-list-item[data-contact-id=" + member.id + "]")

.find(".avatar")

.before(activeStatusCircle());

});

activeStatusChannel.bind("pusher:member_removed", function (member) {

setActiveStatus(0, member.id);

$(".messenger-list-item[data-contact-id=" + member.id + "]")

.find(".activeStatus")

.remove();

});

function handleVisibilityChange() {

!document.hidden && makeSeen(true);

}


document.addEventListener("visibilitychange", handleVisibilityChange, false);


/**

*-------------------------------------------------------------

* Trigger typing event

*-------------------------------------------------------------

*/

function isTyping(status) {

return clientSendChannel.trigger("client-typing", {

from_id: auth_id,

to_id: getMessengerId(),

typing: status,

});

}


/**

*-------------------------------------------------------------

* Trigger seen event

*-------------------------------------------------------------

*/

function makeSeen(status) {

if (document?.hidden) {

return;

}

return (

$(".messenger-list-item[data-contact-id=" + getMessengerId() + "]")

.find(".new-messages-counter")

.remove(),

$.ajax({

url: url + "/makeSeen",

method: "POST",

data: { id: getMessengerId() },

headers: { "X-CSRF-TOKEN": csrfToken },

xhrFields: { withCredentials: true },

dataType: "JSON",

}),

clientSendChannel.trigger("client-seen", {

from_id: auth_id,

to_id: getMessengerId(),

seen: status,

})

);

}


/**

*-------------------------------------------------------------

* Trigger contact item updates

*-------------------------------------------------------------

*/

function sendContactItemUpdates(status) {

return clientSendChannel.trigger("client-contactItem", {

update_for: getMessengerId(),

update_to: auth_id,

updating: status,

});

}


/**

*-------------------------------------------------------------

* Trigger message delete

*-------------------------------------------------------------

*/

function sendMessageDeleteEvent(messageId) {

return clientSendChannel.trigger("client-messageDelete", { id: messageId });

}


/**

*-------------------------------------------------------------

* Check internet connection using pusher states

*-------------------------------------------------------------

*/

function checkInternet(state, selector) {

let net_errs = 0;

const messengerTitle = $(".messenger-headTitle");

switch (state) {

case "connected":

if (net_errs < 1) {

messengerTitle.text(messengerTitleDefault);

selector.addClass("successBG-rgba");

selector.find("span").hide();

selector.slideDown("fast", function () {

selector.find(".ic-connected").show();

});

setTimeout(function () {

$(".internet-connection").slideUp("fast");

}, 3000);

}

break;

case "connecting":

messengerTitle.text($(".ic-connecting").text()),

selector.removeClass("successBG-rgba"),

selector.find("span").hide(),

selector.slideDown("fast", function () {

selector.find(".ic-connecting").show();

}),

(net_errs = 1);

break;

default:

messengerTitle.text($(".ic-noInternet").text()),

selector.removeClass("successBG-rgba"),

selector.find("span").hide(),

selector.slideDown("fast", function () {

selector.find(".ic-noInternet").show();

}),

(net_errs = 1);

break;

}

}


/**

*-------------------------------------------------------------

* Get contacts

*-------------------------------------------------------------

*/

let contactsPage = 1,

contactsLoading = false,

noMoreContacts = false;

function setContactsLoading(loading = false) {

!loading

? $(".listOfContacts").find(".loading-contacts").remove()

: $(".listOfContacts").append(

'<div class="loading-contacts">' + listItemLoading(4) + "</div>"

);

contactsLoading = loading;

}

function getContacts() {

!contactsLoading &&

!noMoreContacts &&

(setContactsLoading(true),

$.ajax({

url: url + "/getContacts",

method: "GET",

data: { page: contactsPage },

headers: { "X-CSRF-TOKEN": csrfToken },

xhrFields: { withCredentials: true },

dataType: "JSON",

success: (data) => {

setContactsLoading(false);

contactsPage < 2

? $(".listOfContacts").html(data.contacts)

: $(".listOfContacts").append(data.contacts);

updateSelectedContact();

cssMediaQueries();

noMoreContacts = contactsPage >= data?.last_page;

if (!noMoreContacts) {

contactsPage += 1;

}

},

error: (error) => {

setContactsLoading(false);

console.error(error);

},

}));

}


/**

*-------------------------------------------------------------

* Update contact item

*-------------------------------------------------------------

*/

function updateContactItem(user_id) {

if (user_id != auth_id) {

let contactBody = $("body")

.find(".listOfContacts")

.find(".messenger-list-item[data-contact-id=" + user_id + "]");

$.ajax({

url: url + "/updateContacts",

method: "POST",

data: { user_id: user_id },

headers: { "X-CSRF-TOKEN": csrfToken },

xhrFields: { withCredentials: true },

dataType: "JSON",

success: (data) => {

const totalContacts =

$(".listOfContacts").find(".messenger-list-item")?.length ||

0;

if (totalContacts < 1) {

$(".listOfContacts").find(".message-hint").remove();

}

contactBody.remove();

$(".listOfContacts").prepend(data.contactItem);

cssMediaQueries();

updateSelectedContact(user_id);

},

error: () => {

console.error("Server error, check your response");

},

});

}

}


/**

You may also like

You may also like the following Services