mirror of
https://github.com/oxen-io/session-android.git
synced 2025-10-24 02:09:35 +00:00
Support for censorship circumvention in Egypt and UAE
// FREEBIE
This commit is contained in:
@@ -4,30 +4,34 @@ import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.util.Log;
|
||||
|
||||
import org.thoughtcrime.securesms.BuildConfig;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||
import org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement;
|
||||
import org.thoughtcrime.securesms.mms.AttachmentStreamUriLoader.AttachmentModel;
|
||||
import org.thoughtcrime.securesms.push.TextSecurePushTrustStore;
|
||||
import org.thoughtcrime.securesms.util.BitmapDecodingException;
|
||||
import org.thoughtcrime.securesms.util.BitmapUtil;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.whispersystems.jobqueue.JobParameters;
|
||||
import org.whispersystems.jobqueue.requirements.NetworkRequirement;
|
||||
import org.whispersystems.libsignal.InvalidMessageException;
|
||||
import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer;
|
||||
import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException;
|
||||
import org.whispersystems.signalservice.internal.push.PushServiceSocket;
|
||||
import org.whispersystems.signalservice.internal.util.StaticCredentialsProvider;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class AvatarDownloadJob extends MasterSecretJob {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static final String TAG = AvatarDownloadJob.class.getSimpleName();
|
||||
|
||||
@Inject transient SignalServiceMessageReceiver receiver;
|
||||
|
||||
private final byte[] groupId;
|
||||
|
||||
public AvatarDownloadJob(Context context, byte[] groupId) {
|
||||
@@ -51,20 +55,28 @@ public class AvatarDownloadJob extends MasterSecretJob {
|
||||
|
||||
try {
|
||||
if (record != null) {
|
||||
long avatarId = record.getAvatarId();
|
||||
byte[] key = record.getAvatarKey();
|
||||
String relay = record.getRelay();
|
||||
long avatarId = record.getAvatarId();
|
||||
String contentType = record.getAvatarContentType();
|
||||
byte[] key = record.getAvatarKey();
|
||||
String relay = record.getRelay();
|
||||
|
||||
if (avatarId == -1 || key == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
attachment = downloadAttachment(relay, avatarId);
|
||||
Bitmap avatar = BitmapUtil.createScaledBitmap(context, new AttachmentModel(attachment, key), 500, 500);
|
||||
|
||||
|
||||
attachment = File.createTempFile("avatar", "tmp", context.getCacheDir());
|
||||
attachment.deleteOnExit();
|
||||
|
||||
SignalServiceAttachmentPointer pointer = new SignalServiceAttachmentPointer(avatarId, contentType, key, relay);
|
||||
InputStream inputStream = receiver.retrieveAttachment(pointer, attachment);
|
||||
Bitmap avatar = BitmapUtil.createScaledBitmap(context, new AttachmentModel(attachment, key), 500, 500);
|
||||
|
||||
database.updateAvatar(groupId, avatar);
|
||||
inputStream.close();
|
||||
}
|
||||
} catch (BitmapDecodingException | NonSuccessfulResponseCodeException e) {
|
||||
} catch (BitmapDecodingException | NonSuccessfulResponseCodeException | InvalidMessageException e) {
|
||||
Log.w(TAG, e);
|
||||
} finally {
|
||||
if (attachment != null)
|
||||
@@ -81,21 +93,4 @@ public class AvatarDownloadJob extends MasterSecretJob {
|
||||
return false;
|
||||
}
|
||||
|
||||
private File downloadAttachment(String relay, long contentLocation) throws IOException {
|
||||
PushServiceSocket socket = new PushServiceSocket(BuildConfig.TEXTSECURE_URL,
|
||||
new TextSecurePushTrustStore(context),
|
||||
new StaticCredentialsProvider(TextSecurePreferences.getLocalNumber(context),
|
||||
TextSecurePreferences.getPushServerPassword(context),
|
||||
null),
|
||||
BuildConfig.USER_AGENT);
|
||||
|
||||
File destination = File.createTempFile("avatar", "tmp");
|
||||
|
||||
destination.deleteOnExit();
|
||||
|
||||
socket.retrieveAttachment(relay, contentLocation, destination, null);
|
||||
|
||||
return destination;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,13 +17,15 @@ import java.io.IOException;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
||||
import static org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory;
|
||||
|
||||
public class DeliveryReceiptJob extends ContextJob implements InjectableType {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static final String TAG = DeliveryReceiptJob.class.getSimpleName();
|
||||
|
||||
@Inject transient TextSecureMessageSenderFactory messageSenderFactory;
|
||||
@Inject transient SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
private final String destination;
|
||||
private final long timestamp;
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.RecipientPreferenceDatabase;
|
||||
import org.thoughtcrime.securesms.database.RecipientPreferenceDatabase.BlockedReader;
|
||||
import org.thoughtcrime.securesms.dependencies.InjectableType;
|
||||
import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
||||
import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory;
|
||||
import org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement;
|
||||
import org.thoughtcrime.securesms.recipients.Recipients;
|
||||
import org.whispersystems.jobqueue.JobParameters;
|
||||
@@ -30,7 +30,7 @@ public class MultiDeviceBlockedUpdateJob extends MasterSecretJob implements Inje
|
||||
|
||||
private static final String TAG = MultiDeviceBlockedUpdateJob.class.getSimpleName();
|
||||
|
||||
@Inject transient TextSecureMessageSenderFactory messageSenderFactory;
|
||||
@Inject transient SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
public MultiDeviceBlockedUpdateJob(Context context) {
|
||||
super(context, JobParameters.newBuilder()
|
||||
|
||||
@@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.contacts.ContactAccessor;
|
||||
import org.thoughtcrime.securesms.contacts.ContactAccessor.ContactData;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.dependencies.InjectableType;
|
||||
import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
||||
import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory;
|
||||
import org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientFactory;
|
||||
@@ -47,7 +47,7 @@ public class MultiDeviceContactUpdateJob extends MasterSecretJob implements Inje
|
||||
|
||||
private static final String TAG = MultiDeviceContactUpdateJob.class.getSimpleName();
|
||||
|
||||
@Inject transient TextSecureMessageSenderFactory messageSenderFactory;
|
||||
@Inject transient SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
private final long recipientId;
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||
import org.thoughtcrime.securesms.dependencies.InjectableType;
|
||||
import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule;
|
||||
import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule;
|
||||
import org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement;
|
||||
import org.whispersystems.jobqueue.JobParameters;
|
||||
import org.whispersystems.jobqueue.requirements.NetworkRequirement;
|
||||
@@ -36,7 +36,7 @@ public class MultiDeviceGroupUpdateJob extends MasterSecretJob implements Inject
|
||||
private static final String TAG = MultiDeviceGroupUpdateJob.class.getSimpleName();
|
||||
|
||||
@Inject
|
||||
transient TextSecureCommunicationModule.TextSecureMessageSenderFactory messageSenderFactory;
|
||||
transient SignalCommunicationModule.SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
public MultiDeviceGroupUpdateJob(Context context) {
|
||||
super(context, JobParameters.newBuilder()
|
||||
|
||||
@@ -6,7 +6,7 @@ import android.util.Log;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.database.MessagingDatabase.SyncMessageId;
|
||||
import org.thoughtcrime.securesms.dependencies.InjectableType;
|
||||
import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule;
|
||||
import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule;
|
||||
import org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.whispersystems.jobqueue.JobParameters;
|
||||
@@ -32,7 +32,7 @@ public class MultiDeviceReadUpdateJob extends MasterSecretJob implements Injecta
|
||||
private final List<SerializableSyncMessageId> messageIds;
|
||||
|
||||
@Inject
|
||||
transient TextSecureCommunicationModule.TextSecureMessageSenderFactory messageSenderFactory;
|
||||
transient SignalCommunicationModule.SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
public MultiDeviceReadUpdateJob(Context context, List<SyncMessageId> messageIds) {
|
||||
super(context, JobParameters.newBuilder()
|
||||
|
||||
@@ -42,7 +42,7 @@ import javax.inject.Inject;
|
||||
|
||||
import ws.com.google.android.mms.MmsException;
|
||||
|
||||
import static org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
||||
import static org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory;
|
||||
|
||||
public class PushGroupSendJob extends PushSendJob implements InjectableType {
|
||||
|
||||
@@ -50,7 +50,7 @@ public class PushGroupSendJob extends PushSendJob implements InjectableType {
|
||||
|
||||
private static final String TAG = PushGroupSendJob.class.getSimpleName();
|
||||
|
||||
@Inject transient TextSecureMessageSenderFactory messageSenderFactory;
|
||||
@Inject transient SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
private final long messageId;
|
||||
private final long filterRecipientId;
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase.GroupRecord;
|
||||
import org.thoughtcrime.securesms.dependencies.InjectableType;
|
||||
import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
||||
import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory;
|
||||
import org.whispersystems.jobqueue.JobParameters;
|
||||
import org.whispersystems.jobqueue.requirements.NetworkRequirement;
|
||||
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
|
||||
@@ -32,7 +32,7 @@ public class PushGroupUpdateJob extends ContextJob implements InjectableType {
|
||||
|
||||
private static final long serialVersionUID = 0L;
|
||||
|
||||
@Inject transient TextSecureMessageSenderFactory messageSenderFactory;
|
||||
@Inject transient SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
private final String source;
|
||||
private final byte[] groupId;
|
||||
|
||||
@@ -34,7 +34,7 @@ import javax.inject.Inject;
|
||||
|
||||
import ws.com.google.android.mms.MmsException;
|
||||
|
||||
import static org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
||||
import static org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory;
|
||||
|
||||
public class PushMediaSendJob extends PushSendJob implements InjectableType {
|
||||
|
||||
@@ -42,7 +42,7 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType {
|
||||
|
||||
private static final String TAG = PushMediaSendJob.class.getSimpleName();
|
||||
|
||||
@Inject transient TextSecureMessageSenderFactory messageSenderFactory;
|
||||
@Inject transient SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
private final long messageId;
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ import java.io.IOException;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
||||
import static org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory;
|
||||
|
||||
public class PushTextSendJob extends PushSendJob implements InjectableType {
|
||||
|
||||
@@ -36,7 +36,7 @@ public class PushTextSendJob extends PushSendJob implements InjectableType {
|
||||
|
||||
private static final String TAG = PushTextSendJob.class.getSimpleName();
|
||||
|
||||
@Inject transient TextSecureMessageSenderFactory messageSenderFactory;
|
||||
@Inject transient SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
private final long messageId;
|
||||
|
||||
|
||||
@@ -4,9 +4,7 @@ import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.dependencies.InjectableType;
|
||||
import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule;
|
||||
import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
||||
import org.whispersystems.jobqueue.Job;
|
||||
import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule.SignalMessageSenderFactory;
|
||||
import org.whispersystems.jobqueue.JobParameters;
|
||||
import org.whispersystems.jobqueue.requirements.NetworkRequirement;
|
||||
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
|
||||
@@ -27,7 +25,7 @@ public class RequestGroupInfoJob extends ContextJob implements InjectableType {
|
||||
|
||||
private static final long serialVersionUID = 0L;
|
||||
|
||||
@Inject transient TextSecureMessageSenderFactory messageSenderFactory;
|
||||
@Inject transient SignalMessageSenderFactory messageSenderFactory;
|
||||
|
||||
private final String source;
|
||||
private final byte[] groupId;
|
||||
|
||||
Reference in New Issue
Block a user