mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
cleanup after sending message
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user