From 4602bda96fc7f99ca0f0fcf626764f7a2b1a9044 Mon Sep 17 00:00:00 2001 From: Moez Bhatti Date: Mon, 23 Jul 2018 17:26:15 -0400 Subject: [PATCH] Make GlideApp accessible with data module --- data/build.gradle | 5 ++++ .../moez/QKSMS}/util/ContactImageLoader.kt | 23 ++++++++----------- .../com/moez/QKSMS}/util/GlideAppModule.kt | 2 +- .../common/util/NotificationManagerImpl.kt | 1 + .../moez/QKSMS/common/widget/AvatarView.kt | 2 +- .../QKSMS/feature/compose/part/MediaBinder.kt | 2 +- .../ConversationMediaAdapter.kt | 2 +- .../QKSMS/feature/gallery/GalleryActivity.kt | 6 ++--- .../ScheduledMessageAttachmentAdapter.kt | 2 +- .../QKSMS/feature/widget/WidgetAdapter.kt | 2 +- .../com/moez/QKSMS/injection/AppComponent.kt | 2 +- 11 files changed, 26 insertions(+), 23 deletions(-) rename {presentation/src/main/java/com/moez/QKSMS/common => data/src/main/java/com/moez/QKSMS}/util/ContactImageLoader.kt (84%) rename {presentation/src/main/java/com/moez/QKSMS/common => data/src/main/java/com/moez/QKSMS}/util/GlideAppModule.kt (97%) diff --git a/data/build.gradle b/data/build.gradle index 7f3263e9..b3d6074b 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -28,6 +28,10 @@ dependencies { implementation "androidx.appcompat:appcompat:$androidx_version" implementation "androidx.exifinterface:exifinterface:$androidx_version" + // glide + implementation "com.github.bumptech.glide:glide:$glide_version" + kapt "com.github.bumptech.glide:compiler:$glide_compiler_version" + // dagger implementation "com.google.dagger:dagger:$dagger_version" implementation "com.google.dagger:dagger-android-support:$dagger_version" @@ -53,6 +57,7 @@ dependencies { implementation "com.f2prateek.rx.preferences2:rx-preferences:$rx_preferences_version" implementation "com.jakewharton.timber:timber:$timber_version" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation "com.madgag:animated-gif-lib:1.4" implementation "me.leolin:ShortcutBadger:1.1.21" implementation project(":android-smsmms") implementation project(':common') diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/ContactImageLoader.kt b/data/src/main/java/com/moez/QKSMS/util/ContactImageLoader.kt similarity index 84% rename from presentation/src/main/java/com/moez/QKSMS/common/util/ContactImageLoader.kt rename to data/src/main/java/com/moez/QKSMS/util/ContactImageLoader.kt index d62e4f60..dba1c31f 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/ContactImageLoader.kt +++ b/data/src/main/java/com/moez/QKSMS/util/ContactImageLoader.kt @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with QKSMS. If not, see . */ -package com.moez.QKSMS.common.util +package com.moez.QKSMS.util import android.content.Context import android.provider.ContactsContract @@ -29,27 +29,26 @@ import com.bumptech.glide.load.data.DataFetcher import com.bumptech.glide.load.model.ModelLoader import com.bumptech.glide.load.model.ModelLoaderFactory import com.bumptech.glide.load.model.MultiModelLoaderFactory -import com.moez.QKSMS.injection.appComponent import com.moez.QKSMS.repository.ContactRepository +import com.moez.QKSMS.repository.ContactRepositoryImpl import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import java.io.InputStream import java.security.MessageDigest -import javax.inject.Inject -class ContactImageLoader(val context: Context) : ModelLoader { +class ContactImageLoader(private val context: Context, private val contactRepo: ContactRepository) : ModelLoader { override fun handles(model: String): Boolean { return PhoneNumberUtils.isGlobalPhoneNumber(model) } override fun buildLoadData(model: String, width: Int, height: Int, options: Options): ModelLoader.LoadData? { - return ModelLoader.LoadData(ContactImageKey(model), ContactImageFetcher(context, model)) + return ModelLoader.LoadData(ContactImageKey(model), ContactImageFetcher(context, contactRepo, model)) } class Factory(val context: Context) : ModelLoaderFactory { - override fun build(multiFactory: MultiModelLoaderFactory) = ContactImageLoader(context) + override fun build(multiFactory: MultiModelLoaderFactory) = ContactImageLoader(context, ContactRepositoryImpl(context)) override fun teardown() {} // nothing to do here } @@ -57,16 +56,14 @@ class ContactImageLoader(val context: Context) : ModelLoader { - - @Inject lateinit var contactRepo: ContactRepository + class ContactImageFetcher( + private val context: Context, + private val contactRepo: ContactRepository, + private val address: String + ) : DataFetcher { private var loadPhotoDisposable: Disposable? = null - init { - appComponent.inject(this) - } - override fun cleanup() {} override fun getDataClass() = InputStream::class.java override fun getDataSource() = DataSource.LOCAL diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/GlideAppModule.kt b/data/src/main/java/com/moez/QKSMS/util/GlideAppModule.kt similarity index 97% rename from presentation/src/main/java/com/moez/QKSMS/common/util/GlideAppModule.kt rename to data/src/main/java/com/moez/QKSMS/util/GlideAppModule.kt index 1336c0da..de77f0e8 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/GlideAppModule.kt +++ b/data/src/main/java/com/moez/QKSMS/util/GlideAppModule.kt @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with QKSMS. If not, see . */ -package com.moez.QKSMS.common.util +package com.moez.QKSMS.util import android.content.Context import android.util.Log diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt index 4c34b73e..10d6ff4c 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt @@ -44,6 +44,7 @@ import com.moez.QKSMS.receiver.MarkSeenReceiver import com.moez.QKSMS.receiver.RemoteMessagingReceiver import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository +import com.moez.QKSMS.util.GlideApp import com.moez.QKSMS.util.Preferences import com.moez.QKSMS.util.tryOrNull import javax.inject.Inject diff --git a/presentation/src/main/java/com/moez/QKSMS/common/widget/AvatarView.kt b/presentation/src/main/java/com/moez/QKSMS/common/widget/AvatarView.kt index 6cb66a88..89b34b12 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/widget/AvatarView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/widget/AvatarView.kt @@ -28,12 +28,12 @@ import android.widget.FrameLayout import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.util.Colors -import com.moez.QKSMS.common.util.GlideApp import com.moez.QKSMS.common.util.extensions.setBackgroundTint import com.moez.QKSMS.common.util.extensions.setTint import com.moez.QKSMS.injection.appComponent import com.moez.QKSMS.model.Contact import com.moez.QKSMS.model.Recipient +import com.moez.QKSMS.util.GlideApp import kotlinx.android.synthetic.main.avatar_view.view.* import javax.inject.Inject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt index 2958740a..206e9f1f 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt @@ -4,13 +4,13 @@ import android.content.Context import android.view.View import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator -import com.moez.QKSMS.common.util.GlideApp import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.common.widget.BubbleImageView import com.moez.QKSMS.extensions.isImage import com.moez.QKSMS.extensions.isVideo import com.moez.QKSMS.model.Message import com.moez.QKSMS.model.MmsPart +import com.moez.QKSMS.util.GlideApp import kotlinx.android.synthetic.main.mms_preview_list_item.view.* class MediaBinder(private val context: Context, private val navigator: Navigator) : PartBinder { diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationMediaAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationMediaAdapter.kt index 6786a40a..6753539a 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationMediaAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationMediaAdapter.kt @@ -27,11 +27,11 @@ import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.base.QkRealmAdapter import com.moez.QKSMS.common.base.QkViewHolder -import com.moez.QKSMS.common.util.GlideApp import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.extensions.isImage import com.moez.QKSMS.extensions.isVideo import com.moez.QKSMS.model.MmsPart +import com.moez.QKSMS.util.GlideApp import io.reactivex.disposables.CompositeDisposable import io.reactivex.subjects.PublishSubject import kotlinx.android.synthetic.main.conversation_media_list_item.view.* diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt index fec9b61d..954e948e 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/gallery/GalleryActivity.kt @@ -18,8 +18,6 @@ */ package com.moez.QKSMS.feature.gallery -import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.ViewModelProviders import android.net.Uri import android.os.Bundle import android.transition.ChangeBounds @@ -27,6 +25,8 @@ import android.transition.ChangeImageTransform import android.transition.TransitionSet import android.view.Menu import android.view.MenuItem +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.ViewModelProviders import com.google.android.exoplayer2.ExoPlayerFactory import com.google.android.exoplayer2.SimpleExoPlayer import com.google.android.exoplayer2.source.ExtractorMediaSource @@ -39,8 +39,8 @@ import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R import com.moez.QKSMS.common.GlideCompletionListener import com.moez.QKSMS.common.base.QkActivity -import com.moez.QKSMS.common.util.GlideApp import com.moez.QKSMS.common.util.extensions.setVisible +import com.moez.QKSMS.util.GlideApp import dagger.android.AndroidInjection import io.reactivex.subjects.PublishSubject import io.reactivex.subjects.Subject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/scheduled/ScheduledMessageAttachmentAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/scheduled/ScheduledMessageAttachmentAdapter.kt index 89d49f2a..a02bcfb6 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/scheduled/ScheduledMessageAttachmentAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/scheduled/ScheduledMessageAttachmentAdapter.kt @@ -6,7 +6,7 @@ import android.view.ViewGroup import com.moez.QKSMS.R import com.moez.QKSMS.common.base.QkAdapter import com.moez.QKSMS.common.base.QkViewHolder -import com.moez.QKSMS.common.util.GlideApp +import com.moez.QKSMS.util.GlideApp import kotlinx.android.synthetic.main.attachment_list_item.view.* import javax.inject.Inject diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/widget/WidgetAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/widget/WidgetAdapter.kt index 431de526..9d48ae82 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/widget/WidgetAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/widget/WidgetAdapter.kt @@ -33,7 +33,6 @@ import android.widget.RemoteViewsService import com.moez.QKSMS.R import com.moez.QKSMS.common.util.Colors import com.moez.QKSMS.common.util.DateFormatter -import com.moez.QKSMS.common.util.GlideApp import com.moez.QKSMS.common.util.extensions.dpToPx import com.moez.QKSMS.common.util.extensions.getColorCompat import com.moez.QKSMS.feature.main.MainActivity @@ -42,6 +41,7 @@ import com.moez.QKSMS.model.Contact import com.moez.QKSMS.model.Conversation import com.moez.QKSMS.model.PhoneNumber import com.moez.QKSMS.repository.ConversationRepository +import com.moez.QKSMS.util.GlideApp import com.moez.QKSMS.util.Preferences import javax.inject.Inject diff --git a/presentation/src/main/java/com/moez/QKSMS/injection/AppComponent.kt b/presentation/src/main/java/com/moez/QKSMS/injection/AppComponent.kt index cb0859fe..7baebbe8 100644 --- a/presentation/src/main/java/com/moez/QKSMS/injection/AppComponent.kt +++ b/presentation/src/main/java/com/moez/QKSMS/injection/AppComponent.kt @@ -20,7 +20,7 @@ package com.moez.QKSMS.injection import com.moez.QKSMS.common.QKApplication import com.moez.QKSMS.common.QkDialog -import com.moez.QKSMS.common.util.ContactImageLoader +import com.moez.QKSMS.util.ContactImageLoader import com.moez.QKSMS.common.widget.AvatarView import com.moez.QKSMS.common.widget.PagerTitleView import com.moez.QKSMS.common.widget.PreferenceView