android: Multiple images sharing (#1206)

This commit is contained in:
Stanislav Dmitrenko
2022-10-13 20:39:24 +03:00
committed by GitHub
parent 3bf8361911
commit 799d9443bd
5 changed files with 20 additions and 4 deletions

View File

@@ -69,6 +69,11 @@
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
<activity-alias

View File

@@ -398,13 +398,24 @@ fun processExternalIntent(intent: Intent?, chatModel: ChatModel) {
chatModel.sharedContent.value = SharedContent.Text(it)
}
intent.type?.startsWith("image/") == true -> (intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri)?.let {
chatModel.sharedContent.value = SharedContent.Image(it)
chatModel.sharedContent.value = SharedContent.Images(listOf(it))
} // All other mime types
else -> (intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri)?.let {
chatModel.sharedContent.value = SharedContent.File(it)
}
}
}
Intent.ACTION_SEND_MULTIPLE -> {
// Close active chat and show a list of chats
chatModel.chatId.value = null
chatModel.clearOverlays.value = true
when {
intent.type?.startsWith("image/") == true -> (intent.getParcelableArrayListExtra<Parcelable>(Intent.EXTRA_STREAM) as? List<Uri>)?.let {
chatModel.sharedContent.value = SharedContent.Images(it)
} // All other mime types
else -> {}
}
}
}
}

View File

@@ -500,7 +500,7 @@ fun ComposeView(
LaunchedEffect(chatModel.sharedContent.value) {
when (val shared = chatModel.sharedContent.value) {
is SharedContent.Text -> onMessageChange(shared.text)
is SharedContent.Image -> processPickedImage(listOf(shared.uri))
is SharedContent.Images -> processPickedImage(shared.uris)
is SharedContent.File -> processPickedFile(shared.uri)
null -> {}
}

View File

@@ -93,7 +93,7 @@ private fun ShareListToolbar(chatModel: ChatModel, stopped: Boolean, onSearchVal
Text(
when (chatModel.sharedContent.value) {
is SharedContent.Text -> stringResource(R.string.share_message)
is SharedContent.Image -> stringResource(R.string.share_image)
is SharedContent.Images -> stringResource(R.string.share_image)
is SharedContent.File -> stringResource(R.string.share_file)
else -> stringResource(R.string.share_message)
},

View File

@@ -7,7 +7,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
sealed class SharedContent {
data class Text(val text: String): SharedContent()
data class Image(val uri: Uri): SharedContent()
data class Images(val uris: List<Uri>): SharedContent()
data class File(val uri: Uri): SharedContent()
}