shell bypass 403
/*=========================================================================================
File Name: app-chat.js
Description: Chat app js
----------------------------------------------------------------------------------------
Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template
Author: PIXINVENT
Author URL: http://www.themeforest.net/user/pixinvent
==========================================================================================*/
'use strict';
var sidebarToggle = $('.sidebar-toggle'),
overlay = $('.body-content-overlay'),
sidebarContent = $('.sidebar-content');
// Chat sidebar toggle
function sidebarToggleFunction() {
if (sidebarToggle.length) {
sidebarToggle.on('click', function () {
sidebarContent.addClass('show');
overlay.addClass('show');
});
}
}
$(function () {
var chatUsersListWrapper = $('.chat-application .chat-user-list-wrapper'),
profileSidebar = $('.chat-application .chat-profile-sidebar'),
profileSidebarArea = $('.chat-application .profile-sidebar-area'),
profileToggle = $('.chat-application .sidebar-profile-toggle'),
userProfileToggle = $('.chat-application .user-profile-toggle'),
userProfileSidebar = $('.user-profile-sidebar'),
statusRadio = $('.chat-application .user-status input:radio[name=userStatus]'),
userChats = $('.user-chats'),
chatsUserList = $('.chat-users-list'),
chatList = $('.chat-list'),
contactList = $('.contact-list'),
closeIcon = $('.chat-application .close-icon'),
sidebarCloseIcon = $('.chat-application .sidebar-close-icon'),
menuToggle = $('.chat-application .menu-toggle'),
speechToText = $('.speech-to-text'),
chatSearch = $('.chat-application #chat-search');
// init ps if it is not touch device
if (!$.app.menu.is_touch_device()) {
// Chat user list
if (chatUsersListWrapper.length > 0) {
var chatUserList = new PerfectScrollbar(chatUsersListWrapper[0]);
}
// Admin profile left
if (userProfileSidebar.find('.user-profile-sidebar-area').length > 0) {
var userScrollArea = new PerfectScrollbar(userProfileSidebar.find('.user-profile-sidebar-area')[0]);
}
// Chat area
if (userChats.length > 0) {
var chatsUser = new PerfectScrollbar(userChats[0], {
wheelPropagation: false
});
}
// User profile right area
if (profileSidebarArea.length > 0) {
var user_profile = new PerfectScrollbar(profileSidebarArea[0]);
}
} else {
chatUsersListWrapper.css('overflow', 'scroll');
userProfileSidebar.find('.user-profile-sidebar-area').css('overflow', 'scroll');
userChats.css('overflow', 'scroll');
profileSidebarArea.css('overflow', 'scroll');
// on user click sidebar close in touch devices
$(chatsUserList)
.find('li')
.on('click', function () {
$(sidebarContent).removeClass('show');
$(overlay).removeClass('show');
});
}
// Chat Profile sidebar & overlay toggle
if (profileToggle.length) {
profileToggle.on('click', function () {
profileSidebar.addClass('show');
overlay.addClass('show');
});
}
// Update status by clicking on Radio
if (statusRadio.length) {
statusRadio.on('change', function () {
var $className = 'avatar-status-' + this.value,
profileHeaderAvatar = $('.header-profile-sidebar .avatar span');
profileHeaderAvatar.removeClass();
profileToggle.find('.avatar span').removeClass();
profileHeaderAvatar.addClass($className + ' avatar-status-lg');
profileToggle.find('.avatar span').addClass($className);
});
}
// On Profile close click
if (closeIcon.length) {
closeIcon.on('click', function () {
profileSidebar.removeClass('show');
userProfileSidebar.removeClass('show');
if (!sidebarContent.hasClass('show')) {
overlay.removeClass('show');
}
});
}
// On sidebar close click
if (sidebarCloseIcon.length) {
sidebarCloseIcon.on('click', function () {
sidebarContent.removeClass('show');
overlay.removeClass('show');
});
}
// User Profile sidebar toggle
if (userProfileToggle.length) {
userProfileToggle.on('click', function () {
userProfileSidebar.addClass('show');
overlay.addClass('show');
});
}
// On overlay click
if (overlay.length) {
overlay.on('click', function () {
sidebarContent.removeClass('show');
overlay.removeClass('show');
profileSidebar.removeClass('show');
userProfileSidebar.removeClass('show');
});
}
// Add class active on click of Chat users list
if (chatUsersListWrapper.find('ul li').length) {
chatUsersListWrapper.find('ul li').on('click', function () {
var $this = $(this),
startArea = $('.start-chat-area'),
activeChat = $('.active-chat');
if (chatUsersListWrapper.find('ul li').hasClass('active')) {
chatUsersListWrapper.find('ul li').removeClass('active');
}
$this.addClass('active');
$this.find('.badge').remove();
if (chatUsersListWrapper.find('ul li').hasClass('active')) {
startArea.addClass('d-none');
activeChat.removeClass('d-none');
} else {
startArea.removeClass('d-none');
activeChat.addClass('d-none');
}
});
}
// auto scroll to bottom of Chat area
chatsUserList.find('li').on('click', function () {
userChats.animate({ scrollTop: userChats[0].scrollHeight }, 400);
});
// Main menu toggle should hide app menu
if (menuToggle.length) {
menuToggle.on('click', function (e) {
sidebarContent.removeClass('show');
overlay.removeClass('show');
profileSidebar.removeClass('show');
userProfileSidebar.removeClass('show');
});
}
if ($(window).width() < 992) {
sidebarToggleFunction();
}
// Filter
if (chatSearch.length) {
chatSearch.on('keyup', function () {
var value = $(this).val().toLowerCase();
if (value !== '') {
// filter chat list
chatList.find('li:not(.no-results)').filter(function () {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
});
// filter contact list
contactList.find('li:not(.no-results)').filter(function () {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
});
var chat_tbl_row = chatList.find('li:not(.no-results):visible').length,
contact_tbl_row = contactList.find('li:not(.no-results):visible').length;
// check if chat row available
if (chat_tbl_row == 0) {
chatList.find('.no-results').addClass('show');
} else {
if (chatList.find('.no-results').hasClass('show')) {
chatList.find('.no-results').removeClass('show');
}
}
// check if contact row available
if (contact_tbl_row == 0) {
contactList.find('.no-results').addClass('show');
} else {
if (contactList.find('.no-results').hasClass('show')) {
contactList.find('.no-results').removeClass('show');
}
}
} else {
// If filter box is empty
chatsUserList.find('li').show();
if (chatUsersListWrapper.find('.no-results').hasClass('show')) {
chatUsersListWrapper.find('.no-results').removeClass('show');
}
}
});
}
if (speechToText.length) {
// Speech To Text
var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition;
if (SpeechRecognition !== undefined && SpeechRecognition !== null) {
var recognition = new SpeechRecognition(),
listening = false;
speechToText.on('click', function () {
var $this = $(this);
recognition.onspeechstart = function () {
listening = true;
};
if (listening === false) {
recognition.start();
}
recognition.onerror = function (event) {
listening = false;
};
recognition.onresult = function (event) {
$this.closest('.form-send-message').find('.message').val(event.results[0][0].transcript);
};
recognition.onspeechend = function (event) {
listening = false;
recognition.stop();
};
});
}
}
});
// Window Resize
$(window).on('resize', function () {
sidebarToggleFunction();
if ($(window).width() > 992) {
if ($('.chat-application .body-content-overlay').hasClass('show')) {
$('.app-content .sidebar-left').removeClass('show');
$('.chat-application .body-content-overlay').removeClass('show');
}
}
// Chat sidebar toggle
if ($(window).width() < 991) {
if (
!$('.chat-application .chat-profile-sidebar').hasClass('show') ||
!$('.chat-application .sidebar-content').hasClass('show')
) {
$('.sidebar-content').removeClass('show');
$('.body-content-overlay').removeClass('show');
}
}
});
// Add message to chat - function call on form submit
function enterChat(source) {
var message = $('.message').val();
if (/\S/.test(message)) {
var html = '<div class="chat-content">' + '<p>' + message + '</p>' + '</div>';
$('.chat:last-child .chat-body').append(html);
$('.message').val('');
$('.user-chats').scrollTop($('.user-chats > .chats').height());
}
}