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