Fix external share when it contains an image and text.

This commit is contained in:
Cody Henthorne
2023-05-31 16:11:31 -04:00
parent f56b5d58c6
commit bba8b8be56
4 changed files with 11 additions and 5 deletions

View File

@@ -21,10 +21,11 @@ sealed class ResolvedShareData {
data class ExternalUri(
val uri: Uri,
val mimeType: String,
val text: CharSequence?,
override val isMmsOrSmsSupported: Boolean
) : ResolvedShareData() {
override fun toMultiShareArgs(): MultiShareArgs {
return MultiShareArgs.Builder(setOf()).withDataUri(uri).withDataType(mimeType).build()
return MultiShareArgs.Builder(setOf()).withDataUri(uri).withDataType(mimeType).withDraftText(text?.toString()).build()
}
}

View File

@@ -170,9 +170,13 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
} ?: Result.failure(IntentError.SEND_MULTIPLE_STREAM)
}
intent.action == Intent.ACTION_SEND && intent.hasExtra(Intent.EXTRA_STREAM) -> {
intent.getParcelableExtraCompat(Intent.EXTRA_STREAM, Uri::class.java)?.let {
Result.success(UnresolvedShareData.ExternalSingleShare(it, intent.type))
} ?: extractSingleExtraTextFromIntent(IntentError.SEND_STREAM)
val uri: Uri? = intent.getParcelableExtraCompat(Intent.EXTRA_STREAM, Uri::class.java)
if (uri == null) {
extractSingleExtraTextFromIntent(IntentError.SEND_STREAM)
} else {
val text: CharSequence? = if (intent.hasExtra(Intent.EXTRA_TEXT)) intent.getCharSequenceExtra(Intent.EXTRA_TEXT) else null
Result.success(UnresolvedShareData.ExternalSingleShare(uri, intent.type, text))
}
}
intent.action == Intent.ACTION_SEND && intent.hasExtra(Intent.EXTRA_TEXT) -> {
extractSingleExtraTextFromIntent()

View File

@@ -73,6 +73,7 @@ class ShareRepository(context: Context) {
return ResolvedShareData.ExternalUri(
uri = blobUri,
mimeType = mimeType,
text = multiShareExternal.text,
isMmsOrSmsSupported = isMmsSupported(appContext, asUriAttachment(blobUri, mimeType, size))
)
}

View File

@@ -4,6 +4,6 @@ import android.net.Uri
sealed class UnresolvedShareData {
data class ExternalMultiShare(val uris: List<Uri>) : UnresolvedShareData()
data class ExternalSingleShare(val uri: Uri, val mimeType: String?) : UnresolvedShareData()
data class ExternalSingleShare(val uri: Uri, val mimeType: String?, val text: CharSequence?) : UnresolvedShareData()
data class ExternalPrimitiveShare(val text: CharSequence) : UnresolvedShareData()
}