Skip to content

Commit 1b76adb

Browse files
Add files via upload
1 parent 30cd55f commit 1b76adb

4 files changed

Lines changed: 444 additions & 80 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.google.ai.sample.feature.multimodal
2+
3+
import androidx.compose.runtime.toMutableStateList
4+
5+
class PhotoReasoningChatState(
6+
messages: List<PhotoReasoningMessage> = emptyList()
7+
) {
8+
private val _messages: MutableList<PhotoReasoningMessage> = messages.toMutableStateList()
9+
val messages: List<PhotoReasoningMessage> = _messages
10+
11+
fun addMessage(msg: PhotoReasoningMessage) {
12+
_messages.add(msg)
13+
}
14+
15+
fun replaceLastPendingMessage() {
16+
val lastMessage = _messages.lastOrNull()
17+
lastMessage?.let {
18+
val newMessage = lastMessage.apply { isPending = false }
19+
_messages.removeLast()
20+
_messages.add(newMessage)
21+
}
22+
}
23+
24+
fun clearMessages() {
25+
_messages.clear()
26+
}
27+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.google.ai.sample.feature.multimodal
2+
3+
import java.util.UUID
4+
5+
enum class PhotoParticipant {
6+
USER, MODEL, ERROR
7+
}
8+
9+
data class PhotoReasoningMessage(
10+
val id: String = UUID.randomUUID().toString(),
11+
var text: String = "",
12+
val participant: PhotoParticipant = PhotoParticipant.USER,
13+
var isPending: Boolean = false,
14+
val imageUris: List<String> = emptyList() // Store image URIs for multimodal messages
15+
)

0 commit comments

Comments
 (0)