diff --git a/generativeai-android-sample/README.md b/generativeai-android-sample/README.md index 7e0d3ecb..45a9959c 100644 --- a/generativeai-android-sample/README.md +++ b/generativeai-android-sample/README.md @@ -24,7 +24,7 @@ apiKey=YOUR_API_KEY ``` ## Features -This sample showcases the following API capablilites: +This sample showcases the following API capabilities: * Generate Text - demonstrates the Text feature from the SDK * Photo Reasoning - demonstrates the MultiModal feature from the SDK * Chat - demonstrates the Multi-turn Conversations feature from the SDK diff --git a/generativeai-android-sample/app/build.gradle.kts b/generativeai-android-sample/app/build.gradle.kts index 0ffe6adb..b0d34366 100644 --- a/generativeai-android-sample/app/build.gradle.kts +++ b/generativeai-android-sample/app/build.gradle.kts @@ -76,4 +76,6 @@ dependencies { debugImplementation("androidx.compose.ui:ui-test-manifest") implementation("com.google.ai.client.generativeai:generativeai:0.1.1") + + implementation("com.github.jeziellago:compose-markdown:0.3.7") } diff --git a/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/chat/ChatScreen.kt b/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/chat/ChatScreen.kt index d18846c3..ad94f23f 100644 --- a/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/chat/ChatScreen.kt +++ b/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/chat/ChatScreen.kt @@ -50,15 +50,14 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardCapitalization -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.google.ai.sample.GenerativeViewModelFactory import com.google.ai.sample.R -import com.google.ai.sample.ui.theme.GenerativeAISample +import dev.jeziellago.compose.markdowntext.MarkdownText import kotlinx.coroutines.launch @Composable @@ -159,9 +158,10 @@ fun ChatBubbleItem( shape = bubbleShape, modifier = Modifier.widthIn(0.dp, maxWidth * 0.9f) ) { - Text( - text = chatMessage.text, - modifier = Modifier.padding(16.dp) + MarkdownText( + markdown = chatMessage.text, + modifier = Modifier.padding(start = 16.dp), + linkColor = Color.Blue ) } } diff --git a/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/multimodal/PhotoReasoningScreen.kt b/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/multimodal/PhotoReasoningScreen.kt index 8cc8f94e..082aa990 100644 --- a/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/multimodal/PhotoReasoningScreen.kt +++ b/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/multimodal/PhotoReasoningScreen.kt @@ -68,6 +68,7 @@ import com.google.ai.sample.GenerativeViewModelFactory import coil.size.Precision import com.google.ai.sample.R import com.google.ai.sample.util.UriSaver +import dev.jeziellago.compose.markdowntext.MarkdownText import kotlinx.coroutines.launch @Composable @@ -226,12 +227,13 @@ fun PhotoReasoningScreen( drawCircle(color = Color.White) } ) - Text( - text = uiState.outputText, // TODO(thatfiredev): Figure out Markdown support - color = MaterialTheme.colorScheme.onSecondary, + MarkdownText( + markdown = uiState.outputText, modifier = Modifier .padding(start = 16.dp) - .fillMaxWidth() + .fillMaxWidth(), + color = MaterialTheme.colorScheme.onSecondary, + linkColor = Color.Blue ) } } diff --git a/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/text/SummarizeScreen.kt b/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/text/SummarizeScreen.kt index dc1ef9ae..475fa533 100644 --- a/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/text/SummarizeScreen.kt +++ b/generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/feature/text/SummarizeScreen.kt @@ -52,6 +52,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel import com.google.ai.sample.GenerativeViewModelFactory import com.google.ai.sample.R import com.google.ai.sample.ui.theme.GenerativeAISample +import dev.jeziellago.compose.markdowntext.MarkdownText @Composable internal fun SummarizeRoute( @@ -145,12 +146,13 @@ fun SummarizeScreen( drawCircle(color = Color.White) } ) - Text( - text = uiState.outputText, // TODO(thatfiredev): Figure out Markdown support - color = MaterialTheme.colorScheme.onSecondary, + MarkdownText( + markdown = uiState.outputText, modifier = Modifier .padding(start = 16.dp) - .fillMaxWidth() + .fillMaxWidth(), + color = MaterialTheme.colorScheme.onSecondary, + linkColor = Color.Blue ) } } diff --git a/generativeai-android-sample/settings.gradle.kts b/generativeai-android-sample/settings.gradle.kts index a290317f..2c842a04 100644 --- a/generativeai-android-sample/settings.gradle.kts +++ b/generativeai-android-sample/settings.gradle.kts @@ -28,6 +28,7 @@ dependencyResolutionManagement { mavenLocal() google() mavenCentral() + maven(url = "https://jitpack.io") // Jitpack for compose-markdown dependency } }