kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix message sending to self for group call messages.
rodzic
007e8a9dca
commit
9f474fadf4
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
Ładowanie…
Reference in New Issue