Move the org.signal.glide code inside signal-android into lib/glide.

This commit is contained in:
Alex Hart
2026-01-29 10:59:15 -04:00
committed by Greyson Parrelli
parent 709adf05aa
commit 7bd3482367
92 changed files with 153 additions and 83 deletions

View File

@@ -1,16 +0,0 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.mms
import android.net.Uri
import com.bumptech.glide.load.Key
import java.security.MessageDigest
data class DecryptableUri(val uri: Uri) : Key {
override fun updateDiskCacheKey(messageDigest: MessageDigest) {
messageDigest.update(uri.toString().toByteArray())
}
}

View File

@@ -1,35 +0,0 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.mms
import android.content.Context
import com.bumptech.glide.Priority
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.data.DataFetcher
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<InputStreamFactory> {
override fun getDataClass(): Class<InputStreamFactory> = InputStreamFactory::class.java
override fun getDataSource(): DataSource = DataSource.LOCAL
override fun loadData(priority: Priority, callback: DataFetcher.DataCallback<in InputStreamFactory>) {
try {
callback.onDataReady(InputStreamFactory.build(context, decryptableUri.uri))
} catch (e: Exception) {
callback.onLoadFailed(e)
}
}
override fun cancel() = Unit
override fun cleanup() = Unit
}

View File

@@ -1,45 +0,0 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.mms
import android.content.Context
import com.bumptech.glide.load.Options
import com.bumptech.glide.load.model.ModelLoader
import com.bumptech.glide.load.model.ModelLoaderFactory
import com.bumptech.glide.load.model.MultiModelLoaderFactory
import com.bumptech.glide.signature.ObjectKey
import org.signal.glide.common.io.InputStreamFactory
/**
* A Glide [ModelLoader] that handles conversion from [DecryptableUri] to [InputStreamFactory].
*/
class DecryptableUriStreamLoader(
private val context: Context
) : ModelLoader<DecryptableUri, InputStreamFactory> {
override fun handles(model: DecryptableUri): Boolean = true
override fun buildLoadData(
model: DecryptableUri,
width: Int,
height: Int,
options: Options
): ModelLoader.LoadData<InputStreamFactory> {
val sourceKey = ObjectKey(model)
val dataFetcher = DecryptableUriStreamFetcher(context, model)
return ModelLoader.LoadData(sourceKey, dataFetcher)
}
class Factory(
private val context: Context
) : ModelLoaderFactory<DecryptableUri, InputStreamFactory> {
override fun build(multiFactory: MultiModelLoaderFactory): ModelLoader<DecryptableUri, InputStreamFactory> {
return DecryptableUriStreamLoader(context)
}
override fun teardown() = Unit
}
}