Use a more accurate starting point for message send timings.

This commit is contained in:
Greyson Parrelli
2021-08-23 10:05:48 -04:00
committed by Alex Hart
parent 1e050915ef
commit b7a067e954
18 changed files with 232 additions and 120 deletions

View File

@@ -276,6 +276,7 @@ import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.MessageUtil;
import org.thoughtcrime.securesms.util.PlayStoreUtil;
import org.thoughtcrime.securesms.util.ServiceUtil;
import org.thoughtcrime.securesms.util.SignalLocalMetrics;
import org.thoughtcrime.securesms.util.SmsUtil;
import org.thoughtcrime.securesms.util.SpanUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
@@ -788,7 +789,8 @@ public class ConversationActivity extends PassphraseRequiredActivity
result.isViewOnce(),
subscriptionId,
initiating,
true).addListener(new AssertedSuccessListener<Void>() {
true,
null).addListener(new AssertedSuccessListener<Void>() {
@Override
public void onSuccess(Void result) {
AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> {
@@ -1280,7 +1282,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
new AsyncTask<OutgoingEndSessionMessage, Void, Long>() {
@Override
protected Long doInBackground(OutgoingEndSessionMessage... messages) {
return MessageSender.send(context, messages[0], threadId, false, null);
return MessageSender.send(context, messages[0], threadId, false, null, null);
}
@Override
@@ -1526,7 +1528,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
initializeIdentityRecords().addListener(new AssertedSuccessListener<Boolean>() {
@Override
public void onSuccess(Boolean result) {
sendMessage();
sendMessage(null);
}
});
}
@@ -2587,7 +2589,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds());
boolean initiating = threadId == -1;
sendMediaMessage(recipient.getId(), isSmsForced(), "", attachmentManager.buildSlideDeck(), null, contacts, Collections.emptyList(), Collections.emptyList(), expiresIn, false, subscriptionId, initiating, false);
sendMediaMessage(recipient.getId(), isSmsForced(), "", attachmentManager.buildSlideDeck(), null, contacts, Collections.emptyList(), Collections.emptyList(), expiresIn, false, subscriptionId, initiating, false, null);
}
private void selectContactInfo(ContactData contactData) {
@@ -2848,7 +2850,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
updateLinkPreviewState();
}
private void sendMessage() {
private void sendMessage(@Nullable String metricId) {
if (inputPanel.isRecordingInLockedMode()) {
inputPanel.releaseRecordingLock();
return;
@@ -2892,9 +2894,9 @@ public class ConversationActivity extends PassphraseRequiredActivity
} else if (!forceSms && (identityRecords.isUnverified(true) || identityRecords.isUntrusted(true))) {
handleRecentSafetyNumberChange();
} else if (isMediaMessage) {
sendMediaMessage(forceSms, expiresIn, false, subscriptionId, initiating);
sendMediaMessage(forceSms, expiresIn, false, subscriptionId, initiating, metricId);
} else {
sendTextMessage(forceSms, expiresIn, subscriptionId, initiating);
sendTextMessage(forceSms, expiresIn, subscriptionId, initiating, metricId);
}
} catch (RecipientFormattingException ex) {
Toast.makeText(ConversationActivity.this,
@@ -2934,7 +2936,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
}, this::sendComplete);
}
private void sendMediaMessage(final boolean forceSms, final long expiresIn, final boolean viewOnce, final int subscriptionId, final boolean initiating)
private void sendMediaMessage(final boolean forceSms, final long expiresIn, final boolean viewOnce, final int subscriptionId, final boolean initiating, @Nullable String metricId)
throws InvalidMessageException
{
Log.i(TAG, "Sending media message...");
@@ -2951,7 +2953,8 @@ public class ConversationActivity extends PassphraseRequiredActivity
viewOnce,
subscriptionId,
initiating,
true);
true,
metricId);
}
private ListenableFuture<Void> sendMediaMessage(@NonNull RecipientId recipientId,
@@ -2966,7 +2969,8 @@ public class ConversationActivity extends PassphraseRequiredActivity
final boolean viewOnce,
final int subscriptionId,
final boolean initiating,
final boolean clearComposeBox)
final boolean clearComposeBox,
final @Nullable String metricId)
{
if (!isDefaultSms && (!isSecureText || forceSms) && recipient.get().hasSmsAddress()) {
showDefaultSmsPrompt();
@@ -3013,7 +3017,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
final long id = fragment.stageOutgoingMessage(outgoingMessage);
SimpleTask.run(() -> {
return MessageSender.send(context, outgoingMessage, thread, forceSms, () -> fragment.releaseOutgoingMessage(id));
return MessageSender.send(context, outgoingMessage, thread, forceSms, metricId, () -> fragment.releaseOutgoingMessage(id));
}, result -> {
sendComplete(result);
future.set(null);
@@ -3025,7 +3029,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
return future;
}
private void sendTextMessage(final boolean forceSms, final long expiresIn, final int subscriptionId, final boolean initiating)
private void sendTextMessage(final boolean forceSms, final long expiresIn, final int subscriptionId, final boolean initiating, final @Nullable String metricId)
throws InvalidMessageException
{
if (!isDefaultSms && (!isSecureText || forceSms) && recipient.get().hasSmsAddress()) {
@@ -3054,7 +3058,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
.onAllGranted(() -> {
final long id = new SecureRandom().nextLong();
SimpleTask.run(() -> {
return MessageSender.send(context, message, thread, forceSms, () -> fragment.releaseOutgoingMessage(id));
return MessageSender.send(context, message, thread, forceSms, metricId, () -> fragment.releaseOutgoingMessage(id));
}, this::sendComplete);
silentlySetComposeText("");
@@ -3283,7 +3287,8 @@ public class ConversationActivity extends PassphraseRequiredActivity
false,
subscriptionId,
initiating,
true);
true,
null);
sendResult.addListener(new AssertedSuccessListener<Void>() {
@Override
@@ -3319,7 +3324,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
slideDeck.addSlide(stickerSlide);
sendMediaMessage(recipient.getId(), transport.isSms(), "", slideDeck, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), expiresIn, false, subscriptionId, initiating, clearCompose);
sendMediaMessage(recipient.getId(), transport.isSms(), "", slideDeck, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), expiresIn, false, subscriptionId, initiating, clearCompose, null);
}
private void silentlySetComposeText(String text) {
@@ -3455,7 +3460,9 @@ public class ConversationActivity extends PassphraseRequiredActivity
private class SendButtonListener implements OnClickListener, TextView.OnEditorActionListener {
@Override
public void onClick(View v) {
sendMessage();
String metricId = recipient.get().isGroup() ? SignalLocalMetrics.GroupMessageSend.start()
: SignalLocalMetrics.IndividualMessageSend.start();
sendMessage(metricId);
}
@Override
@@ -3940,7 +3947,8 @@ public class ConversationActivity extends PassphraseRequiredActivity
false,
subscriptionId,
initiating,
false);
false,
null);
}
private class UnverifiedDismissedListener implements UnverifiedBannerView.DismissListener {