diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 182e115713..ccced9814e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -471,11 +471,6 @@
-
-
-
-
-
diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
index 33f52d3a74..2d48567afc 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
@@ -52,7 +52,6 @@ import org.thoughtcrime.securesms.jobs.FastJobStorage;
import org.thoughtcrime.securesms.jobs.JobManagerFactories;
import org.thoughtcrime.securesms.jobs.PushContentReceiveJob;
import org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob;
-import org.thoughtcrime.securesms.jobs.RefreshUnidentifiedDeliveryAbilityJob;
import org.thoughtcrime.securesms.logging.AndroidLogger;
import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger;
import org.thoughtcrime.securesms.logging.Log;
@@ -83,7 +82,6 @@ import org.thoughtcrime.securesms.service.ExpiringMessageManager;
import org.thoughtcrime.securesms.service.IncomingMessageObserver;
import org.thoughtcrime.securesms.service.KeyCachingService;
import org.thoughtcrime.securesms.service.LocalBackupListener;
-import org.thoughtcrime.securesms.service.RotateSenderCertificateListener;
import org.thoughtcrime.securesms.service.UpdateApkRefreshListener;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.Util;
@@ -225,7 +223,6 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
initializePeriodicTasks();
initializeWebRtc();
initializePendingMessages();
- initializeUnidentifiedDeliveryAbilityRefresh();
initializeBlobProvider();
}
@@ -374,7 +371,6 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
private void initializePeriodicTasks() {
LocalBackupListener.schedule(this);
- RotateSenderCertificateListener.schedule(this);
BackgroundPollWorker.schedulePeriodic(this); // Loki
if (BuildConfig.PLAY_STORE_DISABLED) {
@@ -425,12 +421,6 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
}
}
- private void initializeUnidentifiedDeliveryAbilityRefresh() {
- if (TextSecurePreferences.isMultiDevice(this) && !TextSecurePreferences.isUnidentifiedDeliveryEnabled(this)) {
- jobManager.add(new RefreshUnidentifiedDeliveryAbilityJob());
- }
- }
-
private void initializeBlobProvider() {
AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> {
BlobProvider.getInstance().onSessionStart(this);
diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java
index d343c2a4c1..3b4f95802c 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java
@@ -227,7 +227,9 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
if (oldVersion < lokiV19_REFACTOR2) {
deleteJobRecords(db,
"RefreshAttributesJob",
- "RotateProfileKeyJob"
+ "RotateProfileKeyJob",
+ "RefreshUnidentifiedDeliveryAbilityJob",
+ "RotateCertificateJob"
);
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java b/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java
index 9f6f51044b..e4d58c761d 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java
@@ -22,10 +22,8 @@ import org.thoughtcrime.securesms.jobs.PushGroupUpdateJob;
import org.thoughtcrime.securesms.jobs.PushMediaSendJob;
import org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob;
import org.thoughtcrime.securesms.jobs.PushTextSendJob;
-import org.thoughtcrime.securesms.jobs.RefreshUnidentifiedDeliveryAbilityJob;
import org.thoughtcrime.securesms.jobs.RequestGroupInfoJob;
import org.thoughtcrime.securesms.jobs.RetrieveProfileAvatarJob;
-import org.thoughtcrime.securesms.jobs.RotateCertificateJob;
import org.thoughtcrime.securesms.jobs.SendDeliveryReceiptJob;
import org.thoughtcrime.securesms.jobs.SendReadReceiptJob;
import org.thoughtcrime.securesms.jobs.StickerDownloadJob;
@@ -59,9 +57,7 @@ import network.loki.messenger.BuildConfig;
RetrieveProfileAvatarJob.class,
SendReadReceiptJob.class,
AppProtectionPreferenceFragment.class,
- RotateCertificateJob.class,
SendDeliveryReceiptJob.class,
- RefreshUnidentifiedDeliveryAbilityJob.class,
TypingSendJob.class,
AttachmentUploadJob.class,
PushDecryptJob.class,
@@ -88,17 +84,6 @@ public class SignalCommunicationModule {
}
- @Provides
- synchronized SignalServiceAccountManager provideSignalAccountManager() {
- if (this.accountManager == null) {
- this.accountManager = new SignalServiceAccountManager(networkAccess.getConfiguration(context),
- new DynamicCredentialsProvider(context),
- BuildConfig.USER_AGENT);
- }
-
- return this.accountManager;
- }
-
@Provides
public synchronized SignalServiceMessageSender provideSignalMessageSender() {
if (this.messageSender == null) {
diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java
index 3cc50b068d..894617587f 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java
@@ -44,10 +44,8 @@ public final class JobManagerFactories {
put(PushMediaSendJob.KEY, new PushMediaSendJob.Factory());
put(PushNotificationReceiveJob.KEY, new PushNotificationReceiveJob.Factory());
put(PushTextSendJob.KEY, new PushTextSendJob.Factory());
- put(RefreshUnidentifiedDeliveryAbilityJob.KEY, new RefreshUnidentifiedDeliveryAbilityJob.Factory());
put(RequestGroupInfoJob.KEY, new RequestGroupInfoJob.Factory());
put(RetrieveProfileAvatarJob.KEY, new RetrieveProfileAvatarJob.Factory(application));
- put(RotateCertificateJob.KEY, new RotateCertificateJob.Factory());
put(SendDeliveryReceiptJob.KEY, new SendDeliveryReceiptJob.Factory());
put(SendReadReceiptJob.KEY, new SendReadReceiptJob.Factory());
put(SmsReceiveJob.KEY, new SmsReceiveJob.Factory());
diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshUnidentifiedDeliveryAbilityJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshUnidentifiedDeliveryAbilityJob.java
deleted file mode 100644
index 56376fe0e5..0000000000
--- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshUnidentifiedDeliveryAbilityJob.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.thoughtcrime.securesms.jobs;
-
-import androidx.annotation.NonNull;
-
-import org.thoughtcrime.securesms.crypto.ProfileKeyUtil;
-import org.thoughtcrime.securesms.dependencies.InjectableType;
-import org.thoughtcrime.securesms.jobmanager.Data;
-import org.thoughtcrime.securesms.jobmanager.Job;
-import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
-import org.thoughtcrime.securesms.logging.Log;
-import org.thoughtcrime.securesms.service.IncomingMessageObserver;
-import org.thoughtcrime.securesms.util.Base64;
-import org.thoughtcrime.securesms.util.TextSecurePreferences;
-import org.session.libsignal.libsignal.util.guava.Optional;
-import org.session.libsignal.service.api.SignalServiceMessagePipe;
-import org.session.libsignal.service.api.SignalServiceMessageReceiver;
-import org.session.libsignal.service.api.crypto.ProfileCipher;
-import org.session.libsignal.service.api.profiles.SignalServiceProfile;
-import org.session.libsignal.service.api.push.SignalServiceAddress;
-import org.session.libsignal.service.api.push.exceptions.PushNetworkException;
-
-import java.io.IOException;
-
-import javax.inject.Inject;
-
-public class RefreshUnidentifiedDeliveryAbilityJob extends BaseJob implements InjectableType {
-
- public static final String KEY = "RefreshUnidentifiedDeliveryAbilityJob";
-
- private static final String TAG = RefreshUnidentifiedDeliveryAbilityJob.class.getSimpleName();
-
- @Inject SignalServiceMessageReceiver receiver;
-
- public RefreshUnidentifiedDeliveryAbilityJob() {
- this(new Job.Parameters.Builder()
- .addConstraint(NetworkConstraint.KEY)
- .setMaxAttempts(10)
- .build());
- }
-
- private RefreshUnidentifiedDeliveryAbilityJob(@NonNull Job.Parameters parameters) {
- super(parameters);
- }
-
- @Override
- public @NonNull Data serialize() {
- return Data.EMPTY;
- }
-
- @Override
- public @NonNull String getFactoryKey() {
- return KEY;
- }
-
- @Override
- public void onRun() throws Exception {
- byte[] profileKey = ProfileKeyUtil.getProfileKey(context);
- SignalServiceProfile profile = retrieveProfile(TextSecurePreferences.getLocalNumber(context));
-
- boolean enabled = profile.getUnidentifiedAccess() != null && isValidVerifier(profileKey, profile.getUnidentifiedAccess());
-
- TextSecurePreferences.setIsUnidentifiedDeliveryEnabled(context, enabled);
- Log.i(TAG, "Set UD status to: " + enabled);
- }
-
- @Override
- public void onCanceled() {
- }
-
- @Override
- protected boolean onShouldRetry(@NonNull Exception exception) {
- return exception instanceof PushNetworkException;
- }
-
- private SignalServiceProfile retrieveProfile(@NonNull String number) throws IOException {
- SignalServiceMessagePipe pipe = IncomingMessageObserver.getPipe();
-
- if (pipe != null) {
- try {
- return pipe.getProfile(new SignalServiceAddress(number), Optional.absent());
- } catch (IOException e) {
- Log.w(TAG, e);
- }
- }
-
- return receiver.retrieveProfile(new SignalServiceAddress(number), Optional.absent());
- }
-
- private boolean isValidVerifier(@NonNull byte[] profileKey, @NonNull String verifier) {
- ProfileCipher profileCipher = new ProfileCipher(profileKey);
- try {
- return profileCipher.verifyUnidentifiedAccess(Base64.decode(verifier));
- } catch (IOException e) {
- Log.w(TAG, e);
- return false;
- }
- }
-
- public static class Factory implements Job.Factory {
- @Override
- public @NonNull RefreshUnidentifiedDeliveryAbilityJob create(@NonNull Parameters parameters, @NonNull Data data) {
- return new RefreshUnidentifiedDeliveryAbilityJob(parameters);
- }
- }
-}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RotateCertificateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RotateCertificateJob.java
deleted file mode 100644
index 911e87b27e..0000000000
--- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RotateCertificateJob.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.thoughtcrime.securesms.jobs;
-
-
-import android.content.Context;
-import androidx.annotation.NonNull;
-
-import org.thoughtcrime.securesms.dependencies.InjectableType;
-import org.thoughtcrime.securesms.jobmanager.Data;
-import org.thoughtcrime.securesms.jobmanager.Job;
-import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
-import org.thoughtcrime.securesms.logging.Log;
-import org.session.libsignal.service.api.SignalServiceAccountManager;
-import org.session.libsignal.service.api.push.exceptions.PushNetworkException;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Inject;
-
-@SuppressWarnings("WeakerAccess")
-public class RotateCertificateJob extends BaseJob implements InjectableType {
-
- public static final String KEY = "RotateCertificateJob";
-
- private static final String TAG = RotateCertificateJob.class.getSimpleName();
-
- @Inject SignalServiceAccountManager accountManager;
-
- public RotateCertificateJob(Context context) {
- this(new Job.Parameters.Builder()
- .setQueue("__ROTATE_SENDER_CERTIFICATE__")
- .addConstraint(NetworkConstraint.KEY)
- .setLifespan(TimeUnit.DAYS.toMillis(1))
- .setMaxAttempts(Parameters.UNLIMITED)
- .build());
- setContext(context);
- }
-
- private RotateCertificateJob(@NonNull Job.Parameters parameters) {
- super(parameters);
- }
-
- @Override
- public @NonNull Data serialize() {
- return Data.EMPTY;
- }
-
- @Override
- public @NonNull String getFactoryKey() {
- return KEY;
- }
-
- @Override
- public void onAdded() {}
-
- @Override
- public void onRun() throws IOException {
- // Loki - Do nothing
- /*
- synchronized (RotateCertificateJob.class) {
- byte[] certificate = accountManager.getSenderCertificate();
- TextSecurePreferences.setUnidentifiedAccessCertificate(context, certificate);
- }
- */
- }
-
- @Override
- public boolean onShouldRetry(@NonNull Exception e) {
- return e instanceof PushNetworkException;
- }
-
- @Override
- public void onCanceled() {
- Log.w(TAG, "Failed to rotate sender certificate!");
- }
-
- public static final class Factory implements Job.Factory {
- @Override
- public @NonNull RotateCertificateJob create(@NonNull Parameters parameters, @NonNull Data data) {
- return new RotateCertificateJob(parameters);
- }
- }
-}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/JoinPublicChatActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/JoinPublicChatActivity.kt
index c6eb0d25e7..eb03b219ea 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/JoinPublicChatActivity.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/JoinPublicChatActivity.kt
@@ -20,6 +20,7 @@ import kotlinx.coroutines.withContext
import network.loki.messenger.R
import org.thoughtcrime.securesms.BaseActionBarActivity
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
+import org.thoughtcrime.securesms.logging.Log
import org.thoughtcrime.securesms.loki.fragments.ScanQRCodeWrapperFragment
import org.thoughtcrime.securesms.loki.fragments.ScanQRCodeWrapperFragmentDelegate
import org.thoughtcrime.securesms.loki.utilities.OpenGroupUtilities
@@ -73,6 +74,7 @@ class JoinPublicChatActivity : PassphraseRequiredActionBarActivity(), ScanQRCode
try {
OpenGroupUtilities.addGroup(this@JoinPublicChatActivity, url, channel)
} catch (e: Exception) {
+ Log.e("JoinPublicChatActivity", "Fialed to join open group.", e)
withContext(Dispatchers.Main) {
hideLoader()
Toast.makeText(this@JoinPublicChatActivity, R.string.activity_join_public_chat_error, Toast.LENGTH_SHORT).show()
diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/RotateSenderCertificateListener.java b/app/src/main/java/org/thoughtcrime/securesms/service/RotateSenderCertificateListener.java
deleted file mode 100644
index d4d0c560a3..0000000000
--- a/app/src/main/java/org/thoughtcrime/securesms/service/RotateSenderCertificateListener.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.thoughtcrime.securesms.service;
-
-
-import android.content.Context;
-import android.content.Intent;
-
-import org.thoughtcrime.securesms.ApplicationContext;
-import org.thoughtcrime.securesms.jobs.RotateCertificateJob;
-import org.thoughtcrime.securesms.util.TextSecurePreferences;
-
-import java.util.concurrent.TimeUnit;
-
-public class RotateSenderCertificateListener extends PersistentAlarmManagerListener {
-
- private static final long INTERVAL = TimeUnit.DAYS.toMillis(1);
-
- @Override
- protected long getNextScheduledExecutionTime(Context context) {
- return TextSecurePreferences.getUnidentifiedAccessCertificateRotationTime(context);
- }
-
- @Override
- protected long onAlarm(Context context, long scheduledTime) {
- ApplicationContext.getInstance(context)
- .getJobManager()
- .add(new RotateCertificateJob(context));
-
- long nextTime = System.currentTimeMillis() + INTERVAL;
- TextSecurePreferences.setUnidentifiedAccessCertificateRotationTime(context, nextTime);
-
- return nextTime;
- }
-
- public static void schedule(Context context) {
- new RotateSenderCertificateListener().onReceive(context, new Intent());
- }
-
-}