diff --git a/app/build.gradle b/app/build.gradle index 58f5716fb1..dc647f6df2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,6 +9,7 @@ buildscript { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlinVersion" classpath "com.google.gms:google-services:4.3.3" + classpath 'com.google.dagger:hilt-android-gradle-plugin:2.38.1' } } @@ -19,6 +20,7 @@ apply plugin: 'witness' apply plugin: 'kotlin-kapt' apply plugin: 'com.google.gms.google-services' apply plugin: 'kotlinx-serialization' +apply plugin: 'dagger.hilt.android.plugin' configurations.all { exclude module: "commons-logging" @@ -53,6 +55,10 @@ dependencies { implementation 'com.google.android.exoplayer:exoplayer-ui:2.9.1' implementation 'org.conscrypt:conscrypt-android:2.0.0' implementation 'org.signal:aesgcmprovider:0.0.3' + + implementation "com.google.dagger:hilt-android:2.38.1" + kapt "com.google.dagger:hilt-compiler:2.38.1" + // implementation 'org.whispersystems:webrtc-android:M77' implementation 'org.webrtc:google-webrtc:1.0.32006' implementation "me.leolin:ShortcutBadger:1.1.16" @@ -71,9 +77,6 @@ dependencies { implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' implementation 'com.melnykov:floatingactionbutton:1.3.0' implementation 'com.google.zxing:android-integration:3.1.0' - implementation 'com.squareup.dagger:dagger:1.2.2' - annotationProcessor 'com.squareup.dagger:dagger-compiler:1.2.2' - kapt 'com.squareup.dagger:dagger-compiler:1.2.2' implementation 'mobi.upod:time-duration-picker:1.1.3' implementation 'com.google.zxing:core:3.2.1' implementation ('com.davemorrissey.labs:subsampling-scale-image-view:3.6.0') { @@ -154,7 +157,7 @@ dependencies { testImplementation 'org.robolectric:shadows-multidex:4.4' } -def canonicalVersionCode = 222 +def canonicalVersionCode = 224 def canonicalVersionName = "1.12.0" def postFixSize = 10 diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 2806364cd2..59066aa4bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -52,8 +52,6 @@ import org.thoughtcrime.securesms.components.TypingStatusSender; import org.thoughtcrime.securesms.crypto.KeyPairUtilities; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.LokiAPIDatabase; -import org.thoughtcrime.securesms.dependencies.InjectableType; -import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule; import org.thoughtcrime.securesms.groups.OpenGroupManager; import org.thoughtcrime.securesms.home.HomeActivity; import org.thoughtcrime.securesms.jobmanager.DependencyInjector; @@ -91,7 +89,7 @@ import java.util.Date; import java.util.HashSet; import java.util.Set; -import dagger.ObjectGraph; +import dagger.hilt.android.HiltAndroidApp; import kotlin.Unit; import kotlinx.coroutines.Job; import network.loki.messenger.BuildConfig; @@ -104,6 +102,7 @@ import network.loki.messenger.BuildConfig; * * @author Moxie Marlinspike */ +@HiltAndroidApp public class ApplicationContext extends Application implements DependencyInjector, DefaultLifecycleObserver { public static final String PREFERENCES_NAME = "SecureSMS-Preferences"; @@ -116,11 +115,9 @@ public class ApplicationContext extends Application implements DependencyInjecto private JobManager jobManager; private ReadReceiptManager readReceiptManager; private ProfileManager profileManager; - private ObjectGraph objectGraph; public MessageNotifier messageNotifier = null; public Poller poller = null; public Broadcaster broadcaster = null; - public SignalCommunicationModule communicationModule; private Job firebaseInstanceIdJob; private Handler conversationListNotificationHandler; private final AndroidLogger logger = new AndroidLogger(); @@ -143,7 +140,6 @@ public class ApplicationContext extends Application implements DependencyInjecto initializeSecurityProvider(); initializeLogging(); initializeCrashHandling(); - initializeDependencyInjection(); NotificationChannels.create(this); ProcessLifecycleOwner.get().getLifecycle().addObserver(this); AppContext.INSTANCE.configureKovenant(); @@ -213,9 +209,6 @@ public class ApplicationContext extends Application implements DependencyInjecto @Override public void injectDependencies(Object object) { - if (object instanceof InjectableType) { - objectGraph.inject(object); - } } public void initializeLocaleParser() { @@ -296,11 +289,6 @@ public class ApplicationContext extends Application implements DependencyInjecto .build()); } - private void initializeDependencyInjection() { - communicationModule = new SignalCommunicationModule(this); - this.objectGraph = ObjectGraph.create(communicationModule); - } - private void initializeExpiringMessageManager() { this.expiringMessageManager = new ExpiringMessageManager(this); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index b536e36ea8..732029b709 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -443,7 +443,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe } private fun setUpLinkPreviewObserver() { - val linkPreviewViewModel = ViewModelProviders.of(this, LinkPreviewViewModel.Factory(LinkPreviewRepository(this)))[LinkPreviewViewModel::class.java] + val linkPreviewViewModel = ViewModelProviders.of(this, LinkPreviewViewModel.Factory(LinkPreviewRepository()))[LinkPreviewViewModel::class.java] this.linkPreviewViewModel = linkPreviewViewModel if (!TextSecurePreferences.isLinkPreviewsEnabled(this)) { linkPreviewViewModel.onUserCancel(); return diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java b/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java deleted file mode 100644 index 00167232bf..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.thoughtcrime.securesms.dependencies; - -import android.content.Context; - -import org.thoughtcrime.securesms.jobs.AvatarDownloadJob; -import org.thoughtcrime.securesms.jobs.RetrieveProfileAvatarJob; -import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository; -import org.thoughtcrime.securesms.preferences.AppProtectionPreferenceFragment; - -import dagger.Module; - -@Module(complete = false, injects = {AvatarDownloadJob.class, - RetrieveProfileAvatarJob.class, - AppProtectionPreferenceFragment.class, - LinkPreviewRepository.class}) - -public class SignalCommunicationModule { - - private final Context context; - - public SignalCommunicationModule(Context context) { - this.context = context; - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java index 3cabdce5d7..7407b42603 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java @@ -1,33 +1,33 @@ package org.thoughtcrime.securesms.jobs; import android.graphics.Bitmap; + import androidx.annotation.NonNull; import org.session.libsession.messaging.utilities.Data; import org.session.libsession.utilities.DownloadUtilities; +import org.session.libsession.utilities.GroupRecord; +import org.session.libsignal.exceptions.InvalidMessageException; +import org.session.libsignal.exceptions.NonSuccessfulResponseCodeException; +import org.session.libsignal.messages.SignalServiceAttachmentPointer; import org.session.libsignal.streams.AttachmentCipherInputStream; +import org.session.libsignal.utilities.Hex; +import org.session.libsignal.utilities.Log; +import org.session.libsignal.utilities.guava.Optional; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.GroupDatabase; -import org.session.libsession.utilities.GroupRecord; -import org.thoughtcrime.securesms.dependencies.InjectableType; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; -import org.session.libsignal.utilities.Log; import org.thoughtcrime.securesms.mms.AttachmentStreamUriLoader.AttachmentModel; import org.thoughtcrime.securesms.util.BitmapDecodingException; import org.thoughtcrime.securesms.util.BitmapUtil; -import org.session.libsignal.utilities.Hex; -import org.session.libsignal.exceptions.InvalidMessageException; -import org.session.libsignal.utilities.guava.Optional; -import org.session.libsignal.messages.SignalServiceAttachmentPointer; -import org.session.libsignal.exceptions.NonSuccessfulResponseCodeException; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -public class AvatarDownloadJob extends BaseJob implements InjectableType { +public class AvatarDownloadJob extends BaseJob { public static final String KEY = "AvatarDownloadJob"; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileAvatarJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileAvatarJob.java index 34a010000e..758e806578 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileAvatarJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileAvatarJob.java @@ -8,16 +8,15 @@ import androidx.annotation.NonNull; import org.session.libsession.avatars.AvatarHelper; import org.session.libsession.messaging.utilities.Data; import org.session.libsession.utilities.Address; -import org.session.libsession.utilities.recipients.Recipient; import org.session.libsession.utilities.DownloadUtilities; import org.session.libsession.utilities.TextSecurePreferences; import org.session.libsession.utilities.Util; -import org.session.libsignal.streams.ProfileCipherInputStream; +import org.session.libsession.utilities.recipients.Recipient; import org.session.libsignal.exceptions.PushNetworkException; +import org.session.libsignal.streams.ProfileCipherInputStream; import org.session.libsignal.utilities.Log; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.RecipientDatabase; -import org.thoughtcrime.securesms.dependencies.InjectableType; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; @@ -29,7 +28,7 @@ import java.io.InputStream; import java.security.SecureRandom; import java.util.concurrent.TimeUnit; -public class RetrieveProfileAvatarJob extends BaseJob implements InjectableType { +public class RetrieveProfileAvatarJob extends BaseJob { public static final String KEY = "RetrieveProfileAvatarJob"; diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java index dd2bd7735d..697f6718c2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java @@ -4,42 +4,38 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.android.gms.common.util.IOUtils; +import org.session.libsession.messaging.sending_receiving.attachments.Attachment; import org.session.libsession.messaging.sending_receiving.attachments.AttachmentTransferProgress; +import org.session.libsession.messaging.sending_receiving.attachments.UriAttachment; +import org.session.libsession.messaging.sending_receiving.link_preview.LinkPreview; import org.session.libsession.utilities.MediaTypes; -import org.thoughtcrime.securesms.ApplicationContext; -import org.thoughtcrime.securesms.dependencies.InjectableType; +import org.session.libsession.utilities.concurrent.SignalExecutors; import org.session.libsignal.utilities.Log; +import org.session.libsignal.utilities.guava.Optional; +import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil.OpenGraph; import org.thoughtcrime.securesms.net.CallRequestController; import org.thoughtcrime.securesms.net.CompositeRequestController; import org.thoughtcrime.securesms.net.ContentProxySafetyInterceptor; import org.thoughtcrime.securesms.net.RequestController; import org.thoughtcrime.securesms.providers.BlobProvider; -import org.session.libsignal.utilities.guava.Optional; -import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil.OpenGraph; - -import org.session.libsession.messaging.sending_receiving.attachments.Attachment; -import org.session.libsession.messaging.sending_receiving.attachments.UriAttachment; -import org.session.libsession.messaging.sending_receiving.link_preview.LinkPreview; -import org.session.libsession.utilities.concurrent.SignalExecutors; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import javax.inject.Inject; - import okhttp3.CacheControl; import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -public class LinkPreviewRepository implements InjectableType { +public class LinkPreviewRepository { private static final String TAG = LinkPreviewRepository.class.getSimpleName(); @@ -47,13 +43,11 @@ public class LinkPreviewRepository implements InjectableType { private final OkHttpClient client; - public LinkPreviewRepository(@NonNull Context context) { + public LinkPreviewRepository() { this.client = new OkHttpClient.Builder() .addNetworkInterceptor(new ContentProxySafetyInterceptor()) .cache(null) .build(); - - ApplicationContext.getInstance(context).injectDependencies(this); } RequestController getLinkPreview(@NonNull Context context, @NonNull String url, @NonNull Callback> callback) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java index 409b2bb24a..880894480f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -7,21 +7,19 @@ import android.content.Intent; import android.os.Bundle; import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; import androidx.preference.Preference; +import org.session.libsession.utilities.TextSecurePreferences; import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.components.SwitchPreferenceCompat; -import org.thoughtcrime.securesms.dependencies.InjectableType; import org.thoughtcrime.securesms.service.KeyCachingService; -import org.session.libsession.utilities.TextSecurePreferences; import java.util.concurrent.TimeUnit; import mobi.upod.timedurationpicker.TimeDurationPickerDialog; import network.loki.messenger.R; -public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment implements InjectableType { +public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment { @Override public void onAttach(Activity activity) {