mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-24 19:56:00 +00:00
Fix individual send metrics.
This commit is contained in:
committed by
Alex Hart
parent
f160e960be
commit
276e253fdf
@@ -33,6 +33,7 @@ import org.thoughtcrime.securesms.service.ExpiringMessageManager;
|
||||
import org.thoughtcrime.securesms.transport.InsecureFallbackApprovalException;
|
||||
import org.thoughtcrime.securesms.transport.RetryLaterException;
|
||||
import org.thoughtcrime.securesms.transport.UndeliverableMessageException;
|
||||
import org.thoughtcrime.securesms.util.SignalLocalMetrics;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
|
||||
import org.whispersystems.signalservice.api.SignalServiceMessageSender.IndividualSendEvents;
|
||||
@@ -140,6 +141,8 @@ public class IndividualSendJob extends PushSendJob {
|
||||
public void onPushSend()
|
||||
throws IOException, MmsException, NoSuchMessageException, UndeliverableMessageException, RetryLaterException
|
||||
{
|
||||
SignalLocalMetrics.IndividualMessageSend.onJobStarted(messageId);
|
||||
|
||||
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
|
||||
MessageTable database = SignalDatabase.messages();
|
||||
OutgoingMessage message = database.getOutgoingMessage(messageId);
|
||||
@@ -216,10 +219,19 @@ public class IndividualSendJob extends PushSendJob {
|
||||
} catch (ProofRequiredException e) {
|
||||
handleProofRequiredException(context, e, SignalDatabase.threads().getRecipientForThreadId(threadId), threadId, messageId, true);
|
||||
}
|
||||
|
||||
SignalLocalMetrics.IndividualMessageSend.onJobFinished(messageId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRetry() {
|
||||
SignalLocalMetrics.IndividualMessageSend.cancel(messageId);
|
||||
super.onRetry();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure() {
|
||||
SignalLocalMetrics.IndividualMessageSend.cancel(messageId);
|
||||
SignalDatabase.messages().markAsSentFailed(messageId);
|
||||
notifyMediaMessageDeliveryFailed(context, messageId);
|
||||
}
|
||||
@@ -312,7 +324,8 @@ public class IndividualSendJob extends PushSendJob {
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), false);
|
||||
return syncAccess.isPresent();
|
||||
} else {
|
||||
SendMessageResult result = messageSender.sendDataMessage(address, UnidentifiedAccessUtil.getAccessFor(context, messageRecipient), ContentHint.RESENDABLE, mediaMessage, IndividualSendEvents.EMPTY, message.isUrgent(), messageRecipient.needsPniSignature());
|
||||
SignalLocalMetrics.IndividualMessageSend.onDeliveryStarted(messageId);
|
||||
SendMessageResult result = messageSender.sendDataMessage(address, UnidentifiedAccessUtil.getAccessFor(context, messageRecipient), ContentHint.RESENDABLE, mediaMessage, new MetricEventListener(messageId), message.isUrgent(), messageRecipient.needsPniSignature());
|
||||
|
||||
SignalDatabase.messageLog().insertIfPossible(messageRecipient.getId(), message.getSentTimeMillis(), result, ContentHint.RESENDABLE, new MessageId(messageId), message.isUrgent());
|
||||
|
||||
@@ -370,6 +383,28 @@ public class IndividualSendJob extends PushSendJob {
|
||||
JsonJobData data = JsonJobData.deserialize(serializedData);
|
||||
return data.getLong(KEY_MESSAGE_ID);
|
||||
}
|
||||
private static class MetricEventListener implements SignalServiceMessageSender.IndividualSendEvents {
|
||||
private final long messageId;
|
||||
|
||||
private MetricEventListener(long messageId) {
|
||||
this.messageId = messageId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessageEncrypted() {
|
||||
SignalLocalMetrics.IndividualMessageSend.onMessageEncrypted(messageId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessageSent() {
|
||||
SignalLocalMetrics.IndividualMessageSend.onMessageSent(messageId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSyncMessageSent() {
|
||||
SignalLocalMetrics.IndividualMessageSend.onSyncMessageSent(messageId);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class Factory implements Job.Factory<IndividualSendJob> {
|
||||
@Override
|
||||
|
||||
@@ -812,6 +812,9 @@ public final class GroupSendUtil {
|
||||
this.messageId = messageId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessageEncrypted() {}
|
||||
|
||||
@Override
|
||||
public void onMessageSent() {
|
||||
SignalLocalMetrics.GroupMessageSend.onLegacyMessageSent(messageId);
|
||||
|
||||
@@ -232,10 +232,14 @@ public class MessageSender {
|
||||
Recipient recipient = message.getThreadRecipient();
|
||||
long messageId = database.insertMessageOutbox(applyUniversalExpireTimerIfNecessary(context, recipient, message, allocatedThreadId), allocatedThreadId, sendType != SendType.SIGNAL, insertListener);
|
||||
|
||||
if (message.getThreadRecipient().isGroup() && message.getAttachments().isEmpty() && message.getLinkPreviews().isEmpty() && message.getSharedContacts().isEmpty()) {
|
||||
SignalLocalMetrics.GroupMessageSend.onInsertedIntoDatabase(messageId, metricId);
|
||||
if (message.getThreadRecipient().isGroup()) {
|
||||
if (message.getAttachments().isEmpty() && message.getLinkPreviews().isEmpty() && message.getSharedContacts().isEmpty()) {
|
||||
SignalLocalMetrics.GroupMessageSend.onInsertedIntoDatabase(messageId, metricId);
|
||||
} else {
|
||||
SignalLocalMetrics.GroupMessageSend.cancel(messageId);
|
||||
}
|
||||
} else {
|
||||
SignalLocalMetrics.GroupMessageSend.cancel(metricId);
|
||||
SignalLocalMetrics.IndividualMessageSend.onInsertedIntoDatabase(messageId, metricId);
|
||||
}
|
||||
|
||||
sendMessageInternal(context, recipient, sendType, messageId, Collections.emptyList(), message.getScheduledDate() > 0);
|
||||
|
||||
Reference in New Issue
Block a user