Commit 5df2bf4b authored by Leonardo Aramaki's avatar Leonardo Aramaki

Remove serverUrl from ChatRoomAdapter constructor

parent 2cd3446d
......@@ -45,7 +45,7 @@ class ChatRoomPresenter @Inject constructor(private val view: ChatRoomView,
messagesRepository.saveAll(messages)
val messagesViewModels = mapper.mapToViewModelList(messages, settings)
view.showMessages(messagesViewModels, serverInteractor.get()!!)
view.showMessages(messagesViewModels)
// Subscribe after getting the first page of messages from REST
if (offset == 0L) {
......@@ -175,10 +175,11 @@ class ChatRoomPresenter @Inject constructor(private val view: ChatRoomView,
* @param text The actual message to send along with the citation.
* @param mentionAuthor true if you want to cite replying or false just to quote.
*/
fun citeMessage(serverUrl: String, roomType: String, roomName: String, messageId: String, text: String, mentionAuthor: Boolean) {
fun citeMessage(roomType: String, roomName: String, messageId: String, text: String, mentionAuthor: Boolean) {
launchUI(strategy) {
val message = messagesRepository.getById(messageId)
val me = client.me() //TODO: Cache this and use an interactor
val serverUrl = serverInteractor.get()!!
message?.let { m ->
val id = m.id
val username = m.sender?.username
......
......@@ -10,9 +10,8 @@ interface ChatRoomView : LoadingView, MessageView {
* Shows the chat room messages.
*
* @param dataSet The data set to show.
* @param serverUrl The server URL.
*/
fun showMessages(dataSet: List<MessageViewModel>, serverUrl: String)
fun showMessages(dataSet: List<MessageViewModel>)
/**
* Send a message to a chat room.
......
......@@ -9,8 +9,8 @@ import android.widget.ImageView
import android.widget.TextView
import chat.rocket.android.R
import chat.rocket.android.chatroom.presentation.ChatRoomPresenter
import chat.rocket.android.chatroom.ui.bottomsheet.adapter.ActionListAdapter
import chat.rocket.android.chatroom.ui.bottomsheet.BottomSheetMenu
import chat.rocket.android.chatroom.ui.bottomsheet.adapter.ActionListAdapter
import chat.rocket.android.chatroom.viewmodel.AttachmentType
import chat.rocket.android.chatroom.viewmodel.MessageViewModel
import chat.rocket.android.player.PlayerActivity
......@@ -26,8 +26,7 @@ import kotlinx.android.synthetic.main.message_attachment.view.*
import ru.whalemare.sheetmenu.extension.inflate
import ru.whalemare.sheetmenu.extension.toList
class ChatRoomAdapter(private val serverUrl: String,
private val roomType: String,
class ChatRoomAdapter(private val roomType: String,
private val roomName: String,
private val presenter: ChatRoomPresenter) : RecyclerView.Adapter<ChatRoomAdapter.ViewHolder>() {
......@@ -38,7 +37,7 @@ class ChatRoomAdapter(private val serverUrl: String,
val dataSet = ArrayList<MessageViewModel>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder =
ViewHolder(parent.inflate(R.layout.item_message), serverUrl, roomType, roomName, presenter)
ViewHolder(parent.inflate(R.layout.item_message), roomType, roomName, presenter)
override fun onBindViewHolder(holder: ViewHolder, position: Int) = holder.bind(dataSet[position])
......@@ -82,7 +81,6 @@ class ChatRoomAdapter(private val serverUrl: String,
}
class ViewHolder(itemView: View,
val serverUrl: String,
val roomType: String,
val roomName: String,
val presenter: ChatRoomPresenter) : RecyclerView.ViewHolder(itemView), MenuItem.OnMenuItemClickListener {
......@@ -120,8 +118,8 @@ class ChatRoomAdapter(private val serverUrl: String,
messageViewModel.apply {
when (item.itemId) {
R.id.action_menu_msg_delete -> presenter.deleteMessage(roomId, id)
R.id.action_menu_msg_quote -> presenter.citeMessage(serverUrl, roomType, roomName, id, "", false)
R.id.action_menu_msg_reply -> presenter.citeMessage(serverUrl, roomType, roomName, id, "", true)
R.id.action_menu_msg_quote -> presenter.citeMessage(roomType, roomName, id, "", false)
R.id.action_menu_msg_reply -> presenter.citeMessage(roomType, roomName, id, "", true)
R.id.action_menu_msg_copy -> presenter.copyMessage(id)
R.id.action_menu_msg_edit -> presenter.editMessage(roomId, id, getOriginalMessage())
R.id.action_menu_msg_pin_unpin -> {
......@@ -183,7 +181,7 @@ class ChatRoomAdapter(private val serverUrl: String,
}
}
private fun bindUserAvatar(message: MessageViewModel, drawee: SimpleDraweeView, imageUnknownAvatar: ImageView) = message.getAvatarUrl(serverUrl).let {
private fun bindUserAvatar(message: MessageViewModel, drawee: SimpleDraweeView, imageUnknownAvatar: ImageView) = message.getAvatarUrl().let {
drawee.setImageURI(it.toString())
drawee.setVisible(true)
imageUnknownAvatar.setVisible(false)
......
......@@ -103,10 +103,10 @@ class ChatRoomFragment : Fragment(), ChatRoomView {
return true
}
override fun showMessages(dataSet: List<MessageViewModel>, serverUrl: String) {
override fun showMessages(dataSet: List<MessageViewModel>) {
activity?.apply {
if (recycler_view.adapter == null) {
adapter = ChatRoomAdapter(serverUrl, chatRoomType, chatRoomName, presenter)
adapter = ChatRoomAdapter(chatRoomType, chatRoomName, presenter)
recycler_view.adapter = adapter
val linearLayoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, true)
recycler_view.layoutManager = linearLayoutManager
......
......@@ -133,7 +133,7 @@ class PinnedMessagesAdapter(private val serverUrl: String) : RecyclerView.Adapte
}
private fun bindUserAvatar(message: MessageViewModel, drawee: SimpleDraweeView, imageUnknownAvatar: ImageView) {
message.getAvatarUrl(serverUrl).let {
message.getAvatarUrl().let {
drawee.setImageURI(it.toString())
drawee.setVisible(true)
imageUnknownAvatar.setVisible(false)
......
......@@ -13,6 +13,7 @@ import chat.rocket.android.R
import chat.rocket.android.helper.MessageParser
import chat.rocket.android.helper.UrlHelper
import chat.rocket.android.infrastructure.LocalRepository
import chat.rocket.android.server.domain.CurrentServerRepository
import chat.rocket.android.server.domain.MessagesRepository
import chat.rocket.android.server.domain.SITE_URL
import chat.rocket.android.server.domain.useRealName
......@@ -23,7 +24,6 @@ import chat.rocket.core.model.Value
import chat.rocket.core.model.attachment.*
import chat.rocket.core.model.url.Url
import okhttp3.HttpUrl
import timber.log.Timber
data class MessageViewModel(val context: Context,
private val token: Token?,
......@@ -31,7 +31,8 @@ data class MessageViewModel(val context: Context,
private val settings: Map<String, Value<Any>>,
private val parser: MessageParser,
private val messagesRepository: MessagesRepository,
private val localRepository: LocalRepository) {
private val localRepository: LocalRepository,
private val currentServerRepository: CurrentServerRepository) {
val id: String = message.id
val roomId: String = message.roomId
val time: CharSequence
......@@ -106,16 +107,15 @@ data class MessageViewModel(val context: Context,
private fun makeQuote(quoteUrl: HttpUrl, serverUrl: HttpUrl) {
if (quoteUrl.host() == serverUrl.host()) {
val msgIdToQuote = quoteUrl.queryParameter("msg")
Timber.d("Will quote message Id: $msgIdToQuote")
if (msgIdToQuote != null) {
quote = messagesRepository.getById(msgIdToQuote)
}
}
}
fun getAvatarUrl(serverUrl: String): String? {
fun getAvatarUrl(): String? {
return message.sender?.username.let {
return@let UrlHelper.getAvatarUrl(serverUrl, it.toString())
return@let UrlHelper.getAvatarUrl(currentServerRepository.get()!!, it.toString())
}
}
......@@ -157,7 +157,8 @@ data class MessageViewModel(val context: Context,
var quoteViewModel: MessageViewModel? = null
if (quote != null) {
val quoteMessage: Message = quote!!
quoteViewModel = MessageViewModel(context, token, quoteMessage, settings, parser, messagesRepository, localRepository)
quoteViewModel = MessageViewModel(context, token, quoteMessage, settings, parser,
messagesRepository, localRepository, currentServerRepository)
}
return parser.renderMarkdown(message.message, quoteViewModel, currentUsername)
}
......
......@@ -3,6 +3,7 @@ package chat.rocket.android.chatroom.viewmodel
import android.content.Context
import chat.rocket.android.helper.MessageParser
import chat.rocket.android.infrastructure.LocalRepository
import chat.rocket.android.server.domain.CurrentServerRepository
import chat.rocket.android.server.domain.MessagesRepository
import chat.rocket.core.TokenRepository
import chat.rocket.core.model.Message
......@@ -15,7 +16,8 @@ class MessageViewModelMapper @Inject constructor(private val context: Context,
private val tokenRepository: TokenRepository,
private val messageParser: MessageParser,
private val messagesRepository: MessagesRepository,
private val localRepository: LocalRepository) {
private val localRepository: LocalRepository,
private val currentServerRepository: CurrentServerRepository) {
suspend fun mapToViewModel(message: Message, settings: Map<String, Value<Any>>): MessageViewModel = withContext(CommonPool) {
MessageViewModel(
......@@ -25,17 +27,13 @@ class MessageViewModelMapper @Inject constructor(private val context: Context,
settings,
messageParser,
messagesRepository,
localRepository
localRepository,
currentServerRepository
)
}
suspend fun mapToViewModelList(messageList: List<Message>, settings: Map<String, Value<Any>>): List<MessageViewModel> {
return messageList.map { MessageViewModel(context,
tokenRepository.get(),
it,
settings,
messageParser,
messagesRepository,
localRepository) }
return messageList.map { MessageViewModel(context, tokenRepository.get(), it, settings,
messageParser, messagesRepository, localRepository, currentServerRepository) }
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment