1
0
mirror of https://github.com/nerzhul/ocsms.git synced 2025-06-07 07:56:23 +00:00
ocsms/js/devel/app.js
2018-09-08 11:40:44 +02:00

118 lines
2.9 KiB
JavaScript

/**
* Nextcloud - Phone Sync
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Loic Blot <loic.blot@unix-experience.fr>
* @copyright Loic Blot 2014-2018
*/
var Sms = {
// Attributes
selectedConversation: null,
unreadCountCurrentConv: 0,
unreadCountNotifStep: 12,
lastContactListMsgDate: 0,
originalTitle: document.title,
photoVersion: 1,
_winRegexp: /(.*)\/ocsms.*/,
// Functions
generateURL: function (endpoint) {
var match = this._winRegexp.exec(window.location.href);
if (match.length !== 2) {
console.log("A very bad error happened when parsing window location");
}
return match[1] + '/ocsms' + endpoint;
},
selectConversation: function (item) {
if (item === 'undefined' || item == null) {
return;
}
if (this.selectedConversation != null) {
this.selectedConversation.parent().removeClass('selected');
}
this.selectedConversation = item;
this.selectedConversation.parent().addClass('selected');
this.selectedConversation.css("font-weight", "normal");
this.selectedConversation.html(this.selectedConversation.attr("mailbox-label"));
}
};
var ContactRenderer = {
generateColor: function (input) {
if (typeof input === 'undefined') {
return '';
}
// Check if core has the new color generator
if (typeof input.toHsl === 'function') {
var hsl = input.toHsl();
return 'hsl(' + hsl[0] + ', ' + hsl[1] + '%, ' + hsl[2] + '%)';
} else {
// If not, we use the old one
/* global md5 */
var hash = md5(input).substring(0, 4),
maxRange = parseInt('ffff', 16),
hue = parseInt(hash, 16) / maxRange * 256;
return 'hsl(' + hue + ', 90%, 65%)';
}
},
generateFirstCharacter: function (input) {
if (typeof input !== 'string') {
return '?';
}
if (input.charAt(0) === '+') {
return '#';
}
return input.charAt(0);
}
};
$.urlParam = function (name) {
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results == null) {
return null;
}
else {
return results[1] || 0;
}
};
Vue.filter('firstCharacter', ContactRenderer.generateFirstCharacter);
const Dialog = Vue.extend({
template: '#modal-template'
});
Vue.directive('confirm', {
bind(el, binding, vnode) {
const yesMethod = binding.value[1];
const bodyMessage = binding.value[0];
console.log(bodyMessage);
el.handleClick = (e) => {
const data = {
doYes: function () { yesMethod(); data.show = false; },
show: true,
bodyMessage: bodyMessage
};
let dialog = new Dialog({ data: data }).$mount();
document.getElementById('app').appendChild(dialog.$el);
}
el.addEventListener('click', el.handleClick);
},
unbind(el) {
el.removeEventListener('click', el.handleClick);
}
});
(function ($, OC) {
// reset count and title
window.onfocus = function () {
Sms.unreadCountCurrentConv = 0;
document.title = Sms.originalTitle;
};
})(jQuery, OC);