From e1a001ce5c8cbd772d913f7ef4698a7e122c74ed Mon Sep 17 00:00:00 2001 From: Infi Date: Fri, 1 Sep 2023 00:42:32 +0500 Subject: [PATCH] feat: "share url" in audio player Signed-off-by: Infi --- .../revolt/components/media/AudioPlayer.kt | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/chat/revolt/components/media/AudioPlayer.kt b/app/src/main/java/chat/revolt/components/media/AudioPlayer.kt index dc525f76..0fbb0feb 100644 --- a/app/src/main/java/chat/revolt/components/media/AudioPlayer.kt +++ b/app/src/main/java/chat/revolt/components/media/AudioPlayer.kt @@ -1,8 +1,11 @@ package chat.revolt.components.media import android.content.ContentValues +import android.content.Intent import android.provider.MediaStore import android.widget.Toast +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -63,6 +66,10 @@ fun AudioPlayer( val coroutineScope = rememberCoroutineScope() + val activityLauncher = rememberLauncherForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) {} + val player = remember { ExoPlayer.Builder(context).build().apply { setMediaItem(MediaItem.fromUri(url)) @@ -147,6 +154,20 @@ fun AudioPlayer( } } + fun shareUrl() { + showMenu.value = false + + coroutineScope.launch { + val intent = Intent(Intent.ACTION_SEND).apply { + type = "text/plain" + putExtra(Intent.EXTRA_TEXT, url) + } + + val shareIntent = Intent.createChooser(intent, null) + activityLauncher.launch(shareIntent) + } + } + LaunchedEffect(Unit) { while (true) { if (currentTime.value != player.currentPosition && player.isPlaying) { @@ -265,7 +286,14 @@ fun AudioPlayer( Text(text = stringResource(R.string.media_viewer_save)) } ) - + DropdownMenuItem( + onClick = { + shareUrl() + }, + text = { + Text(text = stringResource(R.string.media_viewer_share_url)) + } + ) } } }