package org.asamk.signal.manager.actions;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.jobs.Context;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.helper.Context;
import org.asamk.signal.manager.storage.recipients.RecipientId;
import org.signal.libsignal.metadata.ProtocolException;
-import org.whispersystems.libsignal.protocol.CiphertextMessage;
-import org.whispersystems.libsignal.protocol.DecryptionErrorMessage;
-import org.whispersystems.libsignal.util.guava.Optional;
+import org.signal.libsignal.protocol.message.CiphertextMessage;
+import org.signal.libsignal.protocol.message.DecryptionErrorMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
+import org.whispersystems.signalservice.api.push.ServiceId;
import org.whispersystems.signalservice.internal.push.SignalServiceProtos;
+import java.util.Optional;
+
public class SendRetryMessageRequestAction implements HandleAction {
private final RecipientId recipientId;
+ private final ServiceId serviceId;
private final ProtocolException protocolException;
private final SignalServiceEnvelope envelope;
+ private final ServiceId accountId;
public SendRetryMessageRequestAction(
final RecipientId recipientId,
+ final ServiceId serviceId,
final ProtocolException protocolException,
- final SignalServiceEnvelope envelope
+ final SignalServiceEnvelope envelope,
+ final ServiceId accountId
) {
this.recipientId = recipientId;
+ this.serviceId = serviceId;
this.protocolException = protocolException;
this.envelope = envelope;
+ this.accountId = accountId;
}
@Override
public void execute(Context context) throws Throwable {
- context.getAccount().getSessionStore().archiveSessions(recipientId);
+ context.getAccount().getAccountData(accountId).getSessionStore().archiveSessions(serviceId);
int senderDevice = protocolException.getSenderDevice();
Optional<GroupId> groupId = protocolException.getGroupId().isPresent() ? Optional.of(GroupId.unknownVersion(
- protocolException.getGroupId().get())) : Optional.absent();
+ protocolException.getGroupId().get())) : Optional.empty();
byte[] originalContent;
int envelopeType;
}
private static int envelopeTypeToCiphertextMessageType(int envelopeType) {
- switch (envelopeType) {
- case SignalServiceProtos.Envelope.Type.PREKEY_BUNDLE_VALUE:
- return CiphertextMessage.PREKEY_TYPE;
- case SignalServiceProtos.Envelope.Type.UNIDENTIFIED_SENDER_VALUE:
- return CiphertextMessage.SENDERKEY_TYPE;
- case SignalServiceProtos.Envelope.Type.PLAINTEXT_CONTENT_VALUE:
- return CiphertextMessage.PLAINTEXT_CONTENT_TYPE;
- case SignalServiceProtos.Envelope.Type.CIPHERTEXT_VALUE:
- default:
- return CiphertextMessage.WHISPER_TYPE;
- }
+ return switch (envelopeType) {
+ case SignalServiceProtos.Envelope.Type.PREKEY_BUNDLE_VALUE -> CiphertextMessage.PREKEY_TYPE;
+ case SignalServiceProtos.Envelope.Type.UNIDENTIFIED_SENDER_VALUE -> CiphertextMessage.SENDERKEY_TYPE;
+ case SignalServiceProtos.Envelope.Type.PLAINTEXT_CONTENT_VALUE -> CiphertextMessage.PLAINTEXT_CONTENT_TYPE;
+ default -> CiphertextMessage.WHISPER_TYPE;
+ };
}
@Override