diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 14b9994a9..8dcb69980 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -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() { - @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() { diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index 4c0148cf8..52d82f5d5 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -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(); } }