diff --git a/app/src/main/java/org/thoughtcrime/securesms/avatar/picker/AvatarPickerItem.kt b/app/src/main/java/org/thoughtcrime/securesms/avatar/picker/AvatarPickerItem.kt index 9fb5bcbf87..af1dd6a215 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/avatar/picker/AvatarPickerItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/avatar/picker/AvatarPickerItem.kt @@ -9,11 +9,11 @@ import androidx.appcompat.content.res.AppCompatResources import androidx.core.view.setPadding import com.airbnb.lottie.SimpleColorFilter import com.bumptech.glide.Glide +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.Avatar import org.thoughtcrime.securesms.avatar.AvatarRenderer import org.thoughtcrime.securesms.avatar.Avatars -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java index 8aeb727805..3de523f655 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java @@ -64,7 +64,7 @@ import org.thoughtcrime.securesms.database.model.StickerRecord; import org.thoughtcrime.securesms.keyboard.KeyboardPage; import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.mms.QuoteModel; import org.thoughtcrime.securesms.mms.Slide; import org.thoughtcrime.securesms.mms.SlideDeck; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/QuoteView.java b/app/src/main/java/org/thoughtcrime/securesms/components/QuoteView.java index 6d0398b9ce..30fd988a01 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/QuoteView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/QuoteView.java @@ -34,7 +34,7 @@ import org.thoughtcrime.securesms.conversation.MessageStyler; import org.thoughtcrime.securesms.database.model.Mention; import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList; import org.thoughtcrime.securesms.fonts.SignalSymbols; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.mms.QuoteModel; import org.thoughtcrime.securesms.mms.Slide; import org.thoughtcrime.securesms.mms.SlideDeck; @@ -45,7 +45,6 @@ import org.thoughtcrime.securesms.stories.StoryTextPostModel; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.Projection; import org.thoughtcrime.securesms.util.Util; -import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.views.Stub; import java.io.IOException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/SharedContactView.java b/app/src/main/java/org/thoughtcrime/securesms/components/SharedContactView.java index 59494272f4..fcbb6908fd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/SharedContactView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/SharedContactView.java @@ -24,7 +24,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.contactshare.Contact; import org.thoughtcrime.securesms.contactshare.ContactUtil; import org.thoughtcrime.securesms.database.RecipientTable; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.recipients.LiveRecipient; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientForeverObserver; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java b/app/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java index 2ad5c1f68f..73a2e5b89c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java @@ -15,7 +15,6 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.Build; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; @@ -49,7 +48,7 @@ import org.thoughtcrime.securesms.database.AttachmentTable; import org.thoughtcrime.securesms.glide.targets.GlideBitmapListeningTarget; import org.thoughtcrime.securesms.glide.targets.GlideDrawableListeningTarget; import org.thoughtcrime.securesms.keyvalue.SignalStore; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.mms.ImageSlide; import org.thoughtcrime.securesms.mms.PartAuthority; import org.thoughtcrime.securesms.mms.Slide; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java b/app/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java index 9d206e0818..8cd9a99e74 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java @@ -24,7 +24,7 @@ import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.subsampling.AttachmentBitmapDecoder; import org.thoughtcrime.securesms.components.subsampling.AttachmentRegionDecoder; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.mms.PartAuthority; import org.thoughtcrime.securesms.util.ActionRequestListener; import org.thoughtcrime.securesms.util.BitmapUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java b/app/src/main/java/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java index a61865ee91..7f8f6421a6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java @@ -28,7 +28,7 @@ import org.thoughtcrime.securesms.calls.YouAreAlreadyInACallSnackbar; import org.thoughtcrime.securesms.database.RecipientTable; import org.thoughtcrime.securesms.dependencies.AppDependencies; import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.recipients.LiveRecipient; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationStickerSuggestionAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationStickerSuggestionAdapter.java index 3d30e66cf4..0e84b96085 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationStickerSuggestionAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationStickerSuggestionAdapter.java @@ -13,7 +13,7 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.model.StickerRecord; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/PinnedMessagesComponent.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/PinnedMessagesComponent.kt index 9e2b7d65e8..00ff18fb5f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/PinnedMessagesComponent.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/PinnedMessagesComponent.kt @@ -49,6 +49,7 @@ import androidx.core.view.doOnPreDraw import org.signal.core.ui.compose.DropdownMenus import org.signal.core.ui.compose.theme.SignalTheme import org.signal.glide.compose.GlideImage +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.emoji.EmojiTextView import org.thoughtcrime.securesms.conversation.ConversationMessage @@ -56,7 +57,6 @@ import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.fonts.SignalSymbols import org.thoughtcrime.securesms.fonts.SignalSymbols.getSpannedString import org.thoughtcrime.securesms.mms.AudioSlide -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.mms.DocumentSlide import org.thoughtcrime.securesms.mms.ImageSlide import org.thoughtcrime.securesms.mms.StickerSlide diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemThumbnail.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemThumbnail.kt index 1075899e80..ada67d29b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemThumbnail.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemThumbnail.kt @@ -22,10 +22,10 @@ import androidx.core.view.updateLayoutParams import com.bumptech.glide.request.target.CustomViewTarget import com.bumptech.glide.request.transition.Transition import org.signal.core.util.dp +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.conversation.v2.items.V2ConversationItemUtils.isThumbnailAtBottomOfBubble import org.thoughtcrime.securesms.database.model.MmsMessageRecord -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.mms.Slide /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java index 57bac4f214..dd4d8352f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java @@ -73,7 +73,7 @@ import org.thoughtcrime.securesms.database.model.ThreadRecord; import org.thoughtcrime.securesms.database.model.UpdateDescription; import org.thoughtcrime.securesms.fonts.SignalSymbols.Glyph; import org.thoughtcrime.securesms.glide.targets.GlideLiveDataTarget; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.recipients.LiveRecipient; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt index 7a1a95186e..1061e56a51 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt @@ -64,6 +64,7 @@ import org.signal.core.util.select import org.signal.core.util.toInt import org.signal.core.util.update import org.signal.core.util.withinTransaction +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.attachments.ArchivedAttachment import org.thoughtcrime.securesms.attachments.Attachment import org.thoughtcrime.securesms.attachments.AttachmentId @@ -102,7 +103,6 @@ import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob import org.thoughtcrime.securesms.jobs.AttachmentUploadJob import org.thoughtcrime.securesms.jobs.GenerateAudioWaveFormJob import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.mms.MediaStream import org.thoughtcrime.securesms.mms.MmsException import org.thoughtcrime.securesms.mms.PartAuthority diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/StickerTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/StickerTable.kt index 8991c76152..eb31e7133c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/StickerTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/StickerTable.kt @@ -24,6 +24,7 @@ import org.signal.core.util.select import org.signal.core.util.toInt import org.signal.core.util.update import org.signal.core.util.withinTransaction +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.crypto.AttachmentSecret import org.thoughtcrime.securesms.crypto.ModernDecryptingPartInputStream import org.thoughtcrime.securesms.crypto.ModernEncryptingPartOutputStream @@ -31,7 +32,6 @@ import org.thoughtcrime.securesms.database.model.IncomingSticker import org.thoughtcrime.securesms.database.model.StickerPackId import org.thoughtcrime.securesms.database.model.StickerPackRecord import org.thoughtcrime.securesms.database.model.StickerRecord -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.stickers.BlessedPacks import org.thoughtcrime.securesms.stickers.StickerPackInstallEvent import org.thoughtcrime.securesms.util.MediaUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt b/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt index 3fa7591522..5b0c2925eb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt @@ -9,6 +9,7 @@ import org.signal.core.util.concurrent.DeadlockDetector import org.signal.core.util.concurrent.LatestValueObservable import org.signal.core.util.orNull import org.signal.core.util.resettableLazy +import org.signal.glide.SignalGlideDependencies import org.signal.libsignal.net.Network import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations @@ -95,6 +96,8 @@ object AppDependencies { _application = application AppDependencies.provider = provider + + SignalGlideDependencies.init(application, SignalGlideDependenciesProvider) } @JvmStatic diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalGlideDependenciesProvider.kt b/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalGlideDependenciesProvider.kt new file mode 100644 index 0000000000..34859a1447 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/SignalGlideDependenciesProvider.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2026 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.dependencies + +import android.net.Uri +import org.signal.glide.SignalGlideDependencies +import org.signal.glide.common.io.InputStreamFactory +import org.thoughtcrime.securesms.glide.DecryptableStreamFactory + +object SignalGlideDependenciesProvider : SignalGlideDependencies.Provider { + override fun getUriInputStreamFactory(uri: Uri): InputStreamFactory { + return DecryptableStreamFactory(uri) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/glide/DecryptableStreamFactory.kt b/app/src/main/java/org/thoughtcrime/securesms/glide/DecryptableStreamFactory.kt new file mode 100644 index 0000000000..c4e0a16112 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/glide/DecryptableStreamFactory.kt @@ -0,0 +1,32 @@ +/* + * Copyright 2026 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.glide + +import android.net.Uri +import org.signal.core.util.logging.Log +import org.signal.glide.common.io.InputStreamFactory +import org.thoughtcrime.securesms.dependencies.AppDependencies +import java.io.InputStream + +/** + * A factory that creates a new [InputStream] for the given [Uri] each time [create] is called. + */ +class DecryptableStreamFactory( + private val uri: Uri +) : InputStreamFactory { + companion object { + private val TAG = Log.tag(DecryptableStreamFactory::class) + } + + override fun create(): InputStream { + return try { + DecryptableStreamLocalUriFetcher(AppDependencies.application, uri).loadResource(uri, AppDependencies.application.contentResolver) + } catch (e: Exception) { + Log.w(TAG, "Error creating input stream for URI.", e) + throw e + } + } +} diff --git a/app/src/main/java/org/signal/glide/common/io/DecryptableStreamLocalUriFetcher.java b/app/src/main/java/org/thoughtcrime/securesms/glide/DecryptableStreamLocalUriFetcher.java similarity index 96% rename from app/src/main/java/org/signal/glide/common/io/DecryptableStreamLocalUriFetcher.java rename to app/src/main/java/org/thoughtcrime/securesms/glide/DecryptableStreamLocalUriFetcher.java index 93225556b3..ce428614ef 100644 --- a/app/src/main/java/org/signal/glide/common/io/DecryptableStreamLocalUriFetcher.java +++ b/app/src/main/java/org/thoughtcrime/securesms/glide/DecryptableStreamLocalUriFetcher.java @@ -1,9 +1,9 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.signal.glide.common.io; +package org.thoughtcrime.securesms.glide; import android.content.ContentResolver; import android.content.Context; @@ -14,6 +14,7 @@ import kotlin.Pair; import com.bumptech.glide.load.data.StreamLocalUriFetcher; import org.signal.core.util.logging.Log; +import org.signal.glide.common.io.GlideStreamConfig; import org.thoughtcrime.securesms.attachments.AttachmentId; import org.thoughtcrime.securesms.mms.PartAuthority; import org.thoughtcrime.securesms.providers.BlobProvider; diff --git a/app/src/main/java/org/thoughtcrime/securesms/glide/SignalGlideComponents.java b/app/src/main/java/org/thoughtcrime/securesms/glide/SignalGlideComponents.java index e68c0a60d9..cdb0de037e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/glide/SignalGlideComponents.java +++ b/app/src/main/java/org/thoughtcrime/securesms/glide/SignalGlideComponents.java @@ -42,8 +42,8 @@ import org.thoughtcrime.securesms.glide.cache.StreamBitmapDecoder; import org.thoughtcrime.securesms.glide.cache.StreamFactoryApngDecoder; import org.thoughtcrime.securesms.glide.cache.StreamFactoryGifDecoder; import org.thoughtcrime.securesms.glide.cache.WebpSanDecoder; -import org.thoughtcrime.securesms.mms.DecryptableUri; -import org.thoughtcrime.securesms.mms.DecryptableUriStreamLoader; +import org.signal.glide.decryptableuri.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUriStreamLoader; import org.thoughtcrime.securesms.mms.RegisterGlideComponents; import org.thoughtcrime.securesms.mms.SignalGlideModule; import org.thoughtcrime.securesms.stickers.StickerRemoteUri; diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java index 2b144fcf9a..7a9f51fbd0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java @@ -39,7 +39,7 @@ import org.thoughtcrime.securesms.components.settings.app.privacy.expire.ExpireT import org.thoughtcrime.securesms.groups.ui.GroupMemberListView; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.signal.core.models.media.Media; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt index 8f0f4ff568..037d75ec3f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt @@ -6,6 +6,7 @@ package org.thoughtcrime.securesms.jobs import org.signal.core.util.logging.Log +import org.signal.glide.decryptableuri.DecryptableUri import org.signal.protos.resumableuploads.ResumableUpload import org.thoughtcrime.securesms.attachments.AttachmentId import org.thoughtcrime.securesms.attachments.DatabaseAttachment @@ -23,7 +24,6 @@ import org.thoughtcrime.securesms.jobmanager.impl.NoRemoteArchiveGarbageCollecti import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec import org.thoughtcrime.securesms.jobs.protos.ArchiveThumbnailUploadJobData import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.net.SignalNetwork import org.thoughtcrime.securesms.util.ImageCompressionUtil import org.thoughtcrime.securesms.util.MediaUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java index 59c51417a7..ae75946b61 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java @@ -27,7 +27,7 @@ import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JsonJobData; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.mms.MediaConstraints; import org.thoughtcrime.securesms.mms.MediaStream; import org.thoughtcrime.securesms.mms.MmsException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/QuoteThumbnailBackfillJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/QuoteThumbnailBackfillJob.kt index 440789037a..a0174c1ac2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/QuoteThumbnailBackfillJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/QuoteThumbnailBackfillJob.kt @@ -13,6 +13,7 @@ import org.signal.core.util.requireNonNullString import org.signal.core.util.requireString import org.signal.core.util.select import org.signal.core.util.update +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.attachments.AttachmentId import org.thoughtcrime.securesms.database.AttachmentTable import org.thoughtcrime.securesms.database.AttachmentTable.Companion.CONTENT_TYPE @@ -28,7 +29,6 @@ import org.thoughtcrime.securesms.database.AttachmentTable.Companion.TABLE_NAME import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobmanager.Job -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.mms.PartAuthority /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/QuoteThumbnailReconstructionJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/QuoteThumbnailReconstructionJob.kt index 47fd5ea75f..c6fd30461c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/QuoteThumbnailReconstructionJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/QuoteThumbnailReconstructionJob.kt @@ -6,12 +6,12 @@ package org.thoughtcrime.securesms.jobs import org.signal.core.util.logging.Log +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.attachments.DatabaseAttachment import org.thoughtcrime.securesms.database.AttachmentTable import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobmanager.Job -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.RemoteConfig import org.thoughtcrime.securesms.util.getQuote diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/KeyboardStickerListAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/KeyboardStickerListAdapter.kt index 6daa30f153..c494b8c5f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/KeyboardStickerListAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/KeyboardStickerListAdapter.kt @@ -7,9 +7,9 @@ import android.widget.TextView import com.bumptech.glide.RequestManager import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions import org.signal.glide.apng.ApngOptions +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.database.model.StickerRecord -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/KeyboardStickerPackListAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/KeyboardStickerPackListAdapter.kt index cbe96e70f4..120323e51f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/KeyboardStickerPackListAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/KeyboardStickerPackListAdapter.kt @@ -6,8 +6,8 @@ import android.widget.ImageView import androidx.core.widget.ImageViewCompat import com.bumptech.glide.RequestManager import org.signal.glide.apng.ApngOptions +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/Camera1Fragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/Camera1Fragment.java index 817136fba9..494751eef5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/Camera1Fragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/Camera1Fragment.java @@ -49,7 +49,7 @@ import org.thoughtcrime.securesms.animation.AnimationCompleteListener; import org.thoughtcrime.securesms.mediasend.camerax.CameraXModelBlocklist; import org.thoughtcrime.securesms.mediasend.v2.MediaAnimations; import org.thoughtcrime.securesms.mediasend.v2.MediaCountIndicatorButton; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.ViewUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendGifFragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendGifFragment.java index dcd04b0ba5..b050bb3987 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendGifFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendGifFragment.java @@ -14,7 +14,7 @@ import androidx.fragment.app.Fragment; import com.bumptech.glide.Glide; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; public class MediaSendGifFragment extends Fragment implements MediaSendPageFragment { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt index 7c59dc06d6..58537af273 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt @@ -18,9 +18,9 @@ import org.signal.core.models.media.Media import org.signal.core.models.media.MediaFolder import org.signal.core.util.DimensionUnit import org.signal.core.util.logging.Log +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.mediasend.v2.review.MediaGalleryGridItemTouchListener -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.mms.PartAuthority import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectedItem.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectedItem.kt index d46d01098c..54899f47a6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectedItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectedItem.kt @@ -4,8 +4,8 @@ import android.view.View import android.widget.ImageView import com.bumptech.glide.Glide import org.signal.core.models.media.Media +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewSelectedItem.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewSelectedItem.kt index 3c953bd458..8927f78d9b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewSelectedItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewSelectedItem.kt @@ -4,8 +4,8 @@ import android.view.View import android.widget.ImageView import com.bumptech.glide.Glide import org.signal.core.models.media.Media +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/stories/StoriesMultiselectForwardActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/stories/StoriesMultiselectForwardActivity.kt index b3c72d6ff6..c90baa5fbd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/stories/StoriesMultiselectForwardActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/stories/StoriesMultiselectForwardActivity.kt @@ -12,13 +12,13 @@ import androidx.fragment.app.FragmentManager import com.bumptech.glide.Glide import kotlinx.parcelize.Parcelize import org.signal.core.util.getParcelableArrayListExtraCompat +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.contacts.paged.ContactSearchState import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardActivity import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragmentArgs -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.stories.Stories import org.thoughtcrime.securesms.util.visible diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationExtensions.kt index ae7da49199..67dae1f117 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationExtensions.kt @@ -11,13 +11,13 @@ import com.bumptech.glide.Glide import com.bumptech.glide.load.MultiTransformation import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.resource.bitmap.CircleCrop +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatarDrawable import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto import org.thoughtcrime.securesms.conversation.colors.AvatarGradientColors -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.notifications.NotificationIds import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.util.BitmapUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationThumbnails.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationThumbnails.kt index 35bebc1974..8f40776566 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationThumbnails.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationThumbnails.kt @@ -6,9 +6,9 @@ import android.os.Build import org.signal.core.util.asListContains import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.logging.Log +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.database.model.MessageId import org.thoughtcrime.securesms.dependencies.AppDependencies -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.mms.Slide import org.thoughtcrime.securesms.providers.BlobProvider import org.thoughtcrime.securesms.util.BitmapDecodingException diff --git a/app/src/main/java/org/thoughtcrime/securesms/revealable/ViewOnceMessageActivity.java b/app/src/main/java/org/thoughtcrime/securesms/revealable/ViewOnceMessageActivity.java index 3a8ae18966..ae3fca006c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/revealable/ViewOnceMessageActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/revealable/ViewOnceMessageActivity.java @@ -21,7 +21,7 @@ import com.bumptech.glide.Glide; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.PassphraseRequiredActivity; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.mms.PartAuthority; import org.thoughtcrime.securesms.mms.VideoSlide; import org.thoughtcrime.securesms.providers.BlobProvider; diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java b/app/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java index 32c69af287..0ed7eb6b8f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java +++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java @@ -32,7 +32,7 @@ import org.signal.imageeditor.core.RendererContext; import org.signal.imageeditor.core.SelectableRenderer; import org.signal.imageeditor.core.model.EditorElement; import org.signal.imageeditor.core.model.EditorModel; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.util.BitmapUtil; import java.util.concurrent.ExecutionException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/manage/StickerPackListItems.kt b/app/src/main/java/org/thoughtcrime/securesms/stickers/manage/StickerPackListItems.kt index 45cd5f9bae..777cc576e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/manage/StickerPackListItems.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/manage/StickerPackListItems.kt @@ -38,11 +38,11 @@ import org.signal.core.ui.compose.SignalIcons import org.signal.core.ui.compose.theme.SignalTheme import org.signal.core.util.nullIfBlank import org.signal.glide.compose.GlideImage +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.compose.RoundCheckbox import org.thoughtcrime.securesms.components.transfercontrols.TransferProgressIndicator import org.thoughtcrime.securesms.components.transfercontrols.TransferProgressState -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.stickers.StickerPreviewDataFactory import org.thoughtcrime.securesms.stickers.manage.AvailableStickerPack.DownloadStatus import org.thoughtcrime.securesms.util.DeviceProperties diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewActivity.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewActivity.java index 934b667c79..cda73256f3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewActivity.java @@ -25,7 +25,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragment; import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragmentArgs; import org.signal.glide.apng.ApngOptions; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.sharing.MultiShareArgs; import org.thoughtcrime.securesms.stickers.StickerManifest; import org.thoughtcrime.securesms.stickers.StickerManifest.Sticker; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewActivityV2.kt index 81c0232b78..797b291a99 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewActivityV2.kt @@ -56,6 +56,7 @@ import org.signal.core.ui.compose.SignalIcons import org.signal.core.util.orNull import org.signal.core.util.toOptional import org.signal.glide.compose.GlideImage +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.PassphraseRequiredActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.compose.SignalTheme @@ -64,7 +65,6 @@ import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectFor import org.thoughtcrime.securesms.database.model.StickerPackId import org.thoughtcrime.securesms.database.model.StickerPackKey import org.thoughtcrime.securesms.database.model.StickerPackParams -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.sharing.MultiShareArgs import org.thoughtcrime.securesms.stickers.BlessedPacks import org.thoughtcrime.securesms.stickers.StickerManifest diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewAdapter.java index 71a4f1a0a8..1a33e44dbc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/preview/StickerPackPreviewAdapter.java @@ -14,7 +14,7 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import org.thoughtcrime.securesms.R; import org.signal.glide.apng.ApngOptions; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.stickers.StickerManifest; import org.thoughtcrime.securesms.stickers.StickerRemoteUri; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostModel.kt index af3cb89a06..e251313a18 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryTextPostModel.kt @@ -19,6 +19,7 @@ import com.bumptech.glide.load.resource.SimpleResource import org.signal.core.util.Base64 import org.signal.core.util.concurrent.safeBlockingGet import org.signal.core.util.readParcelableCompat +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.conversation.colors.ChatColors import org.thoughtcrime.securesms.database.SignalDatabase @@ -30,7 +31,6 @@ import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.fonts.TextFont import org.thoughtcrime.securesms.fonts.TextToScript import org.thoughtcrime.securesms.fonts.TypefaceCache -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.util.ParcelUtil import java.io.IOException diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingItem.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingItem.kt index 8dae6a11f7..ca271ab0fa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingItem.kt @@ -14,11 +14,11 @@ import com.bumptech.glide.load.engine.GlideException import com.bumptech.glide.request.RequestListener import com.bumptech.glide.request.target.Target import org.signal.core.util.logging.Log +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.view.AvatarView import org.thoughtcrime.securesms.badges.BadgeImageView import org.thoughtcrime.securesms.database.model.MmsMessageRecord -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.stories.StoryTextPostModel import org.thoughtcrime.securesms.stories.dialogs.StoryContextMenu diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt index 23eee147f3..1040eabd08 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/my/MyStoriesItem.kt @@ -11,13 +11,13 @@ import com.bumptech.glide.load.engine.GlideException import com.bumptech.glide.request.RequestListener import com.bumptech.glide.request.target.Target import org.signal.core.util.DimensionUnit +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.menu.ActionItem import org.thoughtcrime.securesms.components.menu.SignalContextMenu import org.thoughtcrime.securesms.components.settings.PreferenceModel import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.stories.StoryTextPostModel import org.thoughtcrime.securesms.util.DateUtils import org.thoughtcrime.securesms.util.DebouncedOnClickListener diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryCache.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryCache.kt index 451d91de6e..75a77357a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryCache.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryCache.kt @@ -7,9 +7,9 @@ import com.bumptech.glide.RequestManager import com.bumptech.glide.request.target.CustomTarget import com.bumptech.glide.request.transition.Transition import org.signal.core.util.logging.Log +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.attachments.Attachment import org.thoughtcrime.securesms.database.AttachmentTable -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.util.MediaUtil /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/post/StoryImageLoader.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/post/StoryImageLoader.kt index 2ec20d639e..443a429118 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/post/StoryImageLoader.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/post/StoryImageLoader.kt @@ -10,7 +10,7 @@ import com.bumptech.glide.load.engine.GlideException import com.bumptech.glide.request.RequestListener import com.bumptech.glide.request.target.Target import org.signal.core.util.logging.Log -import org.thoughtcrime.securesms.mms.DecryptableUri +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.stories.viewer.page.StoryCache import org.thoughtcrime.securesms.stories.viewer.page.StoryDisplay diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/StoriesSharedElementCrossFaderView.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/StoriesSharedElementCrossFaderView.kt index d4341fba8a..0f2640bba4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/StoriesSharedElementCrossFaderView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/StoriesSharedElementCrossFaderView.kt @@ -13,11 +13,11 @@ import com.bumptech.glide.request.RequestListener import com.bumptech.glide.request.target.Target import com.google.android.material.card.MaterialCardView import org.signal.core.util.DimensionUnit +import org.signal.glide.decryptableuri.DecryptableUri import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.animation.transitions.CrossfaderTransition import org.thoughtcrime.securesms.blurhash.BlurHash import org.thoughtcrime.securesms.database.model.MmsMessageRecord -import org.thoughtcrime.securesms.mms.DecryptableUri import org.thoughtcrime.securesms.stories.StoryTextPostModel import kotlin.reflect.KProperty diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java index 8c4ffd46ca..c8101fcd0e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java @@ -32,7 +32,7 @@ import org.thoughtcrime.securesms.attachments.AttachmentId; import org.thoughtcrime.securesms.database.SignalDatabase; import org.signal.core.models.media.Media; import org.thoughtcrime.securesms.mms.AudioSlide; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.mms.DocumentSlide; import org.thoughtcrime.securesms.mms.GifSlide; import org.thoughtcrime.securesms.mms.ImageSlide; diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/UriChatWallpaper.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/UriChatWallpaper.java index 091085a2a2..3590f0db47 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/UriChatWallpaper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/UriChatWallpaper.java @@ -20,7 +20,7 @@ import com.bumptech.glide.request.target.Target; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.model.databaseprotos.Wallpaper; -import org.thoughtcrime.securesms.mms.DecryptableUri; +import org.signal.glide.decryptableuri.DecryptableUri; import java.util.Objects; import java.util.concurrent.ExecutionException; diff --git a/app/src/main/java/org/signal/glide/Log.java b/lib/glide/src/main/java/org/signal/glide/Log.java similarity index 100% rename from app/src/main/java/org/signal/glide/Log.java rename to lib/glide/src/main/java/org/signal/glide/Log.java diff --git a/app/src/main/java/org/signal/glide/SignalGlideCodecs.java b/lib/glide/src/main/java/org/signal/glide/SignalGlideCodecs.java similarity index 100% rename from app/src/main/java/org/signal/glide/SignalGlideCodecs.java rename to lib/glide/src/main/java/org/signal/glide/SignalGlideCodecs.java diff --git a/lib/glide/src/main/java/org/signal/glide/SignalGlideDependencies.kt b/lib/glide/src/main/java/org/signal/glide/SignalGlideDependencies.kt new file mode 100644 index 0000000000..e97280abbc --- /dev/null +++ b/lib/glide/src/main/java/org/signal/glide/SignalGlideDependencies.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2026 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.signal.glide + +import android.app.Application +import android.net.Uri +import org.signal.glide.common.io.InputStreamFactory + +/** + * Dependencies for the Glide library module, provided by the host application. + */ +object SignalGlideDependencies { + private lateinit var _application: Application + private lateinit var _provider: Provider + + @JvmStatic + @Synchronized + fun init(application: Application, provider: Provider) { + if (this::_application.isInitialized || this::_provider.isInitialized) { + return + } + + _application = application + _provider = provider + } + + val application: Application + get() = _application + + fun getUriInputStreamFactory(uri: Uri): InputStreamFactory = _provider.getUriInputStreamFactory(uri) + + interface Provider { + /** + * A factory which can create an [java.io.InputStream] from a given [Uri] + */ + fun getUriInputStreamFactory(uri: Uri): InputStreamFactory + } +} \ No newline at end of file diff --git a/app/src/main/java/org/signal/glide/common/FrameAnimationDrawable.java b/lib/glide/src/main/java/org/signal/glide/common/FrameAnimationDrawable.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/FrameAnimationDrawable.java rename to lib/glide/src/main/java/org/signal/glide/common/FrameAnimationDrawable.java diff --git a/app/src/main/java/org/signal/glide/common/decode/Frame.java b/lib/glide/src/main/java/org/signal/glide/common/decode/Frame.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/decode/Frame.java rename to lib/glide/src/main/java/org/signal/glide/common/decode/Frame.java diff --git a/app/src/main/java/org/signal/glide/common/decode/FrameSeqDecoder.java b/lib/glide/src/main/java/org/signal/glide/common/decode/FrameSeqDecoder.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/decode/FrameSeqDecoder.java rename to lib/glide/src/main/java/org/signal/glide/common/decode/FrameSeqDecoder.java diff --git a/app/src/main/java/org/signal/glide/common/executor/FrameDecoderExecutor.java b/lib/glide/src/main/java/org/signal/glide/common/executor/FrameDecoderExecutor.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/executor/FrameDecoderExecutor.java rename to lib/glide/src/main/java/org/signal/glide/common/executor/FrameDecoderExecutor.java diff --git a/app/src/main/java/org/signal/glide/common/io/ByteBufferReader.java b/lib/glide/src/main/java/org/signal/glide/common/io/ByteBufferReader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/io/ByteBufferReader.java rename to lib/glide/src/main/java/org/signal/glide/common/io/ByteBufferReader.java diff --git a/app/src/main/java/org/signal/glide/common/io/ByteBufferWriter.java b/lib/glide/src/main/java/org/signal/glide/common/io/ByteBufferWriter.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/io/ByteBufferWriter.java rename to lib/glide/src/main/java/org/signal/glide/common/io/ByteBufferWriter.java diff --git a/app/src/main/java/org/signal/glide/common/io/FileReader.java b/lib/glide/src/main/java/org/signal/glide/common/io/FileReader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/io/FileReader.java rename to lib/glide/src/main/java/org/signal/glide/common/io/FileReader.java diff --git a/app/src/main/java/org/signal/glide/common/io/FilterReader.java b/lib/glide/src/main/java/org/signal/glide/common/io/FilterReader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/io/FilterReader.java rename to lib/glide/src/main/java/org/signal/glide/common/io/FilterReader.java diff --git a/app/src/main/java/org/signal/glide/common/io/GlideStreamConfig.kt b/lib/glide/src/main/java/org/signal/glide/common/io/GlideStreamConfig.kt similarity index 93% rename from app/src/main/java/org/signal/glide/common/io/GlideStreamConfig.kt rename to lib/glide/src/main/java/org/signal/glide/common/io/GlideStreamConfig.kt index 523e03f254..8b9c3f2c62 100644 --- a/app/src/main/java/org/signal/glide/common/io/GlideStreamConfig.kt +++ b/lib/glide/src/main/java/org/signal/glide/common/io/GlideStreamConfig.kt @@ -11,9 +11,9 @@ import org.signal.core.util.ByteSize import org.signal.core.util.bytes import org.signal.core.util.gibiBytes import org.signal.core.util.mebiBytes +import org.signal.glide.SignalGlideDependencies import org.signal.glide.common.io.GlideStreamConfig.MAX_MARK_LIMIT import org.signal.glide.common.io.GlideStreamConfig.MIN_MARK_LIMIT -import org.thoughtcrime.securesms.dependencies.AppDependencies object GlideStreamConfig { private val MIN_MARK_LIMIT: ByteSize = 5.mebiBytes // Glide default @@ -23,7 +23,7 @@ object GlideStreamConfig { private val HIGH_MEMORY_THRESHOLD: ByteSize = 12.gibiBytes @JvmStatic - val markReadLimitBytes: Int by lazy { calculateScaledMarkLimit(context = AppDependencies.application).inWholeBytes.toInt() } + val markReadLimitBytes: Int by lazy { calculateScaledMarkLimit(context = SignalGlideDependencies.application).inWholeBytes.toInt() } /** * Calculates buffer size, scaling proportionally from [MIN_MARK_LIMIT] to [MAX_MARK_LIMIT] based on how much memory the device has. diff --git a/app/src/main/java/org/signal/glide/common/io/InputStreamFactory.kt b/lib/glide/src/main/java/org/signal/glide/common/io/InputStreamFactory.kt similarity index 63% rename from app/src/main/java/org/signal/glide/common/io/InputStreamFactory.kt rename to lib/glide/src/main/java/org/signal/glide/common/io/InputStreamFactory.kt index f619719a2b..4b2ec9d0f9 100644 --- a/app/src/main/java/org/signal/glide/common/io/InputStreamFactory.kt +++ b/lib/glide/src/main/java/org/signal/glide/common/io/InputStreamFactory.kt @@ -5,11 +5,11 @@ package org.signal.glide.common.io -import android.content.Context import android.net.Uri import com.bumptech.glide.load.engine.bitmap_recycle.ArrayPool import com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream import org.signal.core.util.logging.Log +import org.signal.glide.SignalGlideDependencies import java.io.File import java.io.FileInputStream import java.io.InputStream @@ -17,7 +17,7 @@ import java.io.InputStream interface InputStreamFactory { companion object { @JvmStatic - fun build(context: Context, uri: Uri): InputStreamFactory = UriInputStreamFactory(context, uri) + fun build(uri: Uri): InputStreamFactory = SignalGlideDependencies.getUriInputStreamFactory(uri) @JvmStatic fun build(file: File): InputStreamFactory = FileInputStreamFactory(file) @@ -27,27 +27,6 @@ interface InputStreamFactory { fun createRecyclable(byteArrayPool: ArrayPool): InputStream = RecyclableBufferedInputStream(create(), byteArrayPool) } -/** - * A factory that creates a new [InputStream] for the given [Uri] each time [create] is called. - */ -class UriInputStreamFactory( - private val context: Context, - private val uri: Uri -) : InputStreamFactory { - companion object { - private val TAG = Log.tag(UriInputStreamFactory::class) - } - - override fun create(): InputStream { - return try { - DecryptableStreamLocalUriFetcher(context, uri).loadResource(uri, context.contentResolver) - } catch (e: Exception) { - Log.w(TAG, "Error creating input stream for URI.", e) - throw e - } - } -} - /** * A factory that creates a new [InputStream] for the given [File] each time [create] is called. */ diff --git a/app/src/main/java/org/signal/glide/common/io/InputStreamRewinder.java b/lib/glide/src/main/java/org/signal/glide/common/io/InputStreamRewinder.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/io/InputStreamRewinder.java rename to lib/glide/src/main/java/org/signal/glide/common/io/InputStreamRewinder.java diff --git a/app/src/main/java/org/signal/glide/common/io/Reader.java b/lib/glide/src/main/java/org/signal/glide/common/io/Reader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/io/Reader.java rename to lib/glide/src/main/java/org/signal/glide/common/io/Reader.java diff --git a/app/src/main/java/org/signal/glide/common/io/StreamReader.java b/lib/glide/src/main/java/org/signal/glide/common/io/StreamReader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/io/StreamReader.java rename to lib/glide/src/main/java/org/signal/glide/common/io/StreamReader.java diff --git a/app/src/main/java/org/signal/glide/common/io/Writer.java b/lib/glide/src/main/java/org/signal/glide/common/io/Writer.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/io/Writer.java rename to lib/glide/src/main/java/org/signal/glide/common/io/Writer.java diff --git a/app/src/main/java/org/signal/glide/common/loader/AssetStreamLoader.java b/lib/glide/src/main/java/org/signal/glide/common/loader/AssetStreamLoader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/loader/AssetStreamLoader.java rename to lib/glide/src/main/java/org/signal/glide/common/loader/AssetStreamLoader.java diff --git a/app/src/main/java/org/signal/glide/common/loader/ByteBufferLoader.java b/lib/glide/src/main/java/org/signal/glide/common/loader/ByteBufferLoader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/loader/ByteBufferLoader.java rename to lib/glide/src/main/java/org/signal/glide/common/loader/ByteBufferLoader.java diff --git a/app/src/main/java/org/signal/glide/common/loader/FileLoader.java b/lib/glide/src/main/java/org/signal/glide/common/loader/FileLoader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/loader/FileLoader.java rename to lib/glide/src/main/java/org/signal/glide/common/loader/FileLoader.java diff --git a/app/src/main/java/org/signal/glide/common/loader/Loader.java b/lib/glide/src/main/java/org/signal/glide/common/loader/Loader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/loader/Loader.java rename to lib/glide/src/main/java/org/signal/glide/common/loader/Loader.java diff --git a/app/src/main/java/org/signal/glide/common/loader/ResourceStreamLoader.java b/lib/glide/src/main/java/org/signal/glide/common/loader/ResourceStreamLoader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/loader/ResourceStreamLoader.java rename to lib/glide/src/main/java/org/signal/glide/common/loader/ResourceStreamLoader.java diff --git a/app/src/main/java/org/signal/glide/common/loader/StreamLoader.java b/lib/glide/src/main/java/org/signal/glide/common/loader/StreamLoader.java similarity index 100% rename from app/src/main/java/org/signal/glide/common/loader/StreamLoader.java rename to lib/glide/src/main/java/org/signal/glide/common/loader/StreamLoader.java diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUri.kt b/lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUri.kt similarity index 90% rename from app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUri.kt rename to lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUri.kt index eb72437790..86ce1f6c37 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUri.kt +++ b/lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUri.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.mms +package org.signal.glide.decryptableuri import android.net.Uri import com.bumptech.glide.load.Key diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUriStreamFetcher.kt b/lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUriStreamFetcher.kt similarity index 82% rename from app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUriStreamFetcher.kt rename to lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUriStreamFetcher.kt index 4a82d27c3c..31cfde83d6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUriStreamFetcher.kt +++ b/lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUriStreamFetcher.kt @@ -3,9 +3,8 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.mms +package org.signal.glide.decryptableuri -import android.content.Context import com.bumptech.glide.Priority import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.data.DataFetcher @@ -15,7 +14,6 @@ import org.signal.glide.common.io.InputStreamFactory * A Glide [DataFetcher] that retrieves an [InputStreamFactory] for a [DecryptableUri]. */ class DecryptableUriStreamFetcher( - private val context: Context, private val decryptableUri: DecryptableUri ) : DataFetcher { @@ -24,7 +22,7 @@ class DecryptableUriStreamFetcher( override fun loadData(priority: Priority, callback: DataFetcher.DataCallback) { try { - callback.onDataReady(InputStreamFactory.build(context, decryptableUri.uri)) + callback.onDataReady(InputStreamFactory.build(decryptableUri.uri)) } catch (e: Exception) { callback.onLoadFailed(e) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUriStreamLoader.kt b/lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUriStreamLoader.kt similarity index 89% rename from app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUriStreamLoader.kt rename to lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUriStreamLoader.kt index 0e04a663cc..1f90057982 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/DecryptableUriStreamLoader.kt +++ b/lib/glide/src/main/java/org/signal/glide/decryptableuri/DecryptableUriStreamLoader.kt @@ -1,9 +1,9 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.mms +package org.signal.glide.decryptableuri import android.content.Context import com.bumptech.glide.load.Options @@ -29,7 +29,7 @@ class DecryptableUriStreamLoader( options: Options ): ModelLoader.LoadData { val sourceKey = ObjectKey(model) - val dataFetcher = DecryptableUriStreamFetcher(context, model) + val dataFetcher = DecryptableUriStreamFetcher(model) return ModelLoader.LoadData(sourceKey, dataFetcher) } diff --git a/app/src/main/java/org/signal/glide/load/ImageHeaderParserUtils.kt b/lib/glide/src/main/java/org/signal/glide/load/ImageHeaderParserUtils.kt similarity index 96% rename from app/src/main/java/org/signal/glide/load/ImageHeaderParserUtils.kt rename to lib/glide/src/main/java/org/signal/glide/load/ImageHeaderParserUtils.kt index 1e4f28978c..e7788df2e8 100644 --- a/app/src/main/java/org/signal/glide/load/ImageHeaderParserUtils.kt +++ b/lib/glide/src/main/java/org/signal/glide/load/ImageHeaderParserUtils.kt @@ -12,7 +12,6 @@ import com.bumptech.glide.load.engine.bitmap_recycle.ArrayPool import com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream import org.signal.glide.common.io.GlideStreamConfig import org.signal.glide.common.io.InputStreamFactory -import org.thoughtcrime.securesms.util.BitmapUtil import java.io.IOException import java.io.InputStream import java.nio.ByteBuffer @@ -172,7 +171,9 @@ object ImageHeaderParserUtils { ) if (orientationFromParsers != ImageHeaderParser.UNKNOWN_ORIENTATION) return orientationFromParsers - val orientationFromExif = BitmapUtil.getExifOrientation(ExifInterface(inputStreamFactory.createRecyclable(byteArrayPool))) + val orientationFromExif = ExifInterface(inputStreamFactory.createRecyclable(byteArrayPool)) + .getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED) + if (orientationFromExif != ImageHeaderParser.UNKNOWN_ORIENTATION) return orientationFromExif return ImageHeaderParser.UNKNOWN_ORIENTATION diff --git a/app/src/main/java/org/signal/glide/load/SignalDownsampleStrategy.kt b/lib/glide/src/main/java/org/signal/glide/load/SignalDownsampleStrategy.kt similarity index 100% rename from app/src/main/java/org/signal/glide/load/SignalDownsampleStrategy.kt rename to lib/glide/src/main/java/org/signal/glide/load/SignalDownsampleStrategy.kt diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/APNGDrawable.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/APNGDrawable.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/APNGDrawable.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/APNGDrawable.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/ACTLChunk.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/ACTLChunk.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/ACTLChunk.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/ACTLChunk.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/APNGDecoder.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/APNGDecoder.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/APNGDecoder.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/APNGDecoder.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/APNGFrame.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/APNGFrame.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/APNGFrame.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/APNGFrame.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/APNGParser.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/APNGParser.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/APNGParser.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/APNGParser.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/Chunk.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/Chunk.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/Chunk.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/Chunk.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/FCTLChunk.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/FCTLChunk.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/FCTLChunk.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/FCTLChunk.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/FDATChunk.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/FDATChunk.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/FDATChunk.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/FDATChunk.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/IDATChunk.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/IDATChunk.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/IDATChunk.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/IDATChunk.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/IENDChunk.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/IENDChunk.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/IENDChunk.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/IENDChunk.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/IHDRChunk.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/IHDRChunk.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/IHDRChunk.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/IHDRChunk.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/decode/StillFrame.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/StillFrame.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/decode/StillFrame.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/decode/StillFrame.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/io/APNGReader.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/io/APNGReader.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/io/APNGReader.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/io/APNGReader.java diff --git a/app/src/main/java/org/signal/glide/load/resource/apng/io/APNGWriter.java b/lib/glide/src/main/java/org/signal/glide/load/resource/apng/io/APNGWriter.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/apng/io/APNGWriter.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/apng/io/APNGWriter.java diff --git a/app/src/main/java/org/signal/glide/load/resource/bitmap/Downsampler.java b/lib/glide/src/main/java/org/signal/glide/load/resource/bitmap/Downsampler.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/bitmap/Downsampler.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/bitmap/Downsampler.java diff --git a/app/src/main/java/org/signal/glide/load/resource/bitmap/HardwareConfigState.java b/lib/glide/src/main/java/org/signal/glide/load/resource/bitmap/HardwareConfigState.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/bitmap/HardwareConfigState.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/bitmap/HardwareConfigState.java diff --git a/app/src/main/java/org/signal/glide/load/resource/bitmap/ImageReader.java b/lib/glide/src/main/java/org/signal/glide/load/resource/bitmap/ImageReader.java similarity index 100% rename from app/src/main/java/org/signal/glide/load/resource/bitmap/ImageReader.java rename to lib/glide/src/main/java/org/signal/glide/load/resource/bitmap/ImageReader.java