diff --git a/src/org/thoughtcrime/securesms/ApplicationContext.java b/src/org/thoughtcrime/securesms/ApplicationContext.java index 4e7adf8e95..b6fec54638 100644 --- a/src/org/thoughtcrime/securesms/ApplicationContext.java +++ b/src/org/thoughtcrime/securesms/ApplicationContext.java @@ -99,7 +99,6 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi private ViewOnceMessageManager viewOnceMessageManager; private TypingStatusRepository typingStatusRepository; private TypingStatusSender typingStatusSender; - private JobManager jobManager; private IncomingMessageObserver incomingMessageObserver; private PersistentLogger persistentLogger; @@ -118,7 +117,6 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi initializeCrashHandling(); initializeFirstEverAppLaunch(); initializeAppDependencies(); - initializeJobManager(); initializeApplicationMigrations(); initializeMessageRetrieval(); initializeExpiringMessageManager(); @@ -141,7 +139,7 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); } - jobManager.beginJobLoop(); + ApplicationDependencies.getJobManager().beginJobLoop(); } @Override @@ -160,10 +158,6 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi MessageNotifier.setVisibleThread(-1); } - public JobManager getJobManager() { - return jobManager; - } - public ExpiringMessageManager getExpiringMessageManager() { return expiringMessageManager; } @@ -224,19 +218,8 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionLogger(originalHandler)); } - private void initializeJobManager() { - this.jobManager = new JobManager(this, new JobManager.Configuration.Builder() - .setDataSerializer(new JsonDataSerializer()) - .setJobFactories(JobManagerFactories.getJobFactories(this)) - .setConstraintFactories(JobManagerFactories.getConstraintFactories(this)) - .setConstraintObservers(JobManagerFactories.getConstraintObservers(this)) - .setJobStorage(new FastJobStorage(DatabaseFactory.getJobDatabase(this))) - .setJobMigrator(new JobMigrator(TextSecurePreferences.getJobManagerVersion(this), JobManager.CURRENT_VERSION, JobManagerFactories.getJobMigrations(this))) - .build()); - } - private void initializeApplicationMigrations() { - ApplicationMigrations.onApplicationCreate(this, jobManager); + ApplicationMigrations.onApplicationCreate(this, ApplicationDependencies.getJobManager()); } public void initializeMessageRetrieval() { @@ -266,14 +249,14 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi long nextSetTime = TextSecurePreferences.getFcmTokenLastSetTime(this) + TimeUnit.HOURS.toMillis(6); if (TextSecurePreferences.getFcmToken(this) == null || nextSetTime <= System.currentTimeMillis()) { - this.jobManager.add(new FcmRefreshJob()); + ApplicationDependencies.getJobManager().add(new FcmRefreshJob()); } } } private void initializeSignedPreKeyCheck() { if (!TextSecurePreferences.isSignedPreKeyRegistered(this)) { - jobManager.add(new CreateSignedPreKeyJob(this)); + ApplicationDependencies.getJobManager().add(new CreateSignedPreKeyJob(this)); } } @@ -360,7 +343,7 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi private void executePendingContactSync() { if (TextSecurePreferences.needsFullContactSync(this)) { - ApplicationContext.getInstance(this).getJobManager().add(new MultiDeviceContactUpdateJob(true)); + ApplicationDependencies.getJobManager().add(new MultiDeviceContactUpdateJob(true)); } } @@ -370,7 +353,7 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi if (Build.VERSION.SDK_INT >= 26) { FcmJobService.schedule(this); } else { - ApplicationContext.getInstance(this).getJobManager().add(new PushNotificationReceiveJob(this)); + ApplicationDependencies.getJobManager().add(new PushNotificationReceiveJob(this)); } TextSecurePreferences.setNeedsMessagePull(this, false); } @@ -378,7 +361,7 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi private void initializeUnidentifiedDeliveryAbilityRefresh() { if (TextSecurePreferences.isMultiDevice(this) && !TextSecurePreferences.isUnidentifiedDeliveryEnabled(this)) { - jobManager.add(new RefreshUnidentifiedDeliveryAbilityJob()); + ApplicationDependencies.getJobManager().add(new RefreshUnidentifiedDeliveryAbilityJob()); } } diff --git a/src/org/thoughtcrime/securesms/ConfirmIdentityDialog.java b/src/org/thoughtcrime/securesms/ConfirmIdentityDialog.java index 03a229a5e6..f3a0f12d4a 100644 --- a/src/org/thoughtcrime/securesms/ConfirmIdentityDialog.java +++ b/src/org/thoughtcrime/securesms/ConfirmIdentityDialog.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.database.PushDatabase; import org.thoughtcrime.securesms.database.SmsDatabase; import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch; import org.thoughtcrime.securesms.database.model.MessageRecord; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.PushDecryptJob; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; @@ -175,9 +176,7 @@ public class ConfirmIdentityDialog extends AlertDialog { long pushId = pushDatabase.insert(envelope); - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new PushDecryptJob(getContext(), pushId, messageRecord.getId())); + ApplicationDependencies.getJobManager().add(new PushDecryptJob(getContext(), pushId, messageRecord.getId())); } catch (IOException e) { throw new AssertionError(e); } diff --git a/src/org/thoughtcrime/securesms/ConversationListFragment.java b/src/org/thoughtcrime/securesms/ConversationListFragment.java index 69f3a87685..626c32a896 100644 --- a/src/org/thoughtcrime/securesms/ConversationListFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationListFragment.java @@ -76,6 +76,7 @@ import org.thoughtcrime.securesms.components.reminder.UnauthorizedReminder; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo; import org.thoughtcrime.securesms.database.loaders.ConversationListLoader; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.events.ReminderUpdateEvent; import org.thoughtcrime.securesms.jobs.ServiceOutageDetectionJob; import org.thoughtcrime.securesms.mediasend.MediaSendActivity; @@ -224,7 +225,7 @@ public class ConversationListFragment extends Fragment } else if (ExpiredBuildReminder.isEligible()) { return Optional.of(new ExpiredBuildReminder(context)); } else if (ServiceOutageReminder.isEligible(context)) { - ApplicationContext.getInstance(context).getJobManager().add(new ServiceOutageDetectionJob()); + ApplicationDependencies.getJobManager().add(new ServiceOutageDetectionJob()); return Optional.of(new ServiceOutageReminder(context)); } else if (OutdatedBuildReminder.isEligible()) { return Optional.of(new OutdatedBuildReminder(context)); diff --git a/src/org/thoughtcrime/securesms/CreateProfileActivity.java b/src/org/thoughtcrime/securesms/CreateProfileActivity.java index e5102529f7..2ad9d0c92a 100644 --- a/src/org/thoughtcrime/securesms/CreateProfileActivity.java +++ b/src/org/thoughtcrime/securesms/CreateProfileActivity.java @@ -381,7 +381,7 @@ public class CreateProfileActivity extends BaseActionBarActivity { return false; } - ApplicationContext.getInstance(context).getJobManager().add(new MultiDeviceProfileKeyUpdateJob()); + ApplicationDependencies.getJobManager().add(new MultiDeviceProfileKeyUpdateJob()); return true; } diff --git a/src/org/thoughtcrime/securesms/DeviceListFragment.java b/src/org/thoughtcrime/securesms/DeviceListFragment.java index 7d87f791fc..f3638b7bef 100644 --- a/src/org/thoughtcrime/securesms/DeviceListFragment.java +++ b/src/org/thoughtcrime/securesms/DeviceListFragment.java @@ -171,10 +171,7 @@ public class DeviceListFragment extends ListFragment protected Void doInBackground(Void... params) { try { accountManager.removeDevice(deviceId); - - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new RefreshUnidentifiedDeliveryAbilityJob()); + ApplicationDependencies.getJobManager().add(new RefreshUnidentifiedDeliveryAbilityJob()); } catch (IOException e) { Log.w(TAG, e); Toast.makeText(getActivity(), R.string.DeviceListActivity_network_failed, Toast.LENGTH_LONG).show(); diff --git a/src/org/thoughtcrime/securesms/IncomingMessageProcessor.java b/src/org/thoughtcrime/securesms/IncomingMessageProcessor.java index 24c0459841..22b36d790b 100644 --- a/src/org/thoughtcrime/securesms/IncomingMessageProcessor.java +++ b/src/org/thoughtcrime/securesms/IncomingMessageProcessor.java @@ -10,6 +10,7 @@ import org.thoughtcrime.securesms.database.MessagingDatabase.SyncMessageId; import org.thoughtcrime.securesms.database.MmsSmsDatabase; import org.thoughtcrime.securesms.database.PushDatabase; import org.thoughtcrime.securesms.database.RecipientDatabase; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob; import org.thoughtcrime.securesms.jobs.PushDecryptJob; @@ -70,7 +71,7 @@ public class IncomingMessageProcessor { this.recipientDatabase = DatabaseFactory.getRecipientDatabase(context); this.pushDatabase = DatabaseFactory.getPushDatabase(context); this.mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context); - this.jobManager = ApplicationContext.getInstance(context).getJobManager(); + this.jobManager = ApplicationDependencies.getJobManager(); } public void processEnvelope(@NonNull SignalServiceEnvelope envelope) { diff --git a/src/org/thoughtcrime/securesms/LinkPreviewsIntroFragment.java b/src/org/thoughtcrime/securesms/LinkPreviewsIntroFragment.java index d5b8aab83b..3ebb914b65 100644 --- a/src/org/thoughtcrime/securesms/LinkPreviewsIntroFragment.java +++ b/src/org/thoughtcrime/securesms/LinkPreviewsIntroFragment.java @@ -9,6 +9,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -46,12 +47,10 @@ public class LinkPreviewsIntroFragment extends Fragment { View view = inflater.inflate(R.layout.experience_upgrade_link_previews_fragment, container, false); view.findViewById(R.id.experience_ok_button).setOnClickListener(v -> { - ApplicationContext.getInstance(requireContext()) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), - TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), - TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(requireContext()), - TextSecurePreferences.isLinkPreviewsEnabled(requireContext()))); + ApplicationDependencies.getJobManager().add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), + TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), + TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(requireContext()), + TextSecurePreferences.isLinkPreviewsEnabled(requireContext()))); controller.onLinkPreviewsFinished(); }); diff --git a/src/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java b/src/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java index 60c989fb7e..d62f4d35fe 100644 --- a/src/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java +++ b/src/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java @@ -9,6 +9,8 @@ import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; + +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.crypto.MasterSecretUtil; @@ -63,7 +65,7 @@ public abstract class PassphraseRequiredActionBarActivity extends BaseActionBarA super.onResume(); if (networkAccess.isCensored(this)) { - ApplicationContext.getInstance(this).getJobManager().add(new PushNotificationReceiveJob(this)); + ApplicationDependencies.getJobManager().add(new PushNotificationReceiveJob(this)); } } diff --git a/src/org/thoughtcrime/securesms/ReadReceiptsIntroFragment.java b/src/org/thoughtcrime/securesms/ReadReceiptsIntroFragment.java index b42a64b32b..3c1daa232e 100644 --- a/src/org/thoughtcrime/securesms/ReadReceiptsIntroFragment.java +++ b/src/org/thoughtcrime/securesms/ReadReceiptsIntroFragment.java @@ -9,6 +9,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.ViewUtil; @@ -37,12 +38,11 @@ public class ReadReceiptsIntroFragment extends Fragment { preference.setChecked(TextSecurePreferences.isReadReceiptsEnabled(getContext())); preference.setOnCheckedChangeListener((buttonView, isChecked) -> { TextSecurePreferences.setReadReceiptsEnabled(getContext(), isChecked); - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(isChecked, - TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), - TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()), - TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); + ApplicationDependencies.getJobManager() + .add(new MultiDeviceConfigurationUpdateJob(isChecked, + TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), + TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()), + TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); }); return v; diff --git a/src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java b/src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java index cb0e4d423e..2bbe7dcc96 100644 --- a/src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java +++ b/src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java @@ -36,6 +36,7 @@ import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto; import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto; import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto; import org.thoughtcrime.securesms.database.GroupDatabase; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.RotateProfileKeyJob; import org.thoughtcrime.securesms.logging.Log; import android.util.Pair; @@ -602,9 +603,7 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi DatabaseFactory.getRecipientDatabase(context).setColor(recipient.getId(), selectedColor); if (recipient.get().resolve().getRegistered() == RecipientDatabase.RegisteredState.REGISTERED) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceContactUpdateJob(recipient.getId())); + ApplicationDependencies.getJobManager().add(new MultiDeviceContactUpdateJob(recipient.getId())); } return null; } @@ -753,14 +752,11 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi } if (blocked && (recipient.resolve().isSystemContact() || recipient.resolve().isProfileSharing())) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RotateProfileKeyJob()); + ApplicationDependencies.getJobManager().add(new RotateProfileKeyJob()); } - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceBlockedUpdateJob()); + ApplicationDependencies.getJobManager().add(new MultiDeviceBlockedUpdateJob()); + return null; } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); diff --git a/src/org/thoughtcrime/securesms/RegistrationActivity.java b/src/org/thoughtcrime/securesms/RegistrationActivity.java index e546049663..ffa9eebceb 100644 --- a/src/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/org/thoughtcrime/securesms/RegistrationActivity.java @@ -64,6 +64,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.IdentityDatabase; import org.thoughtcrime.securesms.database.NoExternalStorageException; import org.thoughtcrime.securesms.database.RecipientDatabase; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.gcm.FcmUtil; import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob; import org.thoughtcrime.securesms.jobs.RotateCertificateJob; @@ -753,8 +754,8 @@ public class RegistrationActivity extends BaseActionBarActivity implements Verif } private void handleSuccessfulRegistration() { - ApplicationContext.getInstance(RegistrationActivity.this).getJobManager().add(new DirectoryRefreshJob(false)); - ApplicationContext.getInstance(RegistrationActivity.this).getJobManager().add(new RotateCertificateJob(RegistrationActivity.this)); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); + ApplicationDependencies.getJobManager().add(new RotateCertificateJob(RegistrationActivity.this)); DirectoryRefreshListener.schedule(RegistrationActivity.this); RotateSignedPreKeyListener.schedule(RegistrationActivity.this); diff --git a/src/org/thoughtcrime/securesms/TypingIndicatorIntroFragment.java b/src/org/thoughtcrime/securesms/TypingIndicatorIntroFragment.java index e941183a55..f04ae2372f 100644 --- a/src/org/thoughtcrime/securesms/TypingIndicatorIntroFragment.java +++ b/src/org/thoughtcrime/securesms/TypingIndicatorIntroFragment.java @@ -10,6 +10,7 @@ import android.view.View; import android.view.ViewGroup; import org.thoughtcrime.securesms.components.TypingIndicatorView; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -58,12 +59,10 @@ public class TypingIndicatorIntroFragment extends Fragment { private void onButtonClicked(boolean typingEnabled) { TextSecurePreferences.setTypingIndicatorsEnabled(getContext(), typingEnabled); - ApplicationContext.getInstance(requireContext()) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), - typingEnabled, - TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()), - TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); + ApplicationDependencies.getJobManager().add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), + typingEnabled, + TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()), + TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); controller.onTypingIndicatorsFinished(); } diff --git a/src/org/thoughtcrime/securesms/VerifyIdentityActivity.java b/src/org/thoughtcrime/securesms/VerifyIdentityActivity.java index 02ce4fc9c6..1cc0fe8214 100644 --- a/src/org/thoughtcrime/securesms/VerifyIdentityActivity.java +++ b/src/org/thoughtcrime/securesms/VerifyIdentityActivity.java @@ -42,6 +42,8 @@ import androidx.appcompat.widget.SwitchCompat; import android.text.Html; import android.text.TextUtils; import android.text.method.LinkMovementMethod; + +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; @@ -583,12 +585,11 @@ public class VerifyIdentityActivity extends PassphraseRequiredActionBarActivity VerifiedStatus.DEFAULT); } - ApplicationContext.getInstance(getActivity()) - .getJobManager() - .add(new MultiDeviceVerifiedUpdateJob(recipient.getId(), - remoteIdentity, - isChecked ? VerifiedStatus.VERIFIED : - VerifiedStatus.DEFAULT)); + ApplicationDependencies.getJobManager() + .add(new MultiDeviceVerifiedUpdateJob(recipient.getId(), + remoteIdentity, + isChecked ? VerifiedStatus.VERIFIED : + VerifiedStatus.DEFAULT)); IdentityUtil.markIdentityVerified(getActivity(), recipient.get(), isChecked, false); } diff --git a/src/org/thoughtcrime/securesms/components/TypingStatusSender.java b/src/org/thoughtcrime/securesms/components/TypingStatusSender.java index b9f30f520b..df48168ba5 100644 --- a/src/org/thoughtcrime/securesms/components/TypingStatusSender.java +++ b/src/org/thoughtcrime/securesms/components/TypingStatusSender.java @@ -5,6 +5,7 @@ import android.content.Context; import androidx.annotation.NonNull; import org.thoughtcrime.securesms.ApplicationContext; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.TypingSendJob; import org.thoughtcrime.securesms.util.Util; @@ -74,7 +75,7 @@ public class TypingStatusSender { } private void sendTyping(long threadId, boolean typingStarted) { - ApplicationContext.getInstance(context).getJobManager().add(new TypingSendJob(threadId, typingStarted)); + ApplicationDependencies.getJobManager().add(new TypingSendJob(threadId, typingStarted)); } private class StartRunnable implements Runnable { diff --git a/src/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java b/src/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java index 352e69a6da..d8c798e578 100644 --- a/src/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java +++ b/src/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java @@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.RecipientDatabase; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob; import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.mms.GlideRequests; @@ -248,9 +249,7 @@ public class SharedContactDetailsActivity extends PassphraseRequiredActionBarAct super.onActivityResult(requestCode, resultCode, data); if (requestCode == CODE_ADD_EDIT_CONTACT && contact != null) { - ApplicationContext.getInstance(getApplicationContext()) - .getJobManager() - .add(new DirectoryRefreshJob(false)); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } } } diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 5ad7fbea49..64a2c0aa45 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -149,6 +149,7 @@ import org.thoughtcrime.securesms.database.identity.IdentityRecordList; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.MmsMessageRecord; import org.thoughtcrime.securesms.database.model.StickerRecord; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.events.ReminderUpdateEvent; import org.thoughtcrime.securesms.giph.ui.GiphyActivity; import org.thoughtcrime.securesms.jobs.MultiDeviceBlockedUpdateJob; @@ -911,11 +912,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity @Override protected Void doInBackground(Void... params) { DatabaseFactory.getRecipientDatabase(ConversationActivity.this) - .setBlocked(recipient.getId(), false); - - ApplicationContext.getInstance(ConversationActivity.this) - .getJobManager() - .add(new MultiDeviceBlockedUpdateJob()); + .setBlocked(recipient.getId(), false); + ApplicationDependencies.getJobManager().add(new MultiDeviceBlockedUpdateJob()); return null; } @@ -1440,7 +1438,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } else if (ExpiredBuildReminder.isEligible()) { reminderView.get().showReminder(new ExpiredBuildReminder(this)); } else if (ServiceOutageReminder.isEligible(this)) { - ApplicationContext.getInstance(this).getJobManager().add(new ServiceOutageDetectionJob()); + ApplicationDependencies.getJobManager().add(new ServiceOutageDetectionJob()); reminderView.get().showReminder(new ServiceOutageReminder(this)); } else if (TextSecurePreferences.isPushRegistered(this) && TextSecurePreferences.isShowInviteReminders(this) && @@ -1738,9 +1736,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity return; } - ApplicationContext.getInstance(this) - .getJobManager() - .add(new RetrieveProfileJob(recipient.get())); + ApplicationDependencies.getJobManager().add(new RetrieveProfileJob(recipient.get())); } private void onRecipientChanged(@NonNull Recipient recipient) { diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 998e8ce3c3..bdcada5841 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -78,6 +78,7 @@ import org.thoughtcrime.securesms.database.loaders.ConversationLoader; import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.MmsMessageRecord; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob; import org.thoughtcrime.securesms.jobs.MultiDeviceViewOnceOpenJob; import org.thoughtcrime.securesms.linkpreview.LinkPreview; @@ -1026,9 +1027,7 @@ public class ConversationFragment extends Fragment .getViewOnceMessageManager() .scheduleIfNecessary(); - ApplicationContext.getInstance(requireContext()) - .getJobManager() - .add(new MultiDeviceViewOnceOpenJob(new MessagingDatabase.SyncMessageId(messageRecord.getIndividualRecipient().getId(), messageRecord.getDateSent()))); + ApplicationDependencies.getJobManager().add(new MultiDeviceViewOnceOpenJob(new MessagingDatabase.SyncMessageId(messageRecord.getIndividualRecipient().getId(), messageRecord.getDateSent()))); return tempUri; } catch (IOException e) { @@ -1094,9 +1093,7 @@ public class ConversationFragment extends Fragment super.onActivityResult(requestCode, resultCode, data); if (requestCode == CODE_ADD_EDIT_CONTACT && getContext() != null) { - ApplicationContext.getInstance(getContext().getApplicationContext()) - .getJobManager() - .add(new DirectoryRefreshJob(false)); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } } diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationItem.java b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java index 15cad89132..5d3fcf2a30 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -69,6 +69,7 @@ import org.thoughtcrime.securesms.components.DocumentView; import org.thoughtcrime.securesms.components.LinkPreviewView; import org.thoughtcrime.securesms.components.Outliner; import org.thoughtcrime.securesms.components.QuoteView; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.recipients.LiveRecipient; import org.thoughtcrime.securesms.recipients.RecipientForeverObserver; import org.thoughtcrime.securesms.revealable.ViewOnceMessageView; @@ -1218,18 +1219,16 @@ public class ConversationItem extends LinearLayout implements BindableConversati Log.i(TAG, "onClick() for attachment download"); if (messageRecord.isMmsNotification()) { Log.i(TAG, "Scheduling MMS attachment download"); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MmsDownloadJob(messageRecord.getId(), - messageRecord.getThreadId(), false)); + ApplicationDependencies.getJobManager().add(new MmsDownloadJob(messageRecord.getId(), + messageRecord.getThreadId(), + false)); } else { Log.i(TAG, "Scheduling push attachment downloads for " + slides.size() + " items"); for (Slide slide : slides) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new AttachmentDownloadJob(messageRecord.getId(), - ((DatabaseAttachment)slide.asAttachment()).getAttachmentId(), true)); + ApplicationDependencies.getJobManager().add(new AttachmentDownloadJob(messageRecord.getId(), + ((DatabaseAttachment)slide.asAttachment()).getAttachmentId(), + true)); } } } @@ -1359,7 +1358,7 @@ public class ConversationItem extends LinearLayout implements BindableConversati database.markAsForcedSms(messageRecord.getId()); MmsSendJob.enqueue(context, - ApplicationContext.getInstance(context).getJobManager(), + ApplicationDependencies.getJobManager(), messageRecord.getId()); } else { SmsDatabase database = DatabaseFactory.getSmsDatabase(context); @@ -1367,10 +1366,9 @@ public class ConversationItem extends LinearLayout implements BindableConversati database.markAsOutbox(messageRecord.getId()); database.markAsForcedSms(messageRecord.getId()); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new SmsSendJob(context, messageRecord.getId(), - messageRecord.getIndividualRecipient())); + ApplicationDependencies.getJobManager().add(new SmsSendJob(context, + messageRecord.getId(), + messageRecord.getIndividualRecipient())); } }); diff --git a/src/org/thoughtcrime/securesms/database/MmsDatabase.java b/src/org/thoughtcrime/securesms/database/MmsDatabase.java index 66f0a2e99b..469cf43347 100644 --- a/src/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -50,6 +50,7 @@ import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.NotificationMmsMessageRecord; import org.thoughtcrime.securesms.database.model.Quote; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.TrimThreadJob; import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.logging.Log; @@ -864,7 +865,7 @@ public class MmsDatabase extends MessagingDatabase { } notifyConversationListeners(threadId); - ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(threadId)); + ApplicationDependencies.getJobManager().add(new TrimThreadJob(threadId)); return Optional.of(new InsertResult(messageId, threadId)); } @@ -948,7 +949,7 @@ public class MmsDatabase extends MessagingDatabase { DatabaseFactory.getThreadDatabase(context).incrementUnread(threadId, 1); } - ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(threadId)); + ApplicationDependencies.getJobManager().add(new TrimThreadJob(threadId)); } public long insertMessageOutbox(@NonNull OutgoingMediaMessage message, @@ -1022,7 +1023,7 @@ public class MmsDatabase extends MessagingDatabase { DatabaseFactory.getThreadDatabase(context).setLastSeen(threadId); DatabaseFactory.getThreadDatabase(context).setHasSent(threadId, true); - ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(threadId)); + ApplicationDependencies.getJobManager().add(new TrimThreadJob(threadId)); return messageId; } diff --git a/src/org/thoughtcrime/securesms/database/SmsDatabase.java b/src/org/thoughtcrime/securesms/database/SmsDatabase.java index bfcc77c9e8..0f63d8b441 100644 --- a/src/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -35,6 +35,7 @@ import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatchList; import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.SmsMessageRecord; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.TrimThreadJob; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.recipients.Recipient; @@ -478,7 +479,7 @@ public class SmsDatabase extends MessagingDatabase { DatabaseFactory.getThreadDatabase(context).update(record.getThreadId(), true); notifyConversationListeners(record.getThreadId()); - ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(record.getThreadId())); + ApplicationDependencies.getJobManager().add(new TrimThreadJob(record.getThreadId())); return new Pair<>(newMessageId, record.getThreadId()); } catch (NoSuchMessageException e) { @@ -516,7 +517,7 @@ public class SmsDatabase extends MessagingDatabase { DatabaseFactory.getThreadDatabase(context).update(threadId, true); notifyConversationListeners(threadId); - ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(threadId)); + ApplicationDependencies.getJobManager().add(new TrimThreadJob(threadId)); if (unread) { DatabaseFactory.getThreadDatabase(context).incrementUnread(threadId, 1); @@ -610,7 +611,7 @@ public class SmsDatabase extends MessagingDatabase { notifyConversationListeners(threadId); if (!message.isIdentityUpdate() && !message.isIdentityVerified() && !message.isIdentityDefault()) { - ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(threadId)); + ApplicationDependencies.getJobManager().add(new TrimThreadJob(threadId)); } return Optional.of(new InsertResult(messageId, threadId)); @@ -668,7 +669,7 @@ public class SmsDatabase extends MessagingDatabase { notifyConversationListeners(threadId); if (!message.isIdentityVerified() && !message.isIdentityDefault()) { - ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(threadId)); + ApplicationDependencies.getJobManager().add(new TrimThreadJob(threadId)); } return messageId; diff --git a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java index a17d81b833..5f6e9144af 100644 --- a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java +++ b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java @@ -38,6 +38,7 @@ import org.thoughtcrime.securesms.database.SignedPreKeyDatabase; import org.thoughtcrime.securesms.database.SmsDatabase; import org.thoughtcrime.securesms.database.StickerDatabase; import org.thoughtcrime.securesms.database.ThreadDatabase; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.RefreshPreKeysJob; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.notifications.NotificationChannels; @@ -150,7 +151,7 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper { else TextSecurePreferences.setNeedsSqlCipherMigration(context, true); if (!PreKeyMigrationHelper.migratePreKeys(context, db)) { - ApplicationContext.getInstance(context).getJobManager().add(new RefreshPreKeysJob()); + ApplicationDependencies.getJobManager().add(new RefreshPreKeysJob()); } SessionStoreMigrationHelper.migrateSessions(context, db); @@ -176,7 +177,7 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper { db.execSQL("CREATE TABLE one_time_prekeys (_id INTEGER PRIMARY KEY, key_id INTEGER UNIQUE, public_key TEXT NOT NULL, private_key TEXT NOT NULL)"); if (!PreKeyMigrationHelper.migratePreKeys(context, db)) { - ApplicationContext.getInstance(context).getJobManager().add(new RefreshPreKeysJob()); + ApplicationDependencies.getJobManager().add(new RefreshPreKeysJob()); } } diff --git a/src/org/thoughtcrime/securesms/dependencies/ApplicationDependencies.java b/src/org/thoughtcrime/securesms/dependencies/ApplicationDependencies.java index e7123ca8fb..dd7a6f4fc6 100644 --- a/src/org/thoughtcrime/securesms/dependencies/ApplicationDependencies.java +++ b/src/org/thoughtcrime/securesms/dependencies/ApplicationDependencies.java @@ -6,6 +6,7 @@ import androidx.annotation.NonNull; import org.thoughtcrime.securesms.IncomingMessageProcessor; import org.thoughtcrime.securesms.gcm.MessageRetriever; +import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess; import org.thoughtcrime.securesms.recipients.LiveRecipientCache; import org.thoughtcrime.securesms.service.IncomingMessageObserver; @@ -33,6 +34,7 @@ public class ApplicationDependencies { private static IncomingMessageProcessor incomingMessageProcessor; private static MessageRetriever messageRetriever; private static LiveRecipientCache recipientCache; + private static JobManager jobManager; public static synchronized void init(@NonNull Application application, @NonNull Provider provider) { if (ApplicationDependencies.application != null || ApplicationDependencies.provider != null) { @@ -116,6 +118,16 @@ public class ApplicationDependencies { return recipientCache; } + public static synchronized @NonNull JobManager getJobManager() { + assertInitialization(); + + if (jobManager == null) { + jobManager = provider.provideJobManager(); + } + + return jobManager; + } + private static void assertInitialization() { if (application == null || provider == null) { throw new UninitializedException(); @@ -129,8 +141,8 @@ public class ApplicationDependencies { @NonNull SignalServiceNetworkAccess provideSignalServiceNetworkAccess(); @NonNull IncomingMessageProcessor provideIncomingMessageProcessor(); @NonNull MessageRetriever provideMessageRetriever(); - @NonNull - LiveRecipientCache provideRecipientCache(); + @NonNull LiveRecipientCache provideRecipientCache(); + @NonNull JobManager provideJobManager(); } private static class UninitializedException extends IllegalStateException { diff --git a/src/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java b/src/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java index 20b8a17e81..912257eef7 100644 --- a/src/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java +++ b/src/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.dependencies; +import android.app.Application; import android.content.Context; import androidx.annotation.NonNull; @@ -8,8 +9,15 @@ import org.greenrobot.eventbus.EventBus; import org.thoughtcrime.securesms.BuildConfig; import org.thoughtcrime.securesms.IncomingMessageProcessor; import org.thoughtcrime.securesms.crypto.storage.SignalProtocolStoreImpl; +import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.events.ReminderUpdateEvent; import org.thoughtcrime.securesms.gcm.MessageRetriever; +import org.thoughtcrime.securesms.jobmanager.Job; +import org.thoughtcrime.securesms.jobmanager.JobManager; +import org.thoughtcrime.securesms.jobmanager.JobMigrator; +import org.thoughtcrime.securesms.jobmanager.impl.JsonDataSerializer; +import org.thoughtcrime.securesms.jobs.FastJobStorage; +import org.thoughtcrime.securesms.jobs.JobManagerFactories; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.push.SecurityEventListener; import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess; @@ -33,11 +41,11 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr private static final String TAG = Log.tag(ApplicationDependencyProvider.class); - private final Context context; + private final Application context; private final SignalServiceNetworkAccess networkAccess; - public ApplicationDependencyProvider(@NonNull Context context, @NonNull SignalServiceNetworkAccess networkAccess) { - this.context = context.getApplicationContext(); + public ApplicationDependencyProvider(@NonNull Application context, @NonNull SignalServiceNetworkAccess networkAccess) { + this.context = context; this.networkAccess = networkAccess; } @@ -87,11 +95,22 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr } @Override - public @NonNull - LiveRecipientCache provideRecipientCache() { + public @NonNull LiveRecipientCache provideRecipientCache() { return new LiveRecipientCache(context); } + @Override + public @NonNull JobManager provideJobManager() { + return new JobManager(context, new JobManager.Configuration.Builder() + .setDataSerializer(new JsonDataSerializer()) + .setJobFactories(JobManagerFactories.getJobFactories(context)) + .setConstraintFactories(JobManagerFactories.getConstraintFactories(context)) + .setConstraintObservers(JobManagerFactories.getConstraintObservers(context)) + .setJobStorage(new FastJobStorage(DatabaseFactory.getJobDatabase(context))) + .setJobMigrator(new JobMigrator(TextSecurePreferences.getJobManagerVersion(context), JobManager.CURRENT_VERSION, JobManagerFactories.getJobMigrations(context))) + .build()); + } + private static class DynamicCredentialsProvider implements CredentialsProvider { private final Context context; diff --git a/src/org/thoughtcrime/securesms/gcm/FcmService.java b/src/org/thoughtcrime/securesms/gcm/FcmService.java index 8d9040a13a..40f9ed342d 100644 --- a/src/org/thoughtcrime/securesms/gcm/FcmService.java +++ b/src/org/thoughtcrime/securesms/gcm/FcmService.java @@ -42,9 +42,7 @@ public class FcmService extends FirebaseMessagingService { return; } - ApplicationContext.getInstance(getApplicationContext()) - .getJobManager() - .add(new FcmRefreshJob()); + ApplicationDependencies.getJobManager().add(new FcmRefreshJob()); } private static void handleReceivedNotification(Context context) { @@ -59,9 +57,7 @@ public class FcmService extends FirebaseMessagingService { FcmJobService.schedule(context); } else { Log.w(TAG, "Failed to retrieve messages. Scheduling on JobManager (API " + Build.VERSION.SDK_INT + ")."); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new PushNotificationReceiveJob(context)); + ApplicationDependencies.getJobManager().add(new PushNotificationReceiveJob(context)); } } diff --git a/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java b/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java index a98e86661c..3f3023cc4a 100644 --- a/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java +++ b/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java @@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.database.GroupDatabase; import org.thoughtcrime.securesms.database.MessagingDatabase.InsertResult; import org.thoughtcrime.securesms.database.MmsDatabase; import org.thoughtcrime.securesms.database.SmsDatabase; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.AvatarDownloadJob; import org.thoughtcrime.securesms.jobs.PushGroupUpdateJob; import org.thoughtcrime.securesms.logging.Log; @@ -166,9 +167,7 @@ public class GroupMessageProcessor { Recipient sender = Recipient.external(context, content.getSender()); if (record.getMembers().contains(sender.getId())) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new PushGroupUpdateJob(sender.getId(), group.getGroupId())); + ApplicationDependencies.getJobManager().add(new PushGroupUpdateJob(sender.getId(), group.getGroupId())); } return null; @@ -205,8 +204,8 @@ public class GroupMessageProcessor { boolean outgoing) { if (group.getAvatar().isPresent()) { - ApplicationContext.getInstance(context).getJobManager() - .add(new AvatarDownloadJob(group.getGroupId())); + ApplicationDependencies.getJobManager() + .add(new AvatarDownloadJob(group.getGroupId())); } try { diff --git a/src/org/thoughtcrime/securesms/jobmanager/AlarmManagerScheduler.java b/src/org/thoughtcrime/securesms/jobmanager/AlarmManagerScheduler.java index 38bf1d18b2..0ff8153010 100644 --- a/src/org/thoughtcrime/securesms/jobmanager/AlarmManagerScheduler.java +++ b/src/org/thoughtcrime/securesms/jobmanager/AlarmManagerScheduler.java @@ -12,6 +12,7 @@ import com.annimon.stream.Stream; import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.BuildConfig; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import java.util.List; @@ -61,7 +62,7 @@ public class AlarmManagerScheduler implements Scheduler { @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "Received an alarm to retry a job."); - ApplicationContext.getInstance(context).getJobManager().wakeUp(); + ApplicationDependencies.getJobManager().wakeUp(); } } } diff --git a/src/org/thoughtcrime/securesms/jobmanager/JobSchedulerScheduler.java b/src/org/thoughtcrime/securesms/jobmanager/JobSchedulerScheduler.java index d3e3f4877e..09e24f8399 100644 --- a/src/org/thoughtcrime/securesms/jobmanager/JobSchedulerScheduler.java +++ b/src/org/thoughtcrime/securesms/jobmanager/JobSchedulerScheduler.java @@ -12,6 +12,7 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import org.thoughtcrime.securesms.ApplicationContext; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import java.util.List; @@ -65,7 +66,7 @@ public class JobSchedulerScheduler implements Scheduler { public boolean onStartJob(JobParameters params) { Log.d(TAG, "onStartJob()"); - JobManager jobManager = ApplicationContext.getInstance(getApplicationContext()).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); jobManager.addOnEmptyQueueListener(new JobManager.EmptyQueueListener() { @Override diff --git a/src/org/thoughtcrime/securesms/jobs/MmsReceiveJob.java b/src/org/thoughtcrime/securesms/jobs/MmsReceiveJob.java index aa45930ea7..ba4f9270af 100644 --- a/src/org/thoughtcrime/securesms/jobs/MmsReceiveJob.java +++ b/src/org/thoughtcrime/securesms/jobs/MmsReceiveJob.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.jobs; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.logging.Log; @@ -79,11 +80,9 @@ public class MmsReceiveJob extends BaseJob { Log.i(TAG, "Inserted received MMS notification..."); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MmsDownloadJob(messageAndThreadId.first, - messageAndThreadId.second, - true)); + ApplicationDependencies.getJobManager().add(new MmsDownloadJob(messageAndThreadId.first, + messageAndThreadId.second, + true)); } else if (isNotification(pdu)) { Log.w(TAG, "*** Received blocked MMS, ignoring..."); } diff --git a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java index fc981469f4..473fd7cec9 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java @@ -14,6 +14,7 @@ import android.util.Pair; import com.annimon.stream.Collectors; import com.annimon.stream.Stream; +import com.google.android.mms.APN; import org.signal.libsignal.metadata.InvalidMetadataMessageException; import org.signal.libsignal.metadata.InvalidMetadataVersionException; @@ -60,6 +61,7 @@ import org.thoughtcrime.securesms.database.ThreadDatabase; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.MmsMessageRecord; import org.thoughtcrime.securesms.database.model.StickerRecord; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.groups.GroupMessageProcessor; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; @@ -290,7 +292,7 @@ public class PushDecryptJob extends BaseJob { resetRecipientToPush(Recipient.external(context, content.getSender())); if (envelope.isPreKeySignalMessage()) { - ApplicationContext.getInstance(context).getJobManager().add(new RefreshPreKeysJob()); + ApplicationDependencies.getJobManager().add(new RefreshPreKeysJob()); } } catch (ProtocolInvalidVersionException e) { Log.w(TAG, e); @@ -479,9 +481,7 @@ public class PushDecryptJob extends BaseJob { private void handleUnknownGroupMessage(@NonNull SignalServiceContent content, @NonNull SignalServiceGroup group) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RequestGroupInfoJob(Recipient.external(context, content.getSender()).getId(), group.getGroupId())); + ApplicationDependencies.getJobManager().add(new RequestGroupInfoJob(Recipient.external(context, content.getSender()).getId(), group.getGroupId())); } private void handleExpirationUpdate(@NonNull SignalServiceContent content, @@ -522,7 +522,7 @@ public class PushDecryptJob extends BaseJob { } private void handleSynchronizeStickerPackOperation(@NonNull List stickerPackOperations) { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); for (StickerPackOperationMessage operation : stickerPackOperations) { if (operation.getPackId().isPresent() && operation.getPackKey().isPresent() && operation.getType().isPresent()) { @@ -597,38 +597,24 @@ public class PushDecryptJob extends BaseJob { private void handleSynchronizeRequestMessage(@NonNull RequestMessage message) { if (message.isContactsRequest()) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceContactUpdateJob(true)); - - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RefreshUnidentifiedDeliveryAbilityJob()); + ApplicationDependencies.getJobManager().add(new MultiDeviceContactUpdateJob(true)); + ApplicationDependencies.getJobManager().add(new RefreshUnidentifiedDeliveryAbilityJob()); } if (message.isGroupsRequest()) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceGroupUpdateJob()); + ApplicationDependencies.getJobManager().add(new MultiDeviceGroupUpdateJob()); } if (message.isBlockedListRequest()) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceBlockedUpdateJob()); + ApplicationDependencies.getJobManager().add(new MultiDeviceBlockedUpdateJob()); } if (message.isConfigurationRequest()) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(context), - TextSecurePreferences.isTypingIndicatorsEnabled(context), - TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(context), - TextSecurePreferences.isLinkPreviewsEnabled(context))); - - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceStickerPackSyncJob()); + ApplicationDependencies.getJobManager().add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(context), + TextSecurePreferences.isTypingIndicatorsEnabled(context), + TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(context), + TextSecurePreferences.isLinkPreviewsEnabled(context))); + ApplicationDependencies.getJobManager().add(new MultiDeviceStickerPackSyncJob()); } } @@ -710,9 +696,7 @@ public class PushDecryptJob extends BaseJob { forceStickerDownloadIfNecessary(stickerAttachments); for (DatabaseAttachment attachment : attachments) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new AttachmentDownloadJob(insertResult.get().getMessageId(), attachment.getAttachmentId(), false)); + ApplicationDependencies.getJobManager().add(new AttachmentDownloadJob(insertResult.get().getMessageId(), attachment.getAttachmentId(), false)); } if (smsMessageId.isPresent()) { @@ -807,9 +791,7 @@ public class PushDecryptJob extends BaseJob { forceStickerDownloadIfNecessary(stickerAttachments); for (DatabaseAttachment attachment : attachments) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new AttachmentDownloadJob(messageId, attachment.getAttachmentId(), false)); + ApplicationDependencies.getJobManager().add(new AttachmentDownloadJob(messageId, attachment.getAttachmentId(), false)); } if (message.getMessage().getExpiresInSeconds() > 0) { @@ -1104,16 +1086,14 @@ public class PushDecryptJob extends BaseJob { if (recipient.getProfileKey() == null || !MessageDigest.isEqual(recipient.getProfileKey(), message.getProfileKey().get())) { database.setProfileKey(recipient.getId(), message.getProfileKey().get()); database.setUnidentifiedAccessMode(recipient.getId(), RecipientDatabase.UnidentifiedAccessMode.UNKNOWN); - ApplicationContext.getInstance(context).getJobManager().add(new RetrieveProfileJob(recipient)); + ApplicationDependencies.getJobManager().add(new RetrieveProfileJob(recipient)); } } private void handleNeedsDeliveryReceipt(@NonNull SignalServiceContent content, @NonNull SignalServiceDataMessage message) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new SendDeliveryReceiptJob(Recipient.external(context, content.getSender()).getId(), message.getTimestamp())); + ApplicationDependencies.getJobManager().add(new SendDeliveryReceiptJob(Recipient.external(context, content.getSender()).getId(), message.getTimestamp())); } @SuppressLint("DefaultLocale") @@ -1412,7 +1392,7 @@ public class PushDecryptJob extends BaseJob { downloadJob.doWork(); } catch (Exception e) { Log.w(TAG, "Failed to download sticker inline. Scheduling."); - ApplicationContext.getInstance(context).getJobManager().add(downloadJob); + ApplicationDependencies.getJobManager().add(downloadJob); } } } diff --git a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index 9e022b46f3..bb12f95eae 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -161,7 +161,7 @@ public class PushMediaSendJob extends PushSendJob { warn(TAG, "Failure", ifae); database.markAsPendingInsecureSmsFallback(messageId); notifyMediaMessageDeliveryFailed(context, messageId); - ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(false)); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } catch (UntrustedIdentityException uie) { warn(TAG, "Failure", uie); database.addMismatchedIdentity(messageId, Recipient.external(context, uie.getE164Number()).getId(), uie.getIdentityKey()); diff --git a/src/org/thoughtcrime/securesms/jobs/PushSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushSendJob.java index 10e911adb4..fb5467a7e4 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.database.Address; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.MmsDatabase; import org.thoughtcrime.securesms.database.NoSuchMessageException; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.events.PartProgressEvent; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; @@ -82,10 +83,7 @@ public abstract class PushSendJob extends SendJob { @Override protected final void onSend() throws Exception { if (TextSecurePreferences.getSignedPreKeyFailureCount(context) > 5) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RotateSignedPreKeyJob()); - + ApplicationDependencies.getJobManager().add(new RotateSignedPreKeyJob()); throw new TextSecureExpiredException("Too many signed prekey rotation failures"); } @@ -99,7 +97,7 @@ public abstract class PushSendJob extends SendJob { if (getRunAttempt() > 1) { Log.i(TAG, "Scheduling service outage detection job."); - ApplicationContext.getInstance(context).getJobManager().add(new ServiceOutageDetectionJob()); + ApplicationDependencies.getJobManager().add(new ServiceOutageDetectionJob()); } } diff --git a/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java index bca01b2d94..6fe4512605 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java @@ -119,7 +119,7 @@ public class PushTextSendJob extends PushSendJob { warn(TAG, "Failure", e); database.markAsPendingInsecureSmsFallback(record.getId()); MessageNotifier.notifyMessageDeliveryFailed(context, record.getRecipient(), record.getThreadId()); - ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(false)); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } catch (UntrustedIdentityException e) { warn(TAG, "Failure", e); database.addMismatchedIdentity(record.getId(), Recipient.external(context, e.getE164Number()).getId(), e.getIdentityKey()); diff --git a/src/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java b/src/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java index f6e7ad3adf..081bec3c46 100644 --- a/src/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java +++ b/src/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java @@ -55,9 +55,7 @@ public class RefreshAttributesJob extends BaseJob { signalAccountManager.setAccountAttributes(null, registrationId, fetchesMessages, pin, unidentifiedAccessKey, universalUnidentifiedAccess); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RefreshUnidentifiedDeliveryAbilityJob()); + ApplicationDependencies.getJobManager().add(new RefreshUnidentifiedDeliveryAbilityJob()); } @Override diff --git a/src/org/thoughtcrime/securesms/jobs/RefreshPreKeysJob.java b/src/org/thoughtcrime/securesms/jobs/RefreshPreKeysJob.java index 98823e7511..1a75118dc0 100644 --- a/src/org/thoughtcrime/securesms/jobs/RefreshPreKeysJob.java +++ b/src/org/thoughtcrime/securesms/jobs/RefreshPreKeysJob.java @@ -75,9 +75,7 @@ public class RefreshPreKeysJob extends BaseJob { PreKeyUtil.setActiveSignedPreKeyId(context, signedPreKeyRecord.getId()); TextSecurePreferences.setSignedPreKeyRegistered(context, true); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new CleanPreKeysJob()); + ApplicationDependencies.getJobManager().add(new CleanPreKeysJob()); } @Override diff --git a/src/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java b/src/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java index 6919aad90c..7a1fd4549b 100644 --- a/src/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java +++ b/src/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java @@ -221,9 +221,7 @@ public class RetrieveProfileJob extends BaseJob { if (recipient.getProfileKey() == null) return; if (!Util.equals(profileAvatar, recipient.getProfileAvatar())) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RetrieveProfileAvatarJob(recipient, profileAvatar)); + ApplicationDependencies.getJobManager().add(new RetrieveProfileAvatarJob(recipient, profileAvatar)); } } diff --git a/src/org/thoughtcrime/securesms/jobs/RotateProfileKeyJob.java b/src/org/thoughtcrime/securesms/jobs/RotateProfileKeyJob.java index f25f103542..db792ed11e 100644 --- a/src/org/thoughtcrime/securesms/jobs/RotateProfileKeyJob.java +++ b/src/org/thoughtcrime/securesms/jobs/RotateProfileKeyJob.java @@ -56,9 +56,7 @@ public class RotateProfileKeyJob extends BaseJob { accountManager.setProfileName(profileKey, TextSecurePreferences.getProfileName(context)); accountManager.setProfileAvatar(profileKey, getProfileAvatar()); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RefreshAttributesJob()); + ApplicationDependencies.getJobManager().add(new RefreshAttributesJob()); } @Override diff --git a/src/org/thoughtcrime/securesms/jobs/RotateSignedPreKeyJob.java b/src/org/thoughtcrime/securesms/jobs/RotateSignedPreKeyJob.java index 552f574021..78b819fdec 100644 --- a/src/org/thoughtcrime/securesms/jobs/RotateSignedPreKeyJob.java +++ b/src/org/thoughtcrime/securesms/jobs/RotateSignedPreKeyJob.java @@ -59,9 +59,7 @@ public class RotateSignedPreKeyJob extends BaseJob { TextSecurePreferences.setSignedPreKeyRegistered(context, true); TextSecurePreferences.setSignedPreKeyFailureCount(context, 0); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new CleanPreKeysJob()); + ApplicationDependencies.getJobManager().add(new CleanPreKeysJob()); } @Override diff --git a/src/org/thoughtcrime/securesms/jobs/SmsSentJob.java b/src/org/thoughtcrime/securesms/jobs/SmsSentJob.java index e30cdc2c98..2b35275d24 100644 --- a/src/org/thoughtcrime/securesms/jobs/SmsSentJob.java +++ b/src/org/thoughtcrime/securesms/jobs/SmsSentJob.java @@ -4,6 +4,7 @@ import android.app.Activity; import androidx.annotation.NonNull; import android.telephony.SmsManager; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.logging.Log; @@ -102,9 +103,7 @@ public class SmsSentJob extends BaseJob { case SmsManager.RESULT_ERROR_NO_SERVICE: case SmsManager.RESULT_ERROR_RADIO_OFF: Log.w(TAG, "Service connectivity problem, requeuing..."); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new SmsSendJob(context, messageId, record.getIndividualRecipient(), runAttempt + 1)); + ApplicationDependencies.getJobManager().add(new SmsSendJob(context, messageId, record.getIndividualRecipient(), runAttempt + 1)); break; default: database.markAsSentFailed(messageId); diff --git a/src/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java b/src/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java index 8797bc63de..affcf24b4a 100644 --- a/src/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java +++ b/src/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java @@ -79,7 +79,7 @@ public class StickerPackDownloadJob extends BaseJob { } SignalServiceMessageReceiver receiver = ApplicationDependencies.getSignalServiceMessageReceiver(); - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); StickerDatabase stickerDatabase = DatabaseFactory.getStickerDatabase(context); byte[] packIdBytes = Hex.fromStringCondensed(packId); byte[] packKeyBytes = Hex.fromStringCondensed(packKey); diff --git a/src/org/thoughtcrime/securesms/logsubmit/SubmitLogFragment.java b/src/org/thoughtcrime/securesms/logsubmit/SubmitLogFragment.java index f047650629..eccccbb72e 100644 --- a/src/org/thoughtcrime/securesms/logsubmit/SubmitLogFragment.java +++ b/src/org/thoughtcrime/securesms/logsubmit/SubmitLogFragment.java @@ -57,6 +57,7 @@ import org.json.JSONObject; import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.contactshare.SimpleTextWatcher; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.logsubmit.util.Scrubber; import org.thoughtcrime.securesms.util.BucketInfo; @@ -394,7 +395,7 @@ public class SubmitLogFragment extends Fragment { .append("\n\n\n") .append(HEADER_JOBS) .append("\n\n") - .append(Scrubber.scrub(ApplicationContext.getInstance(context).getJobManager().getDebugInfo())) + .append(Scrubber.scrub(ApplicationDependencies.getJobManager().getDebugInfo())) .append("\n\n\n"); if (VERSION.SDK_INT >= 28) { diff --git a/src/org/thoughtcrime/securesms/migrations/LegacyMigrationJob.java b/src/org/thoughtcrime/securesms/migrations/LegacyMigrationJob.java index 952c412923..3b868179d7 100644 --- a/src/org/thoughtcrime/securesms/migrations/LegacyMigrationJob.java +++ b/src/org/thoughtcrime/securesms/migrations/LegacyMigrationJob.java @@ -18,6 +18,7 @@ import org.thoughtcrime.securesms.database.MmsDatabase; import org.thoughtcrime.securesms.database.MmsDatabase.Reader; import org.thoughtcrime.securesms.database.PushDatabase; import org.thoughtcrime.securesms.database.model.MessageRecord; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob; @@ -134,9 +135,7 @@ public class LegacyMigrationJob extends MigrationJob { } if (lastSeenVersion < SIGNED_PREKEY_VERSION) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new CreateSignedPreKeyJob(context)); + ApplicationDependencies.getJobManager().add(new CreateSignedPreKeyJob(context)); } if (lastSeenVersion < NO_DECRYPT_QUEUE_VERSION) { @@ -156,9 +155,7 @@ public class LegacyMigrationJob extends MigrationJob { } if (lastSeenVersion < CONTACTS_ACCOUNT_VERSION) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new DirectoryRefreshJob(false)); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } if (lastSeenVersion < MEDIA_DOWNLOAD_CONTROLS_VERSION) { @@ -166,18 +163,12 @@ public class LegacyMigrationJob extends MigrationJob { } if (lastSeenVersion < REDPHONE_SUPPORT_VERSION) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RefreshAttributesJob()); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new DirectoryRefreshJob(false)); + ApplicationDependencies.getJobManager().add(new RefreshAttributesJob()); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } if (lastSeenVersion < PROFILES) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new DirectoryRefreshJob(false)); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); } if (lastSeenVersion < SCREENSHOTS) { @@ -268,16 +259,12 @@ public class LegacyMigrationJob extends MigrationJob { } Log.i(TAG, "Scheduling UD attributes refresh."); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RefreshAttributesJob()); + ApplicationDependencies.getJobManager().add(new RefreshAttributesJob()); } if (lastSeenVersion < SIGNALING_KEY_DEPRECATION) { Log.i(TAG, "Scheduling a RefreshAttributesJob to remove the signaling key remotely."); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RefreshAttributesJob()); + ApplicationDependencies.getJobManager().add(new RefreshAttributesJob()); } } @@ -301,9 +288,7 @@ public class LegacyMigrationJob extends MigrationJob { attachmentDb.setTransferState(attachment.getMmsId(), attachment.getAttachmentId(), AttachmentDatabase.TRANSFER_PROGRESS_DONE); } else if (record != null && !record.isOutgoing() && record.isPush()) { Log.i(TAG, "queuing new attachment download job for incoming push part " + attachment.getAttachmentId() + "."); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new AttachmentDownloadJob(attachment.getMmsId(), attachment.getAttachmentId(), false)); + ApplicationDependencies.getJobManager().add(new AttachmentDownloadJob(attachment.getMmsId(), attachment.getAttachmentId(), false)); } reader.close(); } @@ -317,10 +302,8 @@ public class LegacyMigrationJob extends MigrationJob { pushReader = pushDatabase.getPending(); while (pushReader != null && pushReader.moveToNext()) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new PushDecryptJob(context, - pushReader.getLong(pushReader.getColumnIndexOrThrow(PushDatabase.ID)))); + ApplicationDependencies.getJobManager().add(new PushDecryptJob(context, + pushReader.getLong(pushReader.getColumnIndexOrThrow(PushDatabase.ID)))); } } finally { if (pushReader != null) diff --git a/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java b/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java index 70f3c094e9..b90e4e9a7c 100644 --- a/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java +++ b/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java @@ -17,6 +17,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.MessagingDatabase.ExpirationInfo; import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo; import org.thoughtcrime.securesms.database.MessagingDatabase.SyncMessageId; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.MultiDeviceReadUpdateJob; import org.thoughtcrime.securesms.jobs.SendReadReceiptJob; import org.thoughtcrime.securesms.logging.Log; @@ -76,9 +77,7 @@ public class MarkReadReceiver extends BroadcastReceiver { syncMessageIds.add(messageInfo.getSyncMessageId()); } - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceReadUpdateJob(syncMessageIds)); + ApplicationDependencies.getJobManager().add(new MultiDeviceReadUpdateJob(syncMessageIds)); Map> recipientIdMap = Stream.of(markedReadMessages) .map(MarkedMessageInfo::getSyncMessageId) @@ -87,9 +86,7 @@ public class MarkReadReceiver extends BroadcastReceiver { for (Map.Entry> entry : recipientIdMap.entrySet()) { List timestamps = Stream.of(entry.getValue()).map(SyncMessageId::getTimetamp).toList(); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new SendReadReceiptJob(entry.getKey(), timestamps)); + ApplicationDependencies.getJobManager().add(new SendReadReceiptJob(entry.getKey(), timestamps)); } } diff --git a/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java index c2407fd7d2..9839372ddb 100644 --- a/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -173,12 +173,10 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean enabled = (boolean)newValue; - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(enabled, - TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), - TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()), - TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); + ApplicationDependencies.getJobManager().add(new MultiDeviceConfigurationUpdateJob(enabled, + TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), + TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()), + TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); return true; } @@ -188,12 +186,10 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean enabled = (boolean)newValue; - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), - enabled, - TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()), - TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); + ApplicationDependencies.getJobManager().add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), + enabled, + TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()), + TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); if (!enabled) { ApplicationContext.getInstance(requireContext()).getTypingStatusRepository().clear(); @@ -207,12 +203,10 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean enabled = (boolean)newValue; - ApplicationContext.getInstance(requireContext()) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), - TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), - TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(requireContext()), - enabled)); + ApplicationDependencies.getJobManager().add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(requireContext()), + TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()), + TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(requireContext()), + enabled)); return true; } @@ -310,12 +304,10 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { boolean enabled = (boolean) newValue; - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(getContext()), - TextSecurePreferences.isTypingIndicatorsEnabled(getContext()), - enabled, - TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); + ApplicationDependencies.getJobManager().add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(getContext()), + TextSecurePreferences.isTypingIndicatorsEnabled(getContext()), + enabled, + TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); return true; } @@ -324,9 +316,7 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment private class UniversalUnidentifiedAccessChangedListener implements Preference.OnPreferenceChangeListener { @Override public boolean onPreferenceChange(Preference preference, Object o) { - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new RefreshAttributesJob()); + ApplicationDependencies.getJobManager().add(new RefreshAttributesJob()); return true; } } diff --git a/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java index e6e3c567b6..75d29db145 100644 --- a/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java @@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.backup.BackupDialog; import org.thoughtcrime.securesms.backup.FullBackupBase.BackupEvent; import org.thoughtcrime.securesms.components.SwitchPreferenceCompat; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.LocalBackupJob; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.permissions.Permissions; @@ -161,9 +162,7 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment { .ifNecessary() .onAllGranted(() -> { Log.i(TAG, "Queing backup..."); - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new LocalBackupJob()); + ApplicationDependencies.getJobManager().add(new LocalBackupJob()); }) .withPermanentDenialDialog(getString(R.string.ChatsPreferenceFragment_signal_requires_external_storage_permission_in_order_to_create_backups)) .execute(); diff --git a/src/org/thoughtcrime/securesms/service/BootReceiver.java b/src/org/thoughtcrime/securesms/service/BootReceiver.java index 7435a6acee..b072c97db3 100644 --- a/src/org/thoughtcrime/securesms/service/BootReceiver.java +++ b/src/org/thoughtcrime/securesms/service/BootReceiver.java @@ -5,12 +5,13 @@ import android.content.Context; import android.content.Intent; import org.thoughtcrime.securesms.ApplicationContext; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob; public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - ApplicationContext.getInstance(context).getJobManager().add(new PushNotificationReceiveJob(context)); + ApplicationDependencies.getJobManager().add(new PushNotificationReceiveJob(context)); } } diff --git a/src/org/thoughtcrime/securesms/service/DirectoryRefreshListener.java b/src/org/thoughtcrime/securesms/service/DirectoryRefreshListener.java index 8abacdca4d..45f8ef1971 100644 --- a/src/org/thoughtcrime/securesms/service/DirectoryRefreshListener.java +++ b/src/org/thoughtcrime/securesms/service/DirectoryRefreshListener.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import org.thoughtcrime.securesms.ApplicationContext; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -22,9 +23,7 @@ public class DirectoryRefreshListener extends PersistentAlarmManagerListener { @Override protected long onAlarm(Context context, long scheduledTime) { if (scheduledTime != 0 && TextSecurePreferences.isPushRegistered(context)) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new DirectoryRefreshJob(true)); + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(true)); } long newTime = System.currentTimeMillis() + INTERVAL; diff --git a/src/org/thoughtcrime/securesms/service/LocalBackupListener.java b/src/org/thoughtcrime/securesms/service/LocalBackupListener.java index 57ae5de31e..d88c976075 100644 --- a/src/org/thoughtcrime/securesms/service/LocalBackupListener.java +++ b/src/org/thoughtcrime/securesms/service/LocalBackupListener.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import org.thoughtcrime.securesms.ApplicationContext; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.LocalBackupJob; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -22,7 +23,7 @@ public class LocalBackupListener extends PersistentAlarmManagerListener { @Override protected long onAlarm(Context context, long scheduledTime) { if (TextSecurePreferences.isBackupEnabled(context)) { - ApplicationContext.getInstance(context).getJobManager().add(new LocalBackupJob()); + ApplicationDependencies.getJobManager().add(new LocalBackupJob()); } long nextTime = System.currentTimeMillis() + INTERVAL; diff --git a/src/org/thoughtcrime/securesms/service/MmsListener.java b/src/org/thoughtcrime/securesms/service/MmsListener.java index b7d3d93383..35a18dba91 100644 --- a/src/org/thoughtcrime/securesms/service/MmsListener.java +++ b/src/org/thoughtcrime/securesms/service/MmsListener.java @@ -20,6 +20,8 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.provider.Telephony; + +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.ApplicationContext; @@ -54,9 +56,7 @@ public class MmsListener extends BroadcastReceiver { Log.i(TAG, "Relevant!"); int subscriptionId = intent.getExtras().getInt("subscription", -1); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MmsReceiveJob(intent.getByteArrayExtra("data"), subscriptionId)); + ApplicationDependencies.getJobManager().add(new MmsReceiveJob(intent.getByteArrayExtra("data"), subscriptionId)); abortBroadcast(); } diff --git a/src/org/thoughtcrime/securesms/service/RotateSenderCertificateListener.java b/src/org/thoughtcrime/securesms/service/RotateSenderCertificateListener.java index d4d0c560a3..b06c755719 100644 --- a/src/org/thoughtcrime/securesms/service/RotateSenderCertificateListener.java +++ b/src/org/thoughtcrime/securesms/service/RotateSenderCertificateListener.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import org.thoughtcrime.securesms.ApplicationContext; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.RotateCertificateJob; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -21,9 +22,7 @@ public class RotateSenderCertificateListener extends PersistentAlarmManagerListe @Override protected long onAlarm(Context context, long scheduledTime) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RotateCertificateJob(context)); + ApplicationDependencies.getJobManager().add(new RotateCertificateJob(context)); long nextTime = System.currentTimeMillis() + INTERVAL; TextSecurePreferences.setUnidentifiedAccessCertificateRotationTime(context, nextTime); diff --git a/src/org/thoughtcrime/securesms/service/RotateSignedPreKeyListener.java b/src/org/thoughtcrime/securesms/service/RotateSignedPreKeyListener.java index 06ed207f27..6b6a8f335e 100644 --- a/src/org/thoughtcrime/securesms/service/RotateSignedPreKeyListener.java +++ b/src/org/thoughtcrime/securesms/service/RotateSignedPreKeyListener.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import org.thoughtcrime.securesms.ApplicationContext; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.RotateSignedPreKeyJob; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -22,9 +23,7 @@ public class RotateSignedPreKeyListener extends PersistentAlarmManagerListener { @Override protected long onAlarm(Context context, long scheduledTime) { if (scheduledTime != 0 && TextSecurePreferences.isPushRegistered(context)) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RotateSignedPreKeyJob()); + ApplicationDependencies.getJobManager().add(new RotateSignedPreKeyJob()); } long nextTime = System.currentTimeMillis() + INTERVAL; diff --git a/src/org/thoughtcrime/securesms/service/SmsDeliveryListener.java b/src/org/thoughtcrime/securesms/service/SmsDeliveryListener.java index 00854e0f87..ba9f52c555 100644 --- a/src/org/thoughtcrime/securesms/service/SmsDeliveryListener.java +++ b/src/org/thoughtcrime/securesms/service/SmsDeliveryListener.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.telephony.SmsMessage; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.logging.Log; @@ -21,7 +22,7 @@ public class SmsDeliveryListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); long messageId = intent.getLongExtra("message_id", -1); int runAttempt = intent.getIntExtra("run_attempt", 0); diff --git a/src/org/thoughtcrime/securesms/service/SmsListener.java b/src/org/thoughtcrime/securesms/service/SmsListener.java index 28df7b3bb3..d0624d1b9a 100644 --- a/src/org/thoughtcrime/securesms/service/SmsListener.java +++ b/src/org/thoughtcrime/securesms/service/SmsListener.java @@ -22,6 +22,8 @@ import android.content.Intent; import android.os.Bundle; import android.provider.Telephony; import android.telephony.SmsMessage; + +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.ApplicationContext; @@ -105,7 +107,7 @@ public class SmsListener extends BroadcastReceiver { Object[] pdus = (Object[]) intent.getExtras().get("pdus"); int subscriptionId = intent.getExtras().getInt("subscription", -1); - ApplicationContext.getInstance(context).getJobManager().add(new SmsReceiveJob(pdus, subscriptionId)); + ApplicationDependencies.getJobManager().add(new SmsReceiveJob(pdus, subscriptionId)); abortBroadcast(); } diff --git a/src/org/thoughtcrime/securesms/service/UpdateApkRefreshListener.java b/src/org/thoughtcrime/securesms/service/UpdateApkRefreshListener.java index cebf3499fd..c02705b6f0 100644 --- a/src/org/thoughtcrime/securesms/service/UpdateApkRefreshListener.java +++ b/src/org/thoughtcrime/securesms/service/UpdateApkRefreshListener.java @@ -3,6 +3,8 @@ package org.thoughtcrime.securesms.service; import android.content.Context; import android.content.Intent; + +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.ApplicationContext; @@ -29,9 +31,7 @@ public class UpdateApkRefreshListener extends PersistentAlarmManagerListener { if (scheduledTime != 0 && BuildConfig.PLAY_STORE_DISABLED) { Log.i(TAG, "Queueing APK update job..."); - ApplicationContext.getInstance(context) - .getJobManager() - .add(new UpdateApkJob()); + ApplicationDependencies.getJobManager().add(new UpdateApkJob()); } long newTime = System.currentTimeMillis() + INTERVAL; diff --git a/src/org/thoughtcrime/securesms/sms/MessageSender.java b/src/org/thoughtcrime/securesms/sms/MessageSender.java index 4f03733cfb..315d5469d7 100644 --- a/src/org/thoughtcrime/securesms/sms/MessageSender.java +++ b/src/org/thoughtcrime/securesms/sms/MessageSender.java @@ -37,6 +37,7 @@ import org.thoughtcrime.securesms.database.SmsDatabase; import org.thoughtcrime.securesms.database.ThreadDatabase; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.SmsMessageRecord; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobs.AttachmentCopyJob; @@ -212,10 +213,9 @@ public class MessageSender { copyJobs.size(), messageJobs.size())); - JobManager.Chain chain = ApplicationContext.getInstance(context) - .getJobManager() - .startChain(compressionJobs) - .then(uploadJobs); + JobManager.Chain chain = ApplicationDependencies.getJobManager() + .startChain(compressionJobs) + .then(uploadJobs); if (copyJobs.size() > 0) { chain = chain.then(copyJobs); @@ -274,27 +274,27 @@ public class MessageSender { } private static void sendTextPush(Context context, Recipient recipient, long messageId) { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); jobManager.add(new PushTextSendJob(messageId, recipient)); } private static void sendMediaPush(Context context, Recipient recipient, long messageId) { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); PushMediaSendJob.enqueue(context, jobManager, messageId, recipient); } private static void sendGroupPush(Context context, Recipient recipient, long messageId, RecipientId filterRecipientId) { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); PushGroupSendJob.enqueue(context, jobManager, messageId, recipient.getId(), filterRecipientId); } private static void sendSms(Context context, Recipient recipient, long messageId) { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); jobManager.add(new SmsSendJob(context, messageId, recipient)); } private static void sendMms(Context context, long messageId) { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); MmsSendJob.enqueue(context, jobManager, messageId); } diff --git a/src/org/thoughtcrime/securesms/stickers/StickerManagementRepository.java b/src/org/thoughtcrime/securesms/stickers/StickerManagementRepository.java index 2dc5abf900..b4670e28ee 100644 --- a/src/org/thoughtcrime/securesms/stickers/StickerManagementRepository.java +++ b/src/org/thoughtcrime/securesms/stickers/StickerManagementRepository.java @@ -10,6 +10,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.StickerDatabase; import org.thoughtcrime.securesms.database.StickerDatabase.StickerPackRecordReader; import org.thoughtcrime.securesms.database.model.StickerPackRecord; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobs.MultiDeviceStickerPackOperationJob; import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob; @@ -37,7 +38,7 @@ final class StickerManagementRepository { void fetchUnretrievedReferencePacks() { SignalExecutors.SERIAL.execute(() -> { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); try (Cursor cursor = attachmentDatabase.getUnavailableStickerPacks()) { while (cursor != null && cursor.moveToNext()) { @@ -78,16 +79,14 @@ final class StickerManagementRepository { stickerDatabase.uninstallPack(packId); if (TextSecurePreferences.isMultiDevice(context)) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceStickerPackOperationJob(packId, packKey, MultiDeviceStickerPackOperationJob.Type.REMOVE)); + ApplicationDependencies.getJobManager().add(new MultiDeviceStickerPackOperationJob(packId, packKey, MultiDeviceStickerPackOperationJob.Type.REMOVE)); } }); } void installStickerPack(@NonNull String packId, @NonNull String packKey) { SignalExecutors.SERIAL.execute(() -> { - JobManager jobManager = ApplicationContext.getInstance(context).getJobManager(); + JobManager jobManager = ApplicationDependencies.getJobManager(); if (stickerDatabase.isPackAvailableAsReference(packId)) { stickerDatabase.markPackAsInstalled(packId); diff --git a/src/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java b/src/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java index b94f1e6a57..fb776a3dd5 100644 --- a/src/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java +++ b/src/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java @@ -21,6 +21,7 @@ import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.ShareActivity; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader; @@ -162,9 +163,7 @@ public final class StickerPackPreviewActivity extends PassphraseRequiredActionBa installButton.setOnClickListener(v -> { SimpleTask.run(() -> { - ApplicationContext.getInstance(this) - .getJobManager() - .add(new StickerPackDownloadJob(manifest.getPackId(), manifest.getPackKey(), false)); + ApplicationDependencies.getJobManager().add(new StickerPackDownloadJob(manifest.getPackId(), manifest.getPackKey(), false)); return null; }, (nothing) -> finish()); diff --git a/src/org/thoughtcrime/securesms/util/DirectoryHelper.java b/src/org/thoughtcrime/securesms/util/DirectoryHelper.java index e856dc750a..c79b216337 100644 --- a/src/org/thoughtcrime/securesms/util/DirectoryHelper.java +++ b/src/org/thoughtcrime/securesms/util/DirectoryHelper.java @@ -14,6 +14,8 @@ import android.provider.ContactsContract; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import android.text.TextUtils; + +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.logging.Log; import com.annimon.stream.Collectors; @@ -81,9 +83,7 @@ public class DirectoryHelper { List newlyActiveUsers = refreshDirectory(context, AccountManagerFactory.createManager(context)); if (TextSecurePreferences.isMultiDevice(context)) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceContactUpdateJob()); + ApplicationDependencies.getJobManager().add(new MultiDeviceContactUpdateJob()); } if (notifyOfNewUsers) notifyNewUsers(context, newlyActiveUsers); @@ -349,7 +349,7 @@ public class DirectoryHelper { } if (!activeUser && TextSecurePreferences.isMultiDevice(context)) { - ApplicationContext.getInstance(context).getJobManager().add(new MultiDeviceContactUpdateJob()); + ApplicationDependencies.getJobManager().add(new MultiDeviceContactUpdateJob()); } if (!activeUser && systemContact && !TextSecurePreferences.getNeedsSqlCipherMigration(context)) {