Fix message sending to self for group call messages.

fork-5.53.8
Cody Henthorne 2022-02-04 14:23:29 -05:00 zatwierdzone przez GitHub
rodzic 007e8a9dca
commit 9f474fadf4
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
2 zmienionych plików z 25 dodań i 16 usunięć

Wyświetl plik

@ -7,6 +7,7 @@ import androidx.annotation.WorkerThread;
import com.annimon.stream.Stream;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.messages.GroupSendUtil;
@ -25,6 +26,7 @@ import org.whispersystems.signalservice.api.push.exceptions.ServerRejectedExcept
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* Send a group call update message to every one in a V2 group. Used to indicate you
@ -146,18 +148,25 @@ public class GroupCallUpdateSendJob extends BaseJob {
private @NonNull List<Recipient> deliver(@NonNull Recipient conversationRecipient, @NonNull List<Recipient> destinations)
throws IOException, UntrustedIdentityException
{
SignalServiceDataMessage.Builder dataMessage = SignalServiceDataMessage.newBuilder()
.withTimestamp(System.currentTimeMillis())
.withGroupCallUpdate(new SignalServiceDataMessage.GroupCallUpdate(eraId));
SignalServiceDataMessage.Builder dataMessageBuilder = SignalServiceDataMessage.newBuilder()
.withTimestamp(System.currentTimeMillis())
.withGroupCallUpdate(new SignalServiceDataMessage.GroupCallUpdate(eraId));
GroupUtil.setDataMessageGroupContext(context, dataMessage, conversationRecipient.requireGroupId().requirePush());
GroupUtil.setDataMessageGroupContext(context, dataMessageBuilder, conversationRecipient.requireGroupId().requirePush());
List<SendMessageResult> results = GroupSendUtil.sendUnresendableDataMessage(context,
conversationRecipient.requireGroupId().requireV2(),
destinations,
false,
ContentHint.DEFAULT,
dataMessage.build());
SignalServiceDataMessage dataMessage = dataMessageBuilder.build();
List<Recipient> nonSelfDestinations = destinations.stream().filter(r -> !r.isSelf()).collect(Collectors.toList());
boolean includesSelf = nonSelfDestinations.size() != destinations.size();
List<SendMessageResult> results = GroupSendUtil.sendUnresendableDataMessage(context,
conversationRecipient.requireGroupId().requireV2(),
nonSelfDestinations,
false,
ContentHint.DEFAULT,
dataMessage);
if (includesSelf) {
results.add(ApplicationDependencies.getSignalServiceMessageSender().sendSyncMessage(dataMessage));
}
return GroupSendJobHelper.getCompletedSends(destinations, results);
}

Wyświetl plik

@ -616,7 +616,7 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall.
}
try {
messageSender.sendCallMessage(RecipientUtil.toSignalServiceAddress(context, recipient),
UnidentifiedAccessUtil.getAccessFor(context, recipient),
recipient.isSelf() ? Optional.absent() : UnidentifiedAccessUtil.getAccessFor(context, recipient),
callMessage);
} catch (UntrustedIdentityException e) {
Log.i(TAG, "sendOpaqueCallMessage onFailure: ", e);
@ -857,11 +857,11 @@ public final class SignalCallManager implements CallManager.Observer, GroupCall.
public void updateGroupCallUpdateMessage(@NonNull RecipientId groupId, @Nullable String groupCallEraId, @NonNull Collection<UUID> joinedMembers, boolean isCallFull) {
SignalExecutors.BOUNDED.execute(() -> SignalDatabase.sms().insertOrUpdateGroupCall(groupId,
Recipient.self().getId(),
System.currentTimeMillis(),
groupCallEraId,
joinedMembers,
isCallFull));
Recipient.self().getId(),
System.currentTimeMillis(),
groupCallEraId,
joinedMembers,
isCallFull));
}
public void sendCallMessage(@NonNull final RemotePeer remotePeer,