cleanup after sending message

This commit is contained in:
B. Petersen
2018-09-23 00:06:05 +02:00
parent 9c89353098
commit 90ea23e472
2 changed files with 18 additions and 48 deletions
@@ -1438,7 +1438,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
Log.w(TAG, "isManual Selection: " + sendButton.isManualSelection());
Log.w(TAG, "forceSms: " + forceSms);
if (attachmentManager.isAttachmentPresent() || recipient.isGroupRecipient() || recipient.getAddress().isEmail() || inputPanel.getQuote().isPresent()) {
if (attachmentManager.isAttachmentPresent() || inputPanel.getQuote().isPresent()) {
sendMediaMessage(forceSms, expiresIn, subscriptionId, initiating);
} else {
sendTextMessage(forceSms, expiresIn, subscriptionId, initiating);
@@ -1512,47 +1512,10 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private void sendTextMessage(final boolean forceSms, final long expiresIn, final int subscriptionId, final boolean initiatingConversation)
throws InvalidMessageException
{
final Context context = getApplicationContext();
final String messageBody = getMessage();
OutgoingTextMessage message;
if(recipient.getAddress().isDcChat()) {
dcContext.sendTextMsg(recipient.getAddress().getDcChatId(), messageBody);
} else {
if (isSecureText && !forceSms) {
message = new OutgoingEncryptedMessage(recipient, messageBody, expiresIn);
} else {
message = new OutgoingTextMessage(recipient, messageBody, expiresIn, subscriptionId);
}
Permissions.with(this)
.request(Manifest.permission.SEND_SMS)
.ifNecessary(forceSms || !isSecureText)
.withPermanentDenialDialog(getString(R.string.ConversationActivity_signal_needs_sms_permission_in_order_to_send_an_sms))
.onAllGranted(() -> {
this.composeText.setText("");
final long id = fragment.stageOutgoingMessage(message);
new AsyncTask<OutgoingTextMessage, Void, Long>() {
@Override
protected Long doInBackground(OutgoingTextMessage... messages) {
if (initiatingConversation) {
DatabaseFactory.getRecipientDatabase(context).setProfileSharing(recipient, true);
}
return MessageSender.send(context, messages[0], threadId, forceSms, () -> fragment.releaseOutgoingMessage(id));
}
@Override
protected void onPostExecute(Long result) {
sendComplete(result);
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, message);
})
.execute();
}
dcContext.sendTextMsg(dcChat.getId(), messageBody);
composeText.setText("");
sendComplete(dcChat.getId());
}
private void updateToggleButtonState() {
@@ -120,6 +120,12 @@ public class ConversationFragment extends Fragment
super.onCreate(icicle);
this.locale = (Locale) getArguments().getSerializable(PassphraseRequiredActionBarActivity.LOCALE_EXTRA);
this.dcContext = DcHelper.getContext(getContext());
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_INCOMING_MSG);
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_MSGS_CHANGED);
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_MSG_DELIVERED);
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_MSG_FAILED);
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_MSG_READ);
}
@Override
@@ -146,12 +152,6 @@ public class ConversationFragment extends Fragment
initializeResources();
initializeListAdapter();
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_INCOMING_MSG);
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_MSGS_CHANGED);
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_MSG_DELIVERED);
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_MSG_FAILED);
dcContext.eventCenter.addObserver(this, DcContext.DC_EVENT_MSG_READ);
}
@Override
@@ -450,6 +450,11 @@ public class ConversationFragment extends Fragment
}
public void reloadList() {
ConversationAdapter adapter = getListAdapter();
if (adapter == null) {
return;
}
// just for testing, here are two variants.
final boolean loadSynchronous = true;
if (loadSynchronous) {
@@ -891,7 +896,9 @@ public class ConversationFragment extends Fragment
}
public void handleEvent(int eventId, Object data1, Object data2) {
// TODO: delivered/read events this can be optimized by just updating the single checkmark/icon
if(eventId== DcContext.DC_EVENT_MSG_DELIVERED) {
Log.w(TAG, "DC_EVENT_MSG_DELIVERED reveived for msg#"+(Long)data1);
}
reloadList();
}
}