implement messages deletion

This commit is contained in:
B. Petersen
2018-09-23 16:33:10 +02:00
parent aac3d0d904
commit 0da4fa1530
3 changed files with 17 additions and 27 deletions
+4
View File
@@ -179,6 +179,10 @@
<item quantity="one">This will permanently delete the selected message.</item>
<item quantity="other">This will permanently delete all %1$d selected messages.</item>
</plurals>
<plurals name="ConversationFragment_this_will_delete_n_selected_messages_here_and_on_server">
<item quantity="one">This will permanently delete the selected message here and on the server.</item>
<item quantity="other">This will permanently delete all %1$d selected messages here and one the server.</item>
</plurals>
<string name="ConversationFragment_save_to_sd_card">Save to storage?</string>
<plurals name="ConversationFragment_saving_n_media_to_storage_warning">
<item quantity="one">Saving this media to storage will allow any other apps on your device to access it.\n\nContinue?</item>
+10
View File
@@ -33,6 +33,7 @@ import org.thoughtcrime.securesms.recipients.RecipientProvider;
import java.util.Collections;
import java.util.List;
import java.util.Set;
public class DcMsg {
@@ -114,6 +115,15 @@ public class DcMsg {
public native void setMediainfo (String author, String trackname);
// aliases and higher-level tools
public static int[] msgSetToIds(final Set<DcMsg> dcMsgs) {
int cnt = dcMsgs==null? 0 : dcMsgs.size();
int[] ids = new int[cnt];
int i = 0;
for (DcMsg dcMsg : dcMsgs) {
ids[i++] = dcMsg.getId();
}
return ids;
}
public boolean isOutgoing() {
return getFromId() == DcContact.DC_CONTACT_ID_SELF;
@@ -347,38 +347,14 @@ public class ConversationFragment extends Fragment
builder.setIconAttribute(R.attr.dialog_alert_icon);
builder.setTitle(getActivity().getResources().getQuantityString(R.plurals.ConversationFragment_delete_selected_messages, messagesCount, messagesCount));
builder.setMessage(getActivity().getResources().getQuantityString(R.plurals.ConversationFragment_this_will_permanently_delete_all_n_selected_messages, messagesCount, messagesCount));
builder.setMessage(getActivity().getResources().getQuantityString(R.plurals.ConversationFragment_this_will_delete_n_selected_messages_here_and_on_server, messagesCount, messagesCount));
builder.setCancelable(true);
builder.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/* TODO: delete messages
new ProgressDialogAsyncTask<MessageRecord, Void, Void>(getActivity(),
R.string.ConversationFragment_deleting,
R.string.ConversationFragment_deleting_messages)
{
@Override
protected Void doInBackground(MessageRecord... messageRecords) {
for (MessageRecord messageRecord : messageRecords) {
boolean threadDeleted;
if (messageRecord.isMms()) {
threadDeleted = DatabaseFactory.getMmsDatabase(getActivity()).delete(messageRecord.getId());
} else {
threadDeleted = DatabaseFactory.getSmsDatabase(getActivity()).deleteMessage(messageRecord.getId());
}
if (threadDeleted) {
threadId = -1;
listener.setThreadId(threadId);
}
}
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, messageRecords.toArray(new MessageRecord[messageRecords.size()]));
*/
int[] ids = DcMsg.msgSetToIds(messageRecords);
dcContext.deleteMsgs(ids);
}
});