From 245a4dbe84e22bfe9d88dd598a8f603fec6fce14 Mon Sep 17 00:00:00 2001 From: Mubashir P A Date: Mon, 1 Jan 2024 14:30:33 +0530 Subject: [PATCH 1/3] Fixed typo --- generativeai-android-sample/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 24d3c6f2db6fb40037f533ee715100af5c104d8b Mon Sep 17 00:00:00 2001 From: Mubashir P A Date: Mon, 1 Jan 2024 14:31:28 +0530 Subject: [PATCH 2/3] Add dependency to support Markdown in text --- generativeai-android-sample/app/build.gradle.kts | 2 ++ generativeai-android-sample/settings.gradle.kts | 1 + 2 files changed, 3 insertions(+) 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/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 } } From 2389476410216a82aaf26d20fa2aa921167ded9a Mon Sep 17 00:00:00 2001 From: Mubashir P A Date: Mon, 1 Jan 2024 14:40:48 +0530 Subject: [PATCH 3/3] Implemented support for Markdown, HTML, Image, Highlight, Linkify and Table in Text --- .../com/google/ai/sample/feature/chat/ChatScreen.kt | 12 ++++++------ .../feature/multimodal/PhotoReasoningScreen.kt | 10 ++++++---- .../google/ai/sample/feature/text/SummarizeScreen.kt | 10 ++++++---- 3 files changed, 18 insertions(+), 14 deletions(-) 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 ) } }