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