653 lines
17 KiB
JavaScript
Executable File
653 lines
17 KiB
JavaScript
Executable File
var mailScroll = { topLoad: 0 };
|
|
var emailComposeTimeout;
|
|
$(document).on('click', '#mailbox_toggle', function() {
|
|
mailMaker();
|
|
});
|
|
|
|
function mailMaker(incomingData) {
|
|
console.log(incomingData);
|
|
if (!incomingData) { incomingData = {}; }
|
|
var jData = JSON.stringify(incomingData);
|
|
console.log(jData);
|
|
var url = '/manager/mailbox';
|
|
var timestamp = Date.now();
|
|
var firstMsg = $($('.mailbox_message')[0]);
|
|
if(incomingData['scroll'] == 1) {
|
|
url = '/manager/mail/scroll';
|
|
timestamp = firstMsg.attr('timestamp');
|
|
}
|
|
|
|
var picked = localStorage.getItem('mail_picker');
|
|
var contact_uuid = localStorage.getItem('mail_contact');
|
|
var mail_phone = localStorage.getItem('mail_phone');
|
|
var mail_email = localStorage.getItem('mail_email');
|
|
$.ajax({
|
|
url: url,
|
|
type: 'GET',
|
|
data: { window_maker: 'yes', timestamp: timestamp, email: mail_email, phone: mail_phone, mail_contact: contact_uuid, picker: picked, incoming_data: jData },
|
|
success: function(response) {
|
|
if (incomingData['scroll'] != 1) {
|
|
windowMaker(response);
|
|
windowDrawerCloser('mailbox');
|
|
mailWebSocketStart();
|
|
mailScrollBottom('load');
|
|
}
|
|
else {
|
|
var mb = $(response.contents).find('#mailbox');
|
|
var nm = mb.html();
|
|
$('#mailbox').prepend(nm);
|
|
if (response.mail.length == 30) {
|
|
$('#mailbox').scrollTop(firstMsg.position().top + $('#mailbox').height() - firstMsg.height());
|
|
}
|
|
}
|
|
mailScroll = { topLoad: 0 };
|
|
}, error: function (response) { }
|
|
});
|
|
}
|
|
|
|
$(document).on('click', '#mail_hamburger', function() {
|
|
var mh = $(this);
|
|
var ml = $('#mail_sidebar');
|
|
var c = $('#conversation');
|
|
var status = 'off';
|
|
|
|
if (ml.is(':visible')) {
|
|
ml.hide();
|
|
c.show();
|
|
status = 'on';
|
|
}
|
|
else {
|
|
ml.show();
|
|
c.hide();
|
|
}
|
|
localStorage.setItem('mail_sidebar', status);
|
|
mailScrollBottom('load');
|
|
});
|
|
|
|
|
|
|
|
function mail_picker() {
|
|
var picker = {};
|
|
if ($('.mail_picker').is(':visible')) {
|
|
$('.mail_picker').each(function(i,v) {
|
|
picker[$(v).attr('group')] = $(v).val();
|
|
});
|
|
var picked = JSON.stringify(picker);
|
|
localStorage.setItem('mail_picker', picked);
|
|
}
|
|
else if ($('.mail_list_picker').is(':visible')) {
|
|
var uuid = $('.mail_list[chosen="yes"]').attr('uuid');
|
|
$('.mail_list_selection[uuid="' + uuid +'"]').each(function(i,v) {
|
|
picker[$(v).attr('group')] = $(v).attr('sc');
|
|
});
|
|
var picked = JSON.stringify(picker);
|
|
localStorage.setItem('mail_picker', picked);
|
|
}
|
|
else {
|
|
picker = JSON.parse(localStorage.getItem('mail_picker')) || {};
|
|
}
|
|
return picker;
|
|
}
|
|
|
|
$(document).on('click', '#mail_toggle', function() {
|
|
if (!$('#mail').is(':visible')) {
|
|
$(this).css({ 'border': 'solid', 'border-radius': '10px', 'border-color':'red' });
|
|
var timestamp = Date.now();
|
|
var picked = JSON.stringify(mail_picker());
|
|
var cx_uuid = $(this).attr('cx_uuid');
|
|
$.ajax({
|
|
url: '/mail/homepage_form',
|
|
type: 'GET',
|
|
data: {
|
|
timestamp: timestamp, picker: picked, mail_contact: cx_uuid
|
|
},
|
|
success: function(response) {
|
|
$('#mail').html(response).show();
|
|
mailWebSocketStart();
|
|
$('#mail_toggle').css({ 'border': 'none' });
|
|
$('.mail_contact_input').each(function(i,v) {
|
|
var setting = $(v).attr('id');
|
|
var value = localStorage.getItem(setting);
|
|
$(this).val(value);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
$('#mail').hide();
|
|
}
|
|
});
|
|
|
|
|
|
$(document).on('change', '.mail_contact_input', function() {
|
|
var input = $(this);
|
|
var setting = input.attr('id');
|
|
var value = input.val();
|
|
localStorage.setItem(setting,value);
|
|
});
|
|
|
|
$(document).on('click', '#email_compose', function() {
|
|
|
|
var ec = $(this);
|
|
var email = localStorage.getItem('mail_email');
|
|
|
|
$.ajax({
|
|
url: '/manager/mail/compose',
|
|
type: 'GET',
|
|
data: { email: email },
|
|
success: function(response) {
|
|
console.log(response);
|
|
windowDrawerOpener('mailbox', response.html);
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '#email_discard', function() {
|
|
var uuid = $('#email_compose_form').attr('uuid');
|
|
if (uuid) {
|
|
mailDeleteMessage(uuid);
|
|
}
|
|
windowDrawerCloser('mailbox');
|
|
});
|
|
|
|
function mailDeleteMessage(uuid) {
|
|
if (uuid) {
|
|
var msg = { uuid: uuid };
|
|
var m = JSON.stringify({ msg: msg, timestamp:timestamp, type: 'delete' });
|
|
mailws.send(m);
|
|
}
|
|
}
|
|
|
|
$(document).on('keyup', '.email_compose_input', function() {
|
|
clearTimeout(emailComposeTimeout);
|
|
emailComposeTimeout = setTimeout(function() {
|
|
var browser_tab_id = sessionStorage.getItem('browser_tab_id') || bti;
|
|
var timestamp = Date.now();
|
|
var uuid = $('#email_compose_form').attr('uuid');
|
|
var message = {
|
|
to: '',
|
|
subject: '',
|
|
body: ''
|
|
};
|
|
$.each(message, function(i,v) {
|
|
message[i] = $('#email_compose_' + i).val();
|
|
});
|
|
console.log(message);
|
|
message['uuid'] = uuid;
|
|
var m = JSON.stringify({ msg: message, timestamp:timestamp, type: 'compose' });
|
|
mailws.send(m);
|
|
}, 200);
|
|
});
|
|
|
|
$(document).on('click', '#send_it', function() {
|
|
sendIt();
|
|
});
|
|
|
|
$(document).on('keyup', '#message', function(e) {
|
|
if (e.keyCode == 13) {
|
|
sendIt();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.mailbox_message', function(e) {
|
|
console.log(e);
|
|
var b = $(this);
|
|
var armed = b.attr('armed');
|
|
if (e.ctrlKey == true || b.attr('armed')) {
|
|
mailDeleteMessageArmer(b)
|
|
}
|
|
});
|
|
|
|
$(document).on('dblclick', '.mailbox_message', function(e) {
|
|
var b = $(this);
|
|
mailDeleteMessageArmer(b);
|
|
});
|
|
|
|
function mailDeleteMessageArmer(b) {
|
|
var armed = b.attr('armed');
|
|
console.log('armed');
|
|
if (armed == 'yes') {
|
|
b.addClass('superactive');
|
|
var uuid = b.attr('uuid');
|
|
console.log(uuid);
|
|
mailDeleteMessage(uuid);
|
|
}
|
|
else {
|
|
b.attr('armed', 'yes');
|
|
b.find('span').each(function(i,v) {
|
|
var bgcolor = $(v).css('background-color');
|
|
$(v).attr('obg', bgcolor);
|
|
$(v).css({'background-color': 'red' });
|
|
});
|
|
setTimeout(function() {
|
|
b.find('span').each(function(i,v) { $(v).css({'background-color': $(v).attr('obg') }); });
|
|
b.attr('armed', 'no');
|
|
},2000);
|
|
}
|
|
}
|
|
|
|
function sendIt() {
|
|
var timestamp = Date.now();
|
|
var msg = $('#message').val();
|
|
var project = $('#mail_project_picker').val() || 'general';
|
|
var picked = JSON.stringify(mail_picker());
|
|
|
|
localStorage.getItem('mail_name');
|
|
var mail_contact;
|
|
var phone;
|
|
var email;
|
|
if ($('.mail_subsection.active').attr('section') == 'pen') {
|
|
mail_contact = 'pen';
|
|
picked = {};
|
|
}
|
|
else if ($('.mail_subsection.active').attr('section') == 'sms') {
|
|
phone = localStorage.getItem('mail_phone');
|
|
picked = {};
|
|
mail_contact = undefined;
|
|
}
|
|
else if ($('.mail_subsection.active').attr('section') == 'email') {
|
|
email = localStorage.getItem('mail_email');
|
|
picked = {};
|
|
mail_contact = undefined;
|
|
}
|
|
else if ( $('.mail_subsection.active').attr('section') == 'tickets' ) {
|
|
mail_contact = localStorage.getItem('mail_contact');
|
|
picked = {};
|
|
|
|
}
|
|
var browser_tab_id = sessionStorage.getItem('browser_tab_id') || bti;
|
|
var m = JSON.stringify({ msg: msg, mail_contact:mail_contact, phone:phone, email: email, browser_tab_id: browser_tab_id, timestamp:timestamp, type: 'message', picker: picked });
|
|
mailws.send(m);
|
|
$('#message').val('');
|
|
$('#message').trigger('click');
|
|
|
|
}
|
|
|
|
var mailws = undefined;
|
|
var mailwsInterval;
|
|
var last_mail_message = '';
|
|
|
|
function mailWebSocketStart() {
|
|
var timestamp = Date.now();
|
|
if (typeof mailws == 'object') {
|
|
if (mailws.readyState == 1) {
|
|
return true;
|
|
}
|
|
}
|
|
if (typeof mailws == 'object') {
|
|
if (mailws.readyState != 1) {
|
|
mailWebSocketStop();
|
|
}
|
|
}
|
|
|
|
clearInterval(mailwsInterval);
|
|
var browser_tab_id = sessionStorage.getItem('browser_tab_id') || bti;
|
|
var browser_tab = localStorage.getItem('browser_tab') || bt;
|
|
var picked = JSON.stringify(mail_picker());
|
|
var mail_contact = localStorage.getItem('mail_contact');
|
|
var phone;
|
|
if ($('.mail_subsection.active').attr('section') == 'sms') {
|
|
phone = localStorage.getItem('mail_phone');
|
|
}
|
|
var email;
|
|
if ($('.mail_subsection.active').attr('section') == 'email') {
|
|
email = localStorage.getItem('mail_email');
|
|
}
|
|
mailws = new WebSocket(mail_ws_url + '?timestamp=' + timestamp + '&browser_tab=' + browser_tab + '&browser_tab_id=' + browser_tab_id + '&picker=' + picked + '&mail_contact=' + mail_contact + '&phone=' + phone + '&email=' + email);
|
|
console.log('ws+() mail at ' + mail_ws_url + ' ' + mail_contact);
|
|
mailws.onopen = function (event) {
|
|
var sender = JSON.stringify({ type: 'refresher', 'last_message': last_mail_message });
|
|
mailws.send(sender);
|
|
mailwsInterval = setInterval(function() {
|
|
if (mailws.readyState != 1) {
|
|
mailWebSocketStop();
|
|
}
|
|
else {
|
|
|
|
var decrypteds = [];
|
|
$('.mailbox_message[decrypted="no"]').each(function(i,v) {
|
|
decrypteds.push($(v).attr('uuid'));
|
|
});
|
|
|
|
var sender = JSON.stringify({ 'type': 'heartbeat', 'decrypteds': decrypteds });
|
|
mailws.send(sender);
|
|
}
|
|
},2000);
|
|
};
|
|
mailws.onmessage = function (event) {
|
|
var data = JSON.parse(event.data);
|
|
if (data.type == 'message') {
|
|
var data = JSON.parse(event.data);
|
|
console.log(data);
|
|
|
|
$('#mailbox').append(data.envelope);
|
|
mailScrollBottom();
|
|
last_mail_message = Date.now();
|
|
appointment_chron();
|
|
}
|
|
else if (data.type == 'refresher') {
|
|
$.each(data.messages, function(i,v) {
|
|
$('#mailbox').append(data.envelope);
|
|
mailScrollBottom();
|
|
});
|
|
appointment_chron();
|
|
}
|
|
|
|
};
|
|
mailws.onclose = function (event) {
|
|
|
|
}
|
|
}
|
|
|
|
function mailWebSocketStop() {
|
|
if ( mailws ) { mailws.close(); mailws = undefined; delete mailws; };
|
|
mailWebSocketStart();
|
|
}
|
|
|
|
|
|
function mailScrollBottom(type) {
|
|
var lastMsg = $($('.mailbox_message')[$('.mailbox_message').length - 1]);
|
|
var firstMsg = $($('.mailbox_message')[0]);
|
|
var currentScroll = $('#mailbox').scrollTop();
|
|
if (($('#mailbox').height() - lastMsg.position().top) >= -5 || type == 'load') {
|
|
$('#mailbox').scrollTop(lastMsg.position().top + lastMsg.height() + $('#mailbox').scrollTop());
|
|
}
|
|
}
|
|
|
|
$(document).on('mousewheel touchmove scroll', '#mailbox', function() {
|
|
var lastMsg = $($('.mailbox_message')[$('.mailbox_message').length - 1]);
|
|
var firstMsg = $($('.mailbox_message')[0]);
|
|
|
|
if (firstMsg.position().top > -1 && firstMsg.position().top < 0.1 && mailScroll['topLoad'] == 0) {
|
|
mailScroll['topLoad'] = 1;
|
|
console.log('scrolling ' + lastMsg.position().top + ' ' + firstMsg.position().top);
|
|
mailMaker({ 'scroll': 1, 'firstTime': firstMsg.attr('timestamp') });
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.mail_contact', function() {
|
|
var timestamp = Date.now();
|
|
var uuid;
|
|
uuid = $(this).attr('uuid');
|
|
localStorage.setItem('mail_contact', uuid);
|
|
localStorage.removeItem('mail_phone');
|
|
|
|
var name = $(this).attr('name');
|
|
var contact_name = $(this).attr('contact_name');
|
|
|
|
var picked = JSON.stringify(mail_picker());
|
|
$.ajax({
|
|
url: '/manager/mail/contact',
|
|
type: 'GET',
|
|
data: { timestamp: timestamp, mail_contact: uuid, name: name, uuid: uuid, picker: picked },
|
|
success: function(response) {
|
|
windowMaker(response.html);
|
|
mailWebSocketStop();
|
|
$('.mail_contact[uuid="' + uuid + '"]').addClass('active');
|
|
mailScrollBottom('load');
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.mail_phone', function() {
|
|
var timestamp = Date.now();
|
|
var phone = $(this).attr('phone');
|
|
|
|
console.log(phone);
|
|
$.ajax({
|
|
url: '/manager/mail/phone',
|
|
type: 'GET',
|
|
data: { phone: phone, timestamp: timestamp },
|
|
success: function(response) {
|
|
console.log(response);
|
|
windowMaker(response.html);
|
|
localStorage.setItem('mail_phone', phone);
|
|
mailScrollBottom('load');
|
|
mailScroll = { topLoad: 0 };
|
|
mailWebSocketStop();
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.mail_email', function() {
|
|
var timestamp = Date.now();
|
|
var email = $(this).attr('email');
|
|
|
|
console.log(email);
|
|
$.ajax({
|
|
url: '/manager/mail/email',
|
|
type: 'GET',
|
|
data: { email: email, timestamp: timestamp },
|
|
success: function(response) {
|
|
console.log(response);
|
|
windowMaker(response.html);
|
|
localStorage.removeItem('mail_phone');
|
|
localStorage.setItem('mail_email', email);
|
|
mailScrollBottom('load');
|
|
mailScroll = { topLoad: 0 };
|
|
mailWebSocketStop();
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('change', '.mail_picker', function() {
|
|
var picker = $(this);
|
|
var val = picker.val();
|
|
var group = picker.attr('group');
|
|
localStorage.removeItem('mail_contact');
|
|
localStorage.removeItem('mail_phone');
|
|
var picked = JSON.stringify(mail_picker());
|
|
$('.mail_contact.active').removeClass('active');
|
|
var timestamp = Date.now();
|
|
var idata = { 'sidebar': 1 };
|
|
var jData = JSON.stringify(idata);
|
|
$.ajax({
|
|
url: '/manager/mail/picker',
|
|
type: 'GET',
|
|
data: { timestamp: timestamp, picker: picked, incoming_data: jData },
|
|
success: function(response) {
|
|
windowMaker(response.html);
|
|
mailWebSocketStop();
|
|
mailScrollBottom('load');
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '#mail_picker_default', function() {
|
|
var lastV;
|
|
$('.mail_picker').each(function(i,v) {
|
|
var value = $(v).find('option[default="yes"]').attr('value');
|
|
$(v).val(value);
|
|
lastV = $(v);
|
|
});
|
|
lastV.trigger('change');
|
|
});
|
|
|
|
$(document).on('dblclick', '#mailbox', function() {
|
|
mailScrollBottom('load');
|
|
})
|
|
|
|
$(document).on('click', '.mail_subsection', function() {
|
|
var section = $(this).attr('section');
|
|
settingSetter({ 'app': 'mail', 'setting': 'subsection', 'value': section });
|
|
if (section == 'pen') {
|
|
localStorage.setItem('mail_contact', 'pen');
|
|
}
|
|
setTimeout(function() {
|
|
var sidebar = 1;
|
|
if (section == 'pen') { sidebar = 0; }
|
|
mailMaker({ 'sidebar': sidebar });
|
|
},250);
|
|
});
|
|
|
|
$(document).on('click', '.mail_list', function(e) {
|
|
console.log(e);
|
|
if ($(e.target).hasClass('mail_config_toggle')) {
|
|
return;
|
|
}
|
|
var l = $(this);
|
|
var uuid = l.attr('uuid');
|
|
settingSetter({ 'app': 'mail', 'setting': 'mail_list', 'value': uuid });
|
|
l.attr('chosen', 'yes');
|
|
setTimeout(function() {
|
|
var picked = JSON.stringify(mail_picker());
|
|
var timestamp = Date.now();
|
|
$('.mail_list.active').removeClass('active');
|
|
$.ajax({
|
|
url: '/manager/mail/picker',
|
|
type: 'GET',
|
|
data: { timestamp: timestamp, picker: picked },
|
|
success: function(response) {
|
|
windowMaker(response.html);
|
|
$('.mail_list[uuid="' + uuid + '"]').addClass('active');
|
|
|
|
mailWebSocketStop();
|
|
mailScrollBottom('load');
|
|
}
|
|
});
|
|
},250);
|
|
});
|
|
|
|
$(document).on('click', '.mail_config_toggle', function() {
|
|
var uuid = $(this).attr('uuid');
|
|
var container = $('.mail_config_container[uuid="' + uuid + '"]');
|
|
if (!container.parent().is(':visible')) {
|
|
$.ajax({
|
|
url: '/manager/mail/config',
|
|
type: 'GET',
|
|
data: { uuid: uuid },
|
|
success: function(response) {
|
|
container.html(response.html)
|
|
container.parent().show();
|
|
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
container.parent().hide();
|
|
}
|
|
});
|
|
|
|
$(document).on('change', '.mail_config', function() {
|
|
var value = $(this).val();
|
|
var setting = $(this).attr('setting');
|
|
var uuid = $(this).closest('.mail_config_container').attr('uuid');
|
|
|
|
if ($(this).attr('type') == 'checkbox') {
|
|
value = $(this).prop('checked');
|
|
}
|
|
|
|
|
|
|
|
$.ajax({
|
|
url: '/manager/mail/config',
|
|
type: 'POST',
|
|
data: { setting: setting, value: value, uuid: uuid },
|
|
success: function(response) {
|
|
$.ajax({
|
|
url: '/manager/mail/picker',
|
|
type: 'GET',
|
|
data: { timestamp: timestamp, },
|
|
success: function(response) {
|
|
windowMaker(response.html);
|
|
$('.mail_list[uuid="' + uuid + '"]').addClass('active');
|
|
var container = $('.mail_config_container[uuid="' + uuid + '"]');
|
|
mailWebSocketStop();
|
|
$.ajax({
|
|
url: '/manager/mail/config',
|
|
type: 'GET',
|
|
data: { uuid: uuid },
|
|
success: function(response) {
|
|
container.html(response.html)
|
|
container.parent().show();
|
|
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.mail_qr_generator', function() {
|
|
var uuid = $(this).attr('uuid');
|
|
$.ajax({
|
|
url: '/manager/mail/qr_generator',
|
|
type: 'GET',
|
|
data: { uuid: uuid },
|
|
success: function(response) {
|
|
$('.mail_qr[uuid="' + uuid + '"]').attr('src', response.qr_image).show();
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '#mailbox_audio', function() {
|
|
var a = $(this);
|
|
if (a.attr('armed') == 'yes') {
|
|
jpStop(undefined,'audio');
|
|
a.attr('armed','no');
|
|
var obg = a.attr('obg');
|
|
a.css({'background-color': obg});
|
|
}
|
|
else {
|
|
jpStart(undefined,'audio');
|
|
a.attr('armed','yes');
|
|
var obg = a.css('background-color');
|
|
a.attr('obg', obg);
|
|
a.css({'background-color': 'red'});
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#mailbox_video', function() {
|
|
var a = $(this);
|
|
if (a.attr('armed') == 'yes') {
|
|
jpStop(undefined,'video');
|
|
a.attr('armed','no');
|
|
var obg = a.attr('obg');
|
|
a.css({'background-color': obg});
|
|
}
|
|
else {
|
|
jpStart(undefined,'video');
|
|
a.attr('armed','yes');
|
|
var obg = a.css('background-color');
|
|
a.attr('obg', obg);
|
|
a.css({'background-color': 'red'});
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#mailbox_screen', function() {
|
|
var a = $(this);
|
|
if (a.attr('armed') == 'yes') {
|
|
jpStop(undefined,'screen');
|
|
a.attr('armed', 'no');
|
|
var obg = a.attr('obg');
|
|
a.css({'background-color': obg});
|
|
}
|
|
else {
|
|
jpScreen(undefined,'video');
|
|
a.attr('armed','yes');
|
|
var obg = a.css('background-color');
|
|
a.attr('obg', obg);
|
|
a.css({ 'background-color': 'red' });
|
|
}
|
|
});
|
|
|
|
|
|
document.addEventListener("visibilitychange", function(e) {
|
|
if (e.returnValue == true) {
|
|
mailWebSocketStart();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#mailbox_lora_toggle', function() {
|
|
var toggled = $(this).attr('toggle');
|
|
if (toggled == 'on') {
|
|
toggled = 'off';
|
|
}
|
|
else {
|
|
toggled = 'on';
|
|
}
|
|
$(this).attr('toggle', toggled);
|
|
settingSetter({ 'app': 'mail', 'setting': 'lora_toggle', 'value': toggled });
|
|
});
|