mirror of
https://github.com/oxen-io/session-android.git
synced 2023-12-14 02:53:01 +01:00
42f1baaf61
We have to make some changes, and it's gotten to the point where maintaining it as a separate library is more hassle than it's worth, especially with Google releasing WorkManager as the preferred job scheduling library.
69 lines
2.4 KiB
Java
69 lines
2.4 KiB
Java
package org.thoughtcrime.securesms.jobs;
|
|
|
|
|
|
import android.content.Context;
|
|
import android.util.Log;
|
|
|
|
import org.thoughtcrime.securesms.database.Address;
|
|
import org.thoughtcrime.securesms.dependencies.InjectableType;
|
|
import org.thoughtcrime.securesms.jobmanager.JobParameters;
|
|
import org.thoughtcrime.securesms.jobmanager.requirements.NetworkRequirement;
|
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
|
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
|
|
import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException;
|
|
import org.whispersystems.signalservice.api.messages.SignalServiceReceiptMessage;
|
|
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
|
|
import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException;
|
|
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
public class SendReadReceiptJob extends ContextJob implements InjectableType {
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private static final String TAG = SendReadReceiptJob.class.getSimpleName();
|
|
|
|
@Inject transient SignalServiceMessageSender messageSender;
|
|
|
|
private final String address;
|
|
private final List<Long> messageIds;
|
|
private final long timestamp;
|
|
|
|
public SendReadReceiptJob(Context context, Address address, List<Long> messageIds) {
|
|
super(context, JobParameters.newBuilder()
|
|
.withRequirement(new NetworkRequirement(context))
|
|
.withPersistence()
|
|
.create());
|
|
|
|
this.address = address.serialize();
|
|
this.messageIds = messageIds;
|
|
this.timestamp = System.currentTimeMillis();
|
|
}
|
|
|
|
@Override
|
|
public void onAdded() {}
|
|
|
|
@Override
|
|
public void onRun() throws IOException, UntrustedIdentityException {
|
|
if (!TextSecurePreferences.isReadReceiptsEnabled(context)) return;
|
|
|
|
SignalServiceAddress remoteAddress = new SignalServiceAddress(address);
|
|
SignalServiceReceiptMessage receiptMessage = new SignalServiceReceiptMessage(SignalServiceReceiptMessage.Type.READ, messageIds, timestamp);
|
|
|
|
messageSender.sendReceipt(remoteAddress, receiptMessage);
|
|
}
|
|
|
|
@Override
|
|
public boolean onShouldRetry(Exception e) {
|
|
if (e instanceof PushNetworkException) return true;
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void onCanceled() {
|
|
Log.w(TAG, "Failed to send read receipts to: " + address);
|
|
}
|
|
}
|