Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ android {

dependencies {
// Twilio
implementation "com.twilio:conversations-android-with-symbols:5.0.0"
implementation "com.twilio:conversations-android-with-symbols:5.1.0"
// or without symbols:
// implementation "com.twilio:conversations-android:5.0.0"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import com.twilio.conversations.app.data.localCache.entity.MessageDataItem
import com.twilio.conversations.app.data.localCache.entity.ParticipantDataItem
import com.twilio.conversations.app.data.models.*
import com.twilio.conversations.app.manager.friendlyName
import com.twilio.conversations.content.ContentTemplate

fun Conversation.toConversationDataItem(): ConversationDataItem {
return ConversationDataItem(
Expand Down Expand Up @@ -170,6 +171,11 @@ fun List<ConversationDataItem>.asConversationListViewItems(context: Context) =

fun List<Message>.asMessageDataItems(identity: String) = map { it.toMessageDataItem(identity) }

fun ContentTemplate.asContentTemplateItem() = ContentTemplateItem(
this.sid,
this.friendlyName
)

fun List<MessageDataItem>.asMessageListViewItems() =
mapIndexed { index, item -> item.toMessageListViewItem(isAuthorChanged(index)) }

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.twilio.conversations.app.data.models

// Todo: add missing fields that come from the sdk
data class ContentTemplateItem(
val sid: String,
val friendlyName: String,
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.twilio.conversations.Participant.Type.CHAT
import com.twilio.conversations.User
import com.twilio.conversations.app.common.DefaultDispatcherProvider
import com.twilio.conversations.app.common.DispatcherProvider
import com.twilio.conversations.app.common.asContentTemplateItem
import com.twilio.conversations.app.common.asMessageDataItems
import com.twilio.conversations.app.common.asMessageListViewItems
import com.twilio.conversations.app.common.asParticipantDataItem
Expand All @@ -25,6 +26,7 @@ import com.twilio.conversations.app.data.localCache.LocalCacheProvider
import com.twilio.conversations.app.data.localCache.entity.ConversationDataItem
import com.twilio.conversations.app.data.localCache.entity.MessageDataItem
import com.twilio.conversations.app.data.localCache.entity.ParticipantDataItem
import com.twilio.conversations.app.data.models.ContentTemplateItem
import com.twilio.conversations.app.data.models.MessageListViewItem
import com.twilio.conversations.app.data.models.RepositoryRequestStatus
import com.twilio.conversations.app.data.models.RepositoryRequestStatus.COMPLETE
Expand All @@ -34,6 +36,7 @@ import com.twilio.conversations.app.data.models.RepositoryRequestStatus.SUBSCRIB
import com.twilio.conversations.app.data.models.RepositoryResult
import com.twilio.conversations.extensions.ConversationListener
import com.twilio.conversations.extensions.ConversationsClientListener
import com.twilio.conversations.extensions.getContentTemplates
import com.twilio.conversations.extensions.getConversation
import com.twilio.conversations.extensions.getLastMessages
import com.twilio.conversations.extensions.getMessagesBefore
Expand Down Expand Up @@ -68,6 +71,7 @@ interface ConversationsRepository {
// Interim solution till paging v3.0 is available as an alpha version.
// It has support for converting PagedList types
fun getMessages(conversationSid: String, pageSize: Int): Flow<RepositoryResult<PagedList<MessageListViewItem>>>
fun getContentTemplates(conversationSid: String): Flow<RepositoryResult<List<ContentTemplateItem>>>
fun insertMessage(message: MessageDataItem)
fun updateMessageByUuid(message: MessageDataItem)
fun updateMessageStatus(messageUuid: String, sendStatus: Int, errorCode: Int)
Expand Down Expand Up @@ -235,6 +239,22 @@ class ConversationsRepositoryImpl(
return combine(pagedListFlow, requestStatusConversation.asFlow().distinctUntilChanged() ) { data, status -> RepositoryResult(data, status) }
}

override fun getContentTemplates(conversationSid: String): Flow<RepositoryResult<List<ContentTemplateItem>>> = flow {
Timber.v("getContentTemplates($conversationSid)")
val list = conversationsClientWrapper
.getConversationsClient()
.getContentTemplates()
emit(
RepositoryResult(
list.map {
println(it)
it.asContentTemplateItem()
},
COMPLETE
)
)
}

override fun insertMessage(message: MessageDataItem) {
launch {
localCache.messagesDao().insertOrReplace(message)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,15 @@ class MessageListActivity : BaseActivity() {
AttachFileDialog.getInstance(messageListViewModel.conversationSid)
.showNow(supportFragmentManager, null)
}
binding.templatesButton.setOnClickListener {
// Todo: open templates
messageListViewModel.contentTemplateItems.observe(this) { contentTemplates ->
println("@output@: start observing")
contentTemplates.map {
println("@output@: " + it)
}
}
}
}

private fun showRemoveMessageDialog() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ class MessageListViewModel(
.asLiveData(viewModelScope.coroutineContext)
.map { it.data }

val contentTemplateItems = conversationsRepository.getContentTemplates(conversationSid)
.asLiveData(viewModelScope.coroutineContext)
.map { it.data }

val onMessageError = SingleLiveEvent<ConversationsError>()

val onMessageSent = SingleLiveEvent<Unit>()
Expand Down
15 changes: 14 additions & 1 deletion app/src/main/res/layout/activity_message_list.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,22 @@
android:layout_marginStart="9dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_attach"
app:layout_constraintBottom_toBottomOf="@+id/messageInputHolder"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/messageInputHolder"
app:layout_constraintBottom_toTopOf="@id/templatesButton"
app:tint="@color/colorPrimary" />

<!-- Todo: change icon for right template icon -->
<ImageButton
android:id="@+id/templatesButton"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="9dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_copy"
app:layout_constraintBottom_toBottomOf="@+id/messageInputHolder"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/messageAttachmentButton"
app:tint="@color/colorPrimary" />

<com.google.android.material.textfield.TextInputLayout
Expand Down