diff --git a/js/public/app.js b/js/public/app.js
index b67601f..17c3ace 100644
--- a/js/public/app.js
+++ b/js/public/app.js
@@ -34,8 +34,8 @@ function arrayUnique(arr) {
return unq;
}
-app.controller('OcSmsController', ['$scope', '$interval', '$timeout',
- function ($scope, $interval, $timeout) {
+app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile',
+ function ($scope, $interval, $timeout, $compile) {
$scope.buttons = [
{text: "Send"}
];
@@ -48,10 +48,134 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout',
// phoneNumber must exist
if (contact.nav !== null) {
- fetchConversation(contact.nav);
+ $scope.fetchConversation(contact.nav);
changeSelectedConversation($("a[mailbox-navigation='" + contact.nav + "']"));
}
};
+ $scope.fetchConversation = function (phoneNumber) {
+ $.getJSON(OC.generateUrl('/apps/ocsms/get/conversation'),
+ {
+ 'phoneNumber': phoneNumber
+ },
+ function(jsondata, status) {
+ var phoneNumberLabel = phoneNumber;
+
+ if (typeof jsondata['phoneNumbers'] != 'undefined') {
+ phoneNumberList = arrayUnique(jsondata['phoneNumbers']);
+ phoneNumberLabel = phoneNumberList.toString();
+ }
+
+ var conversationBuf = formatConversation(jsondata)[1];
+ conversationBuf += '
';
+ if (typeof jsondata['contactName'] == 'undefined' || jsondata['contactName'] == '') {
+ $('#ocsms-phone-label').html(phoneNumberLabel);
+ g_curContactName = phoneNumberLabel;
+ $('#ocsms-phone-opt-number').html('');
+ }
+ else {
+ $('#ocsms-phone-label').html(jsondata['contactName']);
+ g_curContactName = jsondata['contactName'];
+ $('#ocsms-phone-opt-number').html(phoneNumberLabel);
+ }
+
+ setMessageCountInfo(jsondata);
+
+ if ($('#app-content-header').is(':hidden')) {
+ $('#app-content-header').show();
+ }
+
+ if ($('#ocsms-conversation-removal').is(':hidden')) {
+ $('#ocsms-conversation-removal').show();
+ }
+
+ $('#app-content-wrapper').html(conversationBuf);
+ $('#app-content').scrollTop(1E10);
+
+ g_curPhoneNumber = phoneNumber;
+ }
+ );
+ }
+ $scope.checkNewMessages = function() {
+ g_unreadCountAllConv = 0;
+ $.getJSON(OC.generateUrl('/apps/ocsms/get/new_messages'),
+ { 'lastDate': g_lastMsgDate },
+ function(jsondata, status) {
+ var peerListBuf = '';
+ var bufferedContacts = [];
+
+ $.each(jsondata['phonelist'], function(id, val) {
+ var fn, peerLabel, idxVal;
+ idxVal = id.replace(/\//g,' ');
+ idxVal2 = idxVal.replace('/ /g','');
+ if (typeof jsondata['contacts'][id] == 'undefined') {
+ fn = '';
+ peerLabel = idxVal;
+ }
+ else {
+ fn = jsondata['contacts'][id];
+ peerLabel = fn;
+ }
+
+ if (!inArray(peerLabel, bufferedContacts)) {
+ $("li[peer-label='" + peerLabel + "']").remove();
+ peerListBuf = '' + peerLabel + ' (' + val + ')';
+
+ g_ulContactList.prepend(peerListBuf);
+ bufferedContacts.push(peerLabel);
+
+ // Re-set conversation because we reload the element
+ if (idxVal == g_curPhoneNumber) {
+ changeSelectedConversation($("a[mailbox-navigation='" + idxVal + "']"));
+ }
+
+ g_unreadCountAllConv += parseInt(val);
+
+ // Now bind the events when we click on the phone number
+ $("a[mailbox-navigation='" + idxVal + "']").on('click', function (event) {
+ var phoneNumber = $(this).attr('mailbox-navigation');
+ OC.Util.History.pushState('phonenumber=' + phoneNumber);
+
+ // phoneNumber must exist
+ if (phoneNumber != null) {
+ $scope.fetchConversation(phoneNumber);
+ g_unreadCountAllConv += val;
+ changeSelectedConversation($(this));
+ }
+ event.preventDefault();
+ });
+ }
+ });
+
+ /*
+ * Decrement notification step counter, but stop it a zero
+ * Stop at zero permit to notify instanly the user when
+ * there is new messages in all conversations
+ */
+
+ if (g_unreadCountNotifStep > 0) {
+ g_unreadCountNotifStep--;
+ }
+
+ if (g_unreadCountAllConv > 0) {
+ /*
+ * We notify user every two minutes for all messages
+ * or if unreadCount changes
+ */
+ if (g_unreadCountNotifStep == 0 || g_lastUnreadCountAllConv != g_unreadCountAllConv) {
+ desktopNotify(g_unreadCountAllConv + " unread message(s) for all conversations");
+ g_unreadCountNotifStep = 12;
+ g_lastUnreadCountAllConv = g_unreadCountAllConv;
+ }
+ }
+ }
+ );
+ };
+
$scope.removeConversation = function() {
$.post(OC.generateUrl('/apps/ocsms/delete/conversation'), {"contact": g_curContactName}, function(data) {
// Reinit main window
@@ -74,8 +198,54 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout',
});
};
+ $scope.fetchInitialSettings = function () {
+ $.getJSON(OC.generateUrl('/apps/ocsms/get/country'), function(jsondata, status) {
+ if (jsondata['status'] == true) {
+ $('#sel_intl_phone').val(jsondata["country"]);
+ }
+ });
+ }
+ $scope.fetchInitialPeerList = function (jsondata) {
+ // Use a buffer for better jQuery performance
+ var peerListBuf = "";
+ var bufferedContacts = [];
+
+ $.each(jsondata['phonelist'], function(id, val) {
+ var fn, peerLabel, idxVal;
+ idxVal = id.replace(/\//g,' ');
+ idxVal2 = idxVal.replace('/ /g','');
+ if (typeof jsondata['contacts'][id] == 'undefined') {
+ fn = '';
+ peerLabel = idxVal;
+ }
+ else {
+ fn = jsondata['contacts'][id];
+ peerLabel = fn;
+ }
+ if (!inArray(peerLabel, bufferedContacts)) {
+ $scope.addContact({'label': peerLabel, 'nav': idxVal2, 'avatar': jsondata['photos'][peerLabel]});
+ bufferedContacts.push(peerLabel);
+ }
+ });
+
+ g_lastMsgDate = jsondata["lastRead"];
+ }
+
+
+ $scope.initDesktopNotifies = function () {
+ if (!("Notification" in window)) {
+ return;
+ }
+
+ Notification.requestPermission(function (permission) {
+ if(!('permission' in Notification)) {
+ Notification.permission = permission;
+ }
+ });
+ }
+
$interval(refreshConversation, 10000);
- $interval(checkNewMessages, 10000);
+ $interval($scope.checkNewMessages, 10000);
$timeout(function () {
// Register real title
@@ -83,13 +253,13 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout',
// Now bind the events when we click on the phone number
$.getJSON(OC.generateUrl('/apps/ocsms/get/peerlist'), function(jsondata, status) {
- fetchInitialPeerList(jsondata);
+ $scope.fetchInitialPeerList(jsondata);
var pnParam = $.urlParam('phonenumber');
if (pnParam != null) {
var urlPhoneNumber = decodeURIComponent(pnParam);
if (urlPhoneNumber != null) {
- fetchConversation(urlPhoneNumber);
+ $scope.fetchConversation(urlPhoneNumber);
changeSelectedConversation($("a[mailbox-navigation='" + urlPhoneNumber + "']"));
}
}
@@ -101,8 +271,8 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout',
}
});
- fetchInitialSettings();
- initDesktopNotifies();
+ $scope.fetchInitialSettings();
+ $scope.initDesktopNotifies();
});
}
]);
@@ -157,87 +327,6 @@ var refreshConversation = function() {
);
};
-var checkNewMessages = function() {
- g_unreadCountAllConv = 0;
- $.getJSON(OC.generateUrl('/apps/ocsms/get/new_messages'),
- { 'lastDate': g_lastMsgDate },
- function(jsondata, status) {
- var peerListBuf = '';
- var bufferedContacts = [];
-
- $.each(jsondata['phonelist'], function(id, val) {
- var fn, peerLabel, idxVal;
- idxVal = id.replace(/\//g,' ');
- idxVal2 = idxVal.replace('/ /g','');
- if (typeof jsondata['contacts'][id] == 'undefined') {
- fn = '';
- peerLabel = idxVal;
- }
- else {
- fn = jsondata['contacts'][id];
- peerLabel = fn;
- }
-
- if (!inArray(peerLabel, bufferedContacts)) {
- $("li[peer-label='" + peerLabel + "']").remove();
- peerListBuf = '' + peerLabel + ' (' + val + ')';
-
- g_ulContactList.prepend(peerListBuf);
- bufferedContacts.push(peerLabel);
-
- // Re-set conversation because we reload the element
- if (idxVal == g_curPhoneNumber) {
- changeSelectedConversation($("a[mailbox-navigation='" + idxVal + "']"));
- }
-
- g_unreadCountAllConv += parseInt(val);
-
- // Now bind the events when we click on the phone number
- $("a[mailbox-navigation='" + idxVal + "']").on('click', function (event) {
- var phoneNumber = $(this).attr('mailbox-navigation');
- OC.Util.History.pushState('phonenumber=' + phoneNumber);
-
- // phoneNumber must exist
- if (phoneNumber != null) {
- fetchConversation(phoneNumber);
- g_unreadCountAllConv += val;
- changeSelectedConversation($(this));
- }
- event.preventDefault();
- });
- }
- });
-
- /*
- * Decrement notification step counter, but stop it a zero
- * Stop at zero permit to notify instanly the user when
- * there is new messages in all conversations
- */
-
- if (g_unreadCountNotifStep > 0) {
- g_unreadCountNotifStep--;
- }
-
- if (g_unreadCountAllConv > 0) {
- /*
- * We notify user every two minutes for all messages
- * or if unreadCount changes
- */
- if (g_unreadCountNotifStep == 0 || g_lastUnreadCountAllConv != g_unreadCountAllConv) {
- desktopNotify(g_unreadCountAllConv + " unread message(s) for all conversations");
- g_unreadCountNotifStep = 12;
- g_lastUnreadCountAllConv = g_unreadCountAllConv;
- }
- }
- }
- );
-};
-
function setMessageCountInfo(jsondata) {
if (typeof jsondata['msgCount'] != 'undefined') {
if (jsondata['msgCount'] == 1) {
@@ -252,50 +341,6 @@ function setMessageCountInfo(jsondata) {
}
}
-function fetchConversation(phoneNumber) {
- $.getJSON(OC.generateUrl('/apps/ocsms/get/conversation'),
- {
- 'phoneNumber': phoneNumber
- },
- function(jsondata, status) {
- var phoneNumberLabel = phoneNumber;
-
- if (typeof jsondata['phoneNumbers'] != 'undefined') {
- phoneNumberList = arrayUnique(jsondata['phoneNumbers']);
- phoneNumberLabel = phoneNumberList.toString();
- }
-
- var conversationBuf = formatConversation(jsondata)[1];
- conversationBuf += '';
- if (typeof jsondata['contactName'] == 'undefined' || jsondata['contactName'] == '') {
- $('#ocsms-phone-label').html(phoneNumberLabel);
- g_curContactName = phoneNumberLabel;
- $('#ocsms-phone-opt-number').html('');
- }
- else {
- $('#ocsms-phone-label').html(jsondata['contactName']);
- g_curContactName = jsondata['contactName'];
- $('#ocsms-phone-opt-number').html(phoneNumberLabel);
- }
-
- setMessageCountInfo(jsondata);
-
- if ($('#app-content-header').is(':hidden')) {
- $('#app-content-header').show();
- }
-
- if ($('#ocsms-conversation-removal').is(':hidden')) {
- $('#ocsms-conversation-removal').show();
- }
-
- $('#app-content-wrapper').html(conversationBuf);
- $('#app-content').scrollTop(1E10);
-
- g_curPhoneNumber = phoneNumber;
- }
- );
-}
-
// Return (int) msgCount, (str) htmlConversation
function formatConversation(jsondata) {
// Improve jQuery performance
@@ -367,45 +412,6 @@ function changeSelectedConversation(item) {
g_selectedConversation.html(g_selectedConversation.attr("mailbox-label"));
}
-function fetchInitialPeerList(jsondata) {
- // Use a buffer for better jQuery performance
- var peerListBuf = "";
- var bufferedContacts = [];
- var aScope = angular.element('[ng-controller="OcSmsController"]').scope();
-
- $.each(jsondata['phonelist'], function(id, val) {
- var fn, peerLabel, idxVal;
- idxVal = id.replace(/\//g,' ');
- idxVal2 = idxVal.replace('/ /g','');
- if (typeof jsondata['contacts'][id] == 'undefined') {
- fn = '';
- peerLabel = idxVal;
- }
- else {
- fn = jsondata['contacts'][id];
- peerLabel = fn;
- }
- if (!inArray(peerLabel, bufferedContacts)) {
- aScope.addContact({'label': peerLabel, 'nav': idxVal2, 'avatar': jsondata['photos'][peerLabel]});
- bufferedContacts.push(peerLabel);
- }
- });
-
- g_lastMsgDate = jsondata["lastRead"];
-}
-
-function initDesktopNotifies() {
- if (!("Notification" in window)) {
- return;
- }
-
- Notification.requestPermission(function (permission) {
- if(!('permission' in Notification)) {
- Notification.permission = permission;
- }
- });
-}
-
function desktopNotify(msg) {
if (!("Notification" in window)) {
return;
@@ -425,13 +431,6 @@ function desktopNotify(msg) {
}
}
-function fetchInitialSettings() {
- $.getJSON(OC.generateUrl('/apps/ocsms/get/country'), function(jsondata, status) {
- if (jsondata['status'] == true) {
- $('#sel_intl_phone').val(jsondata["country"]);
- }
- });
-}
(function ($, OC) {
// reset count and title
window.onfocus = function () {