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:
parent
1263af850b
commit
13d5e9ff26
@ -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'),
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
@ -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 (?,?) ' .
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user