1
0
mirror of https://github.com/nerzhul/ocsms.git synced 2025-06-07 07:56:23 +00:00

Fix messages/conversation removal sync with contact list and also add atomic delete for messages

This commit is contained in:
Loic Blot 2015-06-25 21:59:59 +00:00
parent 1263af850b
commit 13d5e9ff26
5 changed files with 35 additions and 14 deletions

View File

@ -19,7 +19,7 @@ $application->registerRoutes($this, array('routes' => array(
array('name' => 'sms#get_conversation', 'url' => '/get/conversation', 'verb' => 'GET'),
array('name' => 'sms#delete_conversation', 'url' => '/delete/conversation', 'verb' => 'POST'),
array('name' => 'sms#check_new_messages', 'url' => '/get/new_messages', 'verb' => 'GET'),
array('name' => 'sms#delete_message', 'url' => '/delete/message', 'verb' => 'GET'),
array('name' => 'sms#delete_message', 'url' => '/delete/message', 'verb' => 'POST'),
array('name' => 'sms#set_country', 'url'=> '/set/country', 'verb' => 'POST'),
array('name' => 'sms#get_country', 'url'=> '/get/country', 'verb' => 'GET'),

View File

@ -16,6 +16,7 @@ use \OCP\IRequest;
use \OCP\AppFramework\Http\TemplateResponse;
use \OCP\AppFramework\Controller;
use \OCP\AppFramework\Http\JSONResponse;
use \OCP\AppFramework\Http;
use \OCA\OcSms\AppInfo\OcSmsApp;
@ -217,6 +218,10 @@ class SmsController extends Controller {
* @NoCSRFRequired
*/
public function deleteMessage ($messageId, $phoneNumber) {
if (!preg_match('#^[0-9]+$#',$messageId)) {
return new JSONResponse(array(), Http::STATUS_BAD_REQUEST);
}
$this->smsMapper->removeMessage($this->userId, $phoneNumber, $messageId);
return new JSONResponse(array());
}

View File

@ -181,6 +181,18 @@ class SmsMapper extends Mapper {
\OCP\DB::commit();
}
/*
* WARN: messageId is sms_date here
*/
public function removeMessage ($userId, $phoneNumber, $messageId) {
\OCP\DB::beginTransaction();
$query = \OCP\DB::prepare('DELETE FROM ' .
'*PREFIX*ocsms_smsdatas WHERE user_id = ? AND sms_address = ? ' .
'AND sms_date = ?');
$query->execute(array($userId, $phoneNumber, $messageId));
\OCP\DB::commit();
}
public function getLastMessageTimestampForAllPhonesNumbers ($userId, $order = true) {
$sql = 'SELECT sms_address,MAX(sms_date) as mx FROM ' .
'*PREFIX*ocsms_smsdatas WHERE user_id = ? AND sms_mailbox IN (?,?) ' .

View File

@ -54,10 +54,8 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
}
};
$scope.fetchConversation = function (phoneNumber) {
$.getJSON(OC.generateUrl('/apps/ocsms/get/conversation'),
{
'phoneNumber': phoneNumber
},
$scope.messages = [];
$.getJSON(OC.generateUrl('/apps/ocsms/get/conversation'), {'phoneNumber': phoneNumber},
function(jsondata, status) {
var phoneNumberLabel = phoneNumber;
@ -67,7 +65,6 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
}
// Reinit messages before showing conversation
$scope.messages = [];
$scope.formatConversation(jsondata);
if (typeof jsondata['contactName'] == 'undefined' || jsondata['contactName'] == '') {
@ -204,10 +201,12 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
$('#ocsms-phone-label').html('');
$('#ocsms-phone-opt-number').html('');
$('#ocsms-phone-msg-nb').html('');
$('#app-content-wrapper').html('<div id="ocsms-empty-conversation">Please choose a conversation on the left menu</div>');
$('#ocsms-conversation-removal').hide();
$('#app-content-header').hide();
$("li[peer-label='" + g_curContactName + "']").remove();
$scope.removeContact({'nav': g_curPhoneNumber});
$scope.$apply(function () {
$scope.messages = [];
});
g_curPhoneNumber = null;
});
};
@ -230,7 +229,9 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
for (var i=0; i < len; i++) {
var curCt = $scope.contacts[i];
if (curCt['nav'] == ct['nav']) {
$scope.$apply(function () {
$scope.contacts.splice(i, 1);
});
return;
}
}
@ -244,13 +245,16 @@ app.controller('OcSmsController', ['$scope', '$interval', '$timeout', '$compile'
$scope.messages.push(msg);
});
}
$scope.removeConversationMessage = function (msg) {
alert('test');
$scope.removeConversationMessage = function (msgId) {
var len = $scope.messages.length;
for (var i=0; i < len; i++) {
var curMsg = $scope.messages[i];
if (curMsg['id'] == msg['id']) {
if (curMsg['id'] == msgId) {
$.post(OC.generateUrl('/apps/ocsms/delete/message'), {"messageId": msgId, "phoneNumber": g_curContactName}, function(data) {
$scope.$apply(function () {
$scope.messages.splice(i, 1);
});
});
return;
}
}

View File

@ -41,7 +41,7 @@ use \OCA\OcSms\Lib\CountryCodes;
<div ng-repeat="message in messages">
<div class="msg-{{ message.type }}">
<div>{{ message.content }}</div>
<div style="display: block;" id="ocsms-message-removal" class="icon-delete svn delete action" ng-click="removeConversationMessage({{ message.id }});"></div>
<div style="display: block;" id="ocsms-message-removal" class="icon-delete svn delete action" ng-click="removeConversationMessage(message.id);"></div>
<div class="msg-date">{{ message.date }}</div>
</div>
<div class="msg-spacer"></div>