From 56bc23cc3cf4205092e362ba414ce6f3e157b6c9 Mon Sep 17 00:00:00 2001 From: shubhsherl Date: Fri, 14 Dec 2018 02:29:53 +0530 Subject: [PATCH 1/7] add bottomsheet and favorite functionality --- .../chatdetails/adapter/OptionViewHolder.kt | 12 ++- .../chatrooms/adapter/HeaderViewHolder.kt | 2 +- .../chatrooms/adapter/LoadingViewHolder.kt | 2 +- .../chatrooms/adapter/RoomViewHolder.kt | 10 ++- .../android/chatrooms/adapter/RoomsAdapter.kt | 38 ++++++++-- .../android/chatrooms/adapter/ViewHolder.kt | 66 +++++++++++++++- .../presentation/ChatRoomsPresenter.kt | 21 +++++ .../chatrooms/presentation/ChatRoomsView.kt | 3 + .../android/chatrooms/ui/ChatRoomsFragment.kt | 6 +- .../bottomsheet/ChatRoomActionBottomSheet.kt | 76 +++++++++++++++++++ .../main/res/drawable/ic_flag_black_24dp.xml | 9 +++ .../drawable/ic_star_border_black_24dp.xml | 9 +++ .../drawable/ic_visibility_off_black_24dp.xml | 9 +++ app/src/main/res/layout/item_chat.xml | 1 + app/src/main/res/menu/chatrooms_action.xml | 25 ++++++ 15 files changed, 273 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/chat/rocket/android/chatrooms/ui/bottomsheet/ChatRoomActionBottomSheet.kt create mode 100644 app/src/main/res/drawable/ic_flag_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_star_border_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_visibility_off_black_24dp.xml create mode 100644 app/src/main/res/menu/chatrooms_action.xml diff --git a/app/src/main/java/chat/rocket/android/chatdetails/adapter/OptionViewHolder.kt b/app/src/main/java/chat/rocket/android/chatdetails/adapter/OptionViewHolder.kt index a9cec0d045..dd9a087fb9 100644 --- a/app/src/main/java/chat/rocket/android/chatdetails/adapter/OptionViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatdetails/adapter/OptionViewHolder.kt @@ -4,16 +4,22 @@ import DrawableHelper import android.view.View import android.widget.ImageView import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView import chat.rocket.android.R import chat.rocket.android.chatdetails.domain.Option -import chat.rocket.android.chatrooms.adapter.ViewHolder import kotlinx.android.synthetic.main.item_detail_option.view.* class OptionViewHolder( itemView: View -): ViewHolder(itemView) { +): RecyclerView.ViewHolder(itemView) { + var data: OptionItemHolder? = null - override fun bindViews(data: OptionItemHolder) { + fun bind(data: OptionItemHolder) { + this.data = data + this.bindViews(data) + } + + fun bindViews(data: OptionItemHolder) { val option = data.data bindName(option, itemView.name) bindIcon(option, itemView.icon) diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/HeaderViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/HeaderViewHolder.kt index c541e4e941..efbd7f5963 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/HeaderViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/HeaderViewHolder.kt @@ -3,7 +3,7 @@ package chat.rocket.android.chatrooms.adapter import android.view.View import kotlinx.android.synthetic.main.item_chatroom_header.view.* -class HeaderViewHolder(itemView: View) : ViewHolder(itemView) { +class HeaderViewHolder(itemView: View, listener: ActionsListener) : ViewHolder(itemView, listener) { override fun bindViews(data: HeaderItemHolder) { with(itemView) { text_chatroom_header.text = data.data diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/LoadingViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/LoadingViewHolder.kt index a4f61f9880..36cf2d15f2 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/LoadingViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/LoadingViewHolder.kt @@ -2,7 +2,7 @@ package chat.rocket.android.chatrooms.adapter import android.view.View -class LoadingViewHolder(itemView: View) : ViewHolder>(itemView) { +class LoadingViewHolder(itemView: View, listener: ActionsListener) : ViewHolder>(itemView, listener) { override fun bindViews(data: ItemHolder) { } } \ No newline at end of file diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt index 2317178adf..e12161626f 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt @@ -14,8 +14,14 @@ import chat.rocket.common.model.UserStatus import kotlinx.android.synthetic.main.item_chat.view.* import kotlinx.android.synthetic.main.unread_messages_badge.view.* -class RoomViewHolder(itemView: View, private val listener: (RoomUiModel) -> Unit) : - ViewHolder(itemView) { +class RoomViewHolder(itemView: View, private val listener: (RoomUiModel) -> Unit, actionsListener: ActionsListener) : + ViewHolder(itemView, actionsListener) { + + init { + with(itemView) { + setupActionMenu(itemView) + } + } private val resources: Resources = itemView.resources private val channelIcon: Drawable = resources.getDrawable(R.drawable.ic_hashtag_12dp, null) private val groupIcon: Drawable = resources.getDrawable(R.drawable.ic_lock_12_dp, null) diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt index 03d2bce87e..ed9b46d341 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt @@ -1,15 +1,20 @@ package chat.rocket.android.chatrooms.adapter +import android.view.MenuItem import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import chat.rocket.android.R +import chat.rocket.android.chatroom.uimodel.toViewType import chat.rocket.android.chatrooms.adapter.model.RoomUiModel +import chat.rocket.android.chatrooms.presentation.ChatRoomsPresenter import chat.rocket.android.util.extensions.inflate -class RoomsAdapter(private val listener: (RoomUiModel) -> Unit) : +class RoomsAdapter(private val listener: (RoomUiModel) -> Unit, presenter: ChatRoomsPresenter) : RecyclerView.Adapter>() { + private val enableActions: Boolean = true - init { + + init { setHasStableIds(true) } @@ -22,15 +27,15 @@ class RoomsAdapter(private val listener: (RoomUiModel) -> Unit) : override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder<*> = when (viewType) { VIEW_TYPE_ROOM -> { val view = parent.inflate(R.layout.item_chat) - RoomViewHolder(view, listener) + RoomViewHolder(view, listener, actionsListener) } VIEW_TYPE_HEADER -> { val view = parent.inflate(R.layout.item_chatroom_header) - HeaderViewHolder(view) + HeaderViewHolder(view, actionsListener) } VIEW_TYPE_LOADING -> { val view = parent.inflate(R.layout.item_loading) - LoadingViewHolder(view) + LoadingViewHolder(view, actionsListener) } else -> throw IllegalStateException("View type must be either Room, Header or Loading") } @@ -67,4 +72,27 @@ class RoomsAdapter(private val listener: (RoomUiModel) -> Unit) : const val VIEW_TYPE_HEADER = 2 const val VIEW_TYPE_LOADING = 3 } + + private val actionsListener = object : ViewHolder.ActionsListener { + override fun isActionsEnabled(): Boolean = enableActions + override fun onActionSelected(item: MenuItem, room: RoomUiModel) { + room.apply { + when (item.itemId) { + R.id.action_favorite_room-> { + presenter.toggleFavoriteChatRoom(this.id, this.favorite==true) + } + R.id.action_leave_room-> { + + } + R.id.action_read->{ + + } + R.id.action_hide_room->{ + + } + else -> TODO("Not implemented") + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt index c2004d3f3f..651f6e758f 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt @@ -1,17 +1,79 @@ package chat.rocket.android.chatrooms.adapter +import android.content.Context +import android.content.ContextWrapper +import android.util.Log +import android.view.ContextThemeWrapper +import android.view.MenuItem import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.children +import androidx.lifecycle.Lifecycle import androidx.recyclerview.widget.RecyclerView +import chat.rocket.android.R +import chat.rocket.android.chatroom.ui.bottomsheet.ChatRoomActionBottomSheet +import chat.rocket.android.chatroom.ui.bottomsheet.MessageActionsBottomSheet +import chat.rocket.android.chatrooms.adapter.model.RoomUiModel +import chat.rocket.android.util.extensions.inflate +import chat.rocket.android.util.extensions.toList +import chat.rocket.core.model.isSystemMessage abstract class ViewHolder>( - itemView: View -) : RecyclerView.ViewHolder(itemView) { + itemView: View, + private val listener: ActionsListener +) : RecyclerView.ViewHolder(itemView), + MenuItem.OnMenuItemClickListener { var data: T? = null + init { + setupActionMenu(itemView) + } + fun bind(data: T) { this.data = data bindViews(data) } abstract fun bindViews(data: T) + + interface ActionsListener { + fun isActionsEnabled(): Boolean + fun onActionSelected(item: MenuItem, room: RoomUiModel) + } + + + internal fun setupActionMenu(view: View) { + view.setOnLongClickListener{ + if (data?.data is RoomUiModel) { + data?.let { vm -> + vm.data.let { + val menuItems = view.context.inflate(R.menu.chatrooms_action).toList() + menuItems.find { it.itemId == R.id.action_favorite_room }?.apply { + setTitle(if ((it as RoomUiModel).favorite == true) R.string.title_unfavorite_chat else R.string.title_favorite_chat) + setIcon(if (it.favorite == true) R.drawable.ic_star_yellow_24dp else R.drawable.ic_star_border_black_24dp) + isChecked = (it.favorite==true) + } + view.context?.let { + if (it is ContextThemeWrapper && it is AppCompatActivity) { + with(it) { + val actionsBottomSheet = ChatRoomActionBottomSheet() + actionsBottomSheet.addItems(menuItems, this@ViewHolder) + actionsBottomSheet.show(supportFragmentManager, null) + } + } + } + } + } + } + true + } + } + + override fun onMenuItemClick(item: MenuItem): Boolean { + data?.let { + listener.onActionSelected(item, (it as RoomItemHolder).data) + } + return true + } } \ No newline at end of file diff --git a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt index 4f1ee432d2..0fad021283 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt @@ -20,7 +20,9 @@ import chat.rocket.common.RocketChatException import chat.rocket.common.model.RoomType import chat.rocket.common.model.User import chat.rocket.common.model.roomTypeOf +import chat.rocket.common.util.ifNull import chat.rocket.core.internal.realtime.createDirectMessage +import chat.rocket.core.internal.rest.favorite import chat.rocket.core.internal.rest.me import chat.rocket.core.internal.rest.show import kotlinx.coroutines.withTimeout @@ -144,6 +146,25 @@ class ChatRoomsPresenter @Inject constructor( } } + fun toggleFavoriteChatRoom(roomId: String, isFavorite: Boolean) { + launchUI(strategy) { + try { + // Note that if it is favorite then the user wants to unfavorite - and vice versa. + retryIO("favorite($roomId, $isFavorite)") { + client.favorite(roomId, !isFavorite) + } +// view.showFavoriteIcon(!isFavorite) + } catch (e: RocketChatException) { + Timber.e(e, "Error while trying to favorite/unfavorite chat room.") + e.message?.let { + view.showMessage(it) + }.ifNull { + view.showGenericErrorMessage() + } + } + } + } + private suspend fun getCurrentUser(): User? { userHelper.user()?.let { return it diff --git a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt index 638abd4234..5efc8d9b5c 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt @@ -7,4 +7,7 @@ interface ChatRoomsView : LoadingView, MessageView { fun showLoadingRoom(name: CharSequence) fun hideLoadingRoom() + +// fun showFavoriteIcon(isFavorite:Boolean) + } \ No newline at end of file diff --git a/app/src/main/java/chat/rocket/android/chatrooms/ui/ChatRoomsFragment.kt b/app/src/main/java/chat/rocket/android/chatrooms/ui/ChatRoomsFragment.kt index 58f3355722..e5b5f9e7eb 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/ui/ChatRoomsFragment.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/ui/ChatRoomsFragment.kt @@ -60,6 +60,7 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView { lateinit var analyticsManager: AnalyticsManager private lateinit var viewModel: ChatRoomsViewModel + private lateinit var adapter: RoomsAdapter private var searchView: SearchView? = null private var sortView: MenuItem? = null @@ -110,11 +111,12 @@ class ChatRoomsFragment : Fragment(), ChatRoomsView { analyticsManager.logScreenView(ScreenViewEvent.ChatRooms) } + private fun subscribeUi() { ui { - val adapter = RoomsAdapter { room -> + adapter = RoomsAdapter ({ room -> presenter.loadChatRoom(room) - } + },presenter) recycler_view.layoutManager = LinearLayoutManager(it) recycler_view.addItemDecoration( diff --git a/app/src/main/java/chat/rocket/android/chatrooms/ui/bottomsheet/ChatRoomActionBottomSheet.kt b/app/src/main/java/chat/rocket/android/chatrooms/ui/bottomsheet/ChatRoomActionBottomSheet.kt new file mode 100644 index 0000000000..088940b3a9 --- /dev/null +++ b/app/src/main/java/chat/rocket/android/chatrooms/ui/bottomsheet/ChatRoomActionBottomSheet.kt @@ -0,0 +1,76 @@ +package chat.rocket.android.chatroom.ui.bottomsheet + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import chat.rocket.android.R +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import kotlinx.android.synthetic.main.message_action_item.view.* +import kotlinx.android.synthetic.main.message_bottomsheet.* + +class ChatRoomActionBottomSheet : BottomSheetDialogFragment() { + + private var adapter = ChatRoomActionAdapter() + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + return inflater.inflate(R.layout.message_bottomsheet, container, false) + } + + fun addItems(items: List, itemClickListener: MenuItem.OnMenuItemClickListener) { + adapter.addItems(items, ActionItemClickListener(dismissAction = { dismiss() }, + itemClickListener = itemClickListener)) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + bottomsheet_recycler_view.layoutManager = LinearLayoutManager(context) + bottomsheet_recycler_view.adapter = adapter + } + + private class ActionItemClickListener( + val dismissAction: () -> Unit, + val itemClickListener: MenuItem.OnMenuItemClickListener + ) + + private class ChatRoomActionAdapter : RecyclerView.Adapter() { + + private lateinit var itemClickListener: ActionItemClickListener + private val menuItems = mutableListOf() + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChatRoomActionViewHolder { + return ChatRoomActionViewHolder( + LayoutInflater.from(parent.context).inflate(R.layout.message_action_item, parent, false) + ) + } + + override fun getItemCount() = menuItems.size + + override fun onBindViewHolder(holder: ChatRoomActionViewHolder, position: Int) { + holder.bind(menuItems[position], itemClickListener) + } + + fun addItems(items: List, itemClickListener: ActionItemClickListener) { + this.itemClickListener = itemClickListener + menuItems.clear() + menuItems.addAll(items) + notifyDataSetChanged() + } + } + + private class ChatRoomActionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + fun bind(item: MenuItem, itemClickListener: ActionItemClickListener) { + with(itemView) { + message_action_title.text = item.title + message_action_icon.setImageDrawable(item.icon) + setOnClickListener { + itemClickListener.itemClickListener.onMenuItemClick(item) + itemClickListener.dismissAction.invoke() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_flag_black_24dp.xml b/app/src/main/res/drawable/ic_flag_black_24dp.xml new file mode 100644 index 0000000000..82ef10455c --- /dev/null +++ b/app/src/main/res/drawable/ic_flag_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_star_border_black_24dp.xml b/app/src/main/res/drawable/ic_star_border_black_24dp.xml new file mode 100644 index 0000000000..b36536b997 --- /dev/null +++ b/app/src/main/res/drawable/ic_star_border_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_visibility_off_black_24dp.xml b/app/src/main/res/drawable/ic_visibility_off_black_24dp.xml new file mode 100644 index 0000000000..689f3f47c1 --- /dev/null +++ b/app/src/main/res/drawable/ic_visibility_off_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/item_chat.xml b/app/src/main/res/layout/item_chat.xml index febbd65fe6..862efb8085 100644 --- a/app/src/main/res/layout/item_chat.xml +++ b/app/src/main/res/layout/item_chat.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" + android:id="@+id/item_container" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:paddingStart="@dimen/screen_edge_left_and_right_padding" diff --git a/app/src/main/res/menu/chatrooms_action.xml b/app/src/main/res/menu/chatrooms_action.xml new file mode 100644 index 0000000000..890cf2714b --- /dev/null +++ b/app/src/main/res/menu/chatrooms_action.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + \ No newline at end of file From d4ebb4b622cec5fb17faaa2e58e41728adefe1c1 Mon Sep 17 00:00:00 2001 From: shubhsherl Date: Fri, 14 Dec 2018 21:47:00 +0530 Subject: [PATCH 2/7] add markAsRead functionality --- .../rocket/android/chatrooms/adapter/RoomsAdapter.kt | 5 ++++- .../rocket/android/chatrooms/adapter/ViewHolder.kt | 2 +- .../chatrooms/presentation/ChatRoomsPresenter.kt | 12 ++++++++++++ app/src/main/res/drawable/ic_star_black_24dp.xml | 9 +++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/drawable/ic_star_black_24dp.xml diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt index ed9b46d341..a13f48bf18 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt @@ -1,5 +1,6 @@ package chat.rocket.android.chatrooms.adapter +import android.util.Log import android.view.MenuItem import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView @@ -7,7 +8,9 @@ import chat.rocket.android.R import chat.rocket.android.chatroom.uimodel.toViewType import chat.rocket.android.chatrooms.adapter.model.RoomUiModel import chat.rocket.android.chatrooms.presentation.ChatRoomsPresenter +import chat.rocket.android.util.extensions.ifNotNullNorEmpty import chat.rocket.android.util.extensions.inflate +import chat.rocket.common.util.ifNull class RoomsAdapter(private val listener: (RoomUiModel) -> Unit, presenter: ChatRoomsPresenter) : RecyclerView.Adapter>() { @@ -85,7 +88,7 @@ class RoomsAdapter(private val listener: (RoomUiModel) -> Unit, presenter: ChatR } R.id.action_read->{ - + this.unread.ifNotNullNorEmpty{ presenter.markRoomAsRead(this.id) } } R.id.action_hide_room->{ diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt index 651f6e758f..4b1d57849c 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt @@ -51,7 +51,7 @@ abstract class ViewHolder>( val menuItems = view.context.inflate(R.menu.chatrooms_action).toList() menuItems.find { it.itemId == R.id.action_favorite_room }?.apply { setTitle(if ((it as RoomUiModel).favorite == true) R.string.title_unfavorite_chat else R.string.title_favorite_chat) - setIcon(if (it.favorite == true) R.drawable.ic_star_yellow_24dp else R.drawable.ic_star_border_black_24dp) + setIcon(if (it.favorite == true) R.drawable.ic_star_black_24dp else R.drawable.ic_star_border_black_24dp) isChecked = (it.favorite==true) } view.context?.let { diff --git a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt index 0fad021283..74451eec6c 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt @@ -23,6 +23,7 @@ import chat.rocket.common.model.roomTypeOf import chat.rocket.common.util.ifNull import chat.rocket.core.internal.realtime.createDirectMessage import chat.rocket.core.internal.rest.favorite +import chat.rocket.core.internal.rest.markAsRead import chat.rocket.core.internal.rest.me import chat.rocket.core.internal.rest.show import kotlinx.coroutines.withTimeout @@ -165,6 +166,17 @@ class ChatRoomsPresenter @Inject constructor( } } + fun markRoomAsRead(roomId: String) { + launchUI(strategy) { + try { + retryIO(description = "markAsRead($roomId)") { client.markAsRead(roomId) } + } catch (ex: RocketChatException) { + view.showMessage(ex.message!!) // TODO Remove. + Timber.e(ex) // FIXME: Right now we are only catching the exception with Timber. + } + } + } + private suspend fun getCurrentUser(): User? { userHelper.user()?.let { return it diff --git a/app/src/main/res/drawable/ic_star_black_24dp.xml b/app/src/main/res/drawable/ic_star_black_24dp.xml new file mode 100644 index 0000000000..a87ca098da --- /dev/null +++ b/app/src/main/res/drawable/ic_star_black_24dp.xml @@ -0,0 +1,9 @@ + + + From 28323296d03c83e2384383d9fc75332fabf7fe5d Mon Sep 17 00:00:00 2001 From: shubhsherl Date: Thu, 20 Dec 2018 00:49:25 +0530 Subject: [PATCH 3/7] add leave/hide room and markunread --- .../chatrooms/adapter/RoomViewHolder.kt | 11 ++-- .../android/chatrooms/adapter/RoomsAdapter.kt | 6 +- .../android/chatrooms/adapter/ViewHolder.kt | 6 +- .../presentation/ChatRoomsPresenter.kt | 64 +++++++++++++++++-- .../chatrooms/presentation/ChatRoomsView.kt | 2 - .../res/drawable/ic_leave_room_black_24dp.xml | 9 +++ app/src/main/res/menu/chatrooms_action.xml | 10 +-- app/src/main/res/values-de/strings.xml | 6 ++ app/src/main/res/values-es/strings.xml | 6 ++ app/src/main/res/values-fr/strings.xml | 9 +++ app/src/main/res/values-hi-rIN/strings.xml | 6 ++ app/src/main/res/values-it/strings.xml | 6 ++ app/src/main/res/values-ja/strings.xml | 6 ++ app/src/main/res/values-pt-rBR/strings.xml | 7 ++ app/src/main/res/values-ru-rRU/strings.xml | 6 ++ app/src/main/res/values-tr/strings.xml | 6 ++ app/src/main/res/values-uk/strings.xml | 6 ++ app/src/main/res/values/strings.xml | 6 ++ 18 files changed, 155 insertions(+), 23 deletions(-) create mode 100644 app/src/main/res/drawable/ic_leave_room_black_24dp.xml diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt index e12161626f..dd470737bc 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomViewHolder.kt @@ -17,11 +17,6 @@ import kotlinx.android.synthetic.main.unread_messages_badge.view.* class RoomViewHolder(itemView: View, private val listener: (RoomUiModel) -> Unit, actionsListener: ActionsListener) : ViewHolder(itemView, actionsListener) { - init { - with(itemView) { - setupActionMenu(itemView) - } - } private val resources: Resources = itemView.resources private val channelIcon: Drawable = resources.getDrawable(R.drawable.ic_hashtag_12dp, null) private val groupIcon: Drawable = resources.getDrawable(R.drawable.ic_lock_12_dp, null) @@ -30,6 +25,12 @@ class RoomViewHolder(itemView: View, private val listener: (RoomUiModel) -> Unit private val busyIcon: Drawable = resources.getDrawable(R.drawable.ic_status_busy_12dp, null) private val offlineIcon: Drawable = resources.getDrawable(R.drawable.ic_status_invisible_12dp, null) + init { + with(itemView) { + setupActionMenu(itemView) + } + } + override fun bindViews(data: RoomItemHolder) { val room = data.data with(itemView) { diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt index a13f48bf18..e1aca5d725 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt @@ -85,13 +85,13 @@ class RoomsAdapter(private val listener: (RoomUiModel) -> Unit, presenter: ChatR presenter.toggleFavoriteChatRoom(this.id, this.favorite==true) } R.id.action_leave_room-> { - + presenter.leaveChatRoom(this.id, this.type) } R.id.action_read->{ - this.unread.ifNotNullNorEmpty{ presenter.markRoomAsRead(this.id) } + presenter.toggleMarkRead(this.id, this.unread) } R.id.action_hide_room->{ - + presenter.hideRoom(this.id, this.type) } else -> TODO("Not implemented") } diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt index 4b1d57849c..e9deabfae9 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt @@ -15,6 +15,7 @@ import chat.rocket.android.R import chat.rocket.android.chatroom.ui.bottomsheet.ChatRoomActionBottomSheet import chat.rocket.android.chatroom.ui.bottomsheet.MessageActionsBottomSheet import chat.rocket.android.chatrooms.adapter.model.RoomUiModel +import chat.rocket.android.util.extensions.ifNotNullNorEmpty import chat.rocket.android.util.extensions.inflate import chat.rocket.android.util.extensions.toList import chat.rocket.core.model.isSystemMessage @@ -50,10 +51,13 @@ abstract class ViewHolder>( vm.data.let { val menuItems = view.context.inflate(R.menu.chatrooms_action).toList() menuItems.find { it.itemId == R.id.action_favorite_room }?.apply { - setTitle(if ((it as RoomUiModel).favorite == true) R.string.title_unfavorite_chat else R.string.title_favorite_chat) + setTitle(if ((it as RoomUiModel).favorite == true) R.string.action_unfavorite else R.string.action_favorite) setIcon(if (it.favorite == true) R.drawable.ic_star_black_24dp else R.drawable.ic_star_border_black_24dp) isChecked = (it.favorite==true) } + menuItems.find { it.itemId == R.id.action_read }?.apply { + setTitle(if ((it as RoomUiModel).unread.isNullOrEmpty()) R.string.action_mark_unread else R.string.action_mark_read) + } view.context?.let { if (it is ContextThemeWrapper && it is AppCompatActivity) { with(it) { diff --git a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt index 74451eec6c..e73cf9c556 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt @@ -1,11 +1,13 @@ package chat.rocket.android.chatrooms.presentation +import android.util.Log import chat.rocket.android.R import chat.rocket.android.chatrooms.adapter.model.RoomUiModel import chat.rocket.android.chatrooms.domain.FetchChatRoomsInteractor import chat.rocket.android.core.lifecycle.CancelStrategy import chat.rocket.android.db.DatabaseManager import chat.rocket.android.db.model.ChatRoomEntity +import chat.rocket.android.db.model.FullMessage import chat.rocket.android.helper.UserHelper import chat.rocket.android.infrastructure.LocalRepository import chat.rocket.android.main.presentation.MainNavigator @@ -13,6 +15,8 @@ import chat.rocket.android.server.domain.SettingsRepository import chat.rocket.android.server.domain.useRealName import chat.rocket.android.server.domain.useSpecialCharsOnRoom import chat.rocket.android.server.infraestructure.ConnectionManager +import chat.rocket.android.server.infraestructure.DatabaseMessageMapper +import chat.rocket.android.server.infraestructure.DatabaseMessagesRepository import chat.rocket.android.util.extension.launchUI import chat.rocket.android.util.retryDB import chat.rocket.android.util.retryIO @@ -22,10 +26,7 @@ import chat.rocket.common.model.User import chat.rocket.common.model.roomTypeOf import chat.rocket.common.util.ifNull import chat.rocket.core.internal.realtime.createDirectMessage -import chat.rocket.core.internal.rest.favorite -import chat.rocket.core.internal.rest.markAsRead -import chat.rocket.core.internal.rest.me -import chat.rocket.core.internal.rest.show +import chat.rocket.core.internal.rest.* import kotlinx.coroutines.withTimeout import timber.log.Timber import javax.inject.Inject @@ -153,8 +154,13 @@ class ChatRoomsPresenter @Inject constructor( // Note that if it is favorite then the user wants to unfavorite - and vice versa. retryIO("favorite($roomId, $isFavorite)") { client.favorite(roomId, !isFavorite) + val rooms = retryIO("fetch chatRooms", times = 10, + initialDelay = 200, maxDelay = 2000) { + client.chatRooms().update + } + Timber.d("Refreshing rooms: $rooms") + dbManager.processRooms(rooms) } -// view.showFavoriteIcon(!isFavorite) } catch (e: RocketChatException) { Timber.e(e, "Error while trying to favorite/unfavorite chat room.") e.message?.let { @@ -166,10 +172,54 @@ class ChatRoomsPresenter @Inject constructor( } } - fun markRoomAsRead(roomId: String) { + fun toggleMarkRead(roomId: String, unread: String?) { launchUI(strategy) { try { - retryIO(description = "markAsRead($roomId)") { client.markAsRead(roomId) } + if(unread.isNullOrEmpty()) { + retryIO(description = "markAsUnread($roomId)") { client.markAsUnread(roomId) } + val rooms = retryIO("fetch chatRooms", times = 10, + initialDelay = 200, maxDelay = 2000) { + client.chatRooms().update + } + Timber.d("Refreshing rooms: $rooms") + dbManager.processRooms(rooms) + } + else + retryIO(description = "markAsRead($roomId)") { client.markAsRead(roomId) } + } catch (ex: RocketChatException) { + view.showMessage(ex.message!!) // TODO Remove. + Timber.e(ex) // FIXME: Right now we are only catching the exception with Timber. + } + } + } + + fun leaveChatRoom(roomId: String, roomType: RoomType) { + launchUI(strategy) { + try { + retryIO(description = "leaveChat($roomId, $roomType)") { client.leaveChat(roomId, roomType) } + val rooms = retryIO("fetch chatRooms", times = 10, + initialDelay = 200, maxDelay = 2000) { + client.chatRooms().update + } + Timber.d("Refreshing rooms: $rooms") + dbManager.processRooms(rooms) + } catch (ex: RocketChatException) { + view.showMessage(ex.message!!) // TODO Remove. + Timber.e(ex) // FIXME: Right now we are only catching the exception with Timber. + } + } + } + + fun hideRoom(roomId: String, roomType: RoomType) { + launchUI(strategy) { + try { + retryIO(description = "hide($roomId, $roomType, ${true})") { client.hide(roomId, roomType, hideRoom = true) } + val rooms = retryIO("fetch chatRooms", times = 10, + initialDelay = 200, maxDelay = 2000) { + client.chatRooms().update + } + Timber.d("Refreshing rooms: $rooms") + dbManager.processRooms(rooms) } catch (ex: RocketChatException) { view.showMessage(ex.message!!) // TODO Remove. Timber.e(ex) // FIXME: Right now we are only catching the exception with Timber. diff --git a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt index 5efc8d9b5c..08f8e412ee 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt @@ -8,6 +8,4 @@ interface ChatRoomsView : LoadingView, MessageView { fun hideLoadingRoom() -// fun showFavoriteIcon(isFavorite:Boolean) - } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_leave_room_black_24dp.xml b/app/src/main/res/drawable/ic_leave_room_black_24dp.xml new file mode 100644 index 0000000000..6f40d77253 --- /dev/null +++ b/app/src/main/res/drawable/ic_leave_room_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/menu/chatrooms_action.xml b/app/src/main/res/menu/chatrooms_action.xml index 890cf2714b..41b9072d8f 100644 --- a/app/src/main/res/menu/chatrooms_action.xml +++ b/app/src/main/res/menu/chatrooms_action.xml @@ -5,21 +5,21 @@ + android:title="@string/action_hide_room" /> + android:title="@string/action_mark_read" /> + android:title="@string/action_favorite" /> + android:icon="@drawable/ic_leave_room_black_24dp" + android:title="@string/action_leave_room" /> \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 3dfbad4ae3..b8a1e13f8d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -44,6 +44,12 @@ Erstelle Abmelden Eine Datei anhängen + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite Bestätige Passwort Änderung Trete Chat bei Erstelle Account diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 54af22f1e8..f3ecade422 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -40,6 +40,12 @@ Crear canal Create Cerrar sesión + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite Attach a file Confirmar cambio de contraseña Unirse al chat diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4d69d7b63f..59e36453d9 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -25,6 +25,15 @@ les permis Êtes-vous sûr? Détails de la chaîne + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite + Licence + Are you sure? + Channel Details Sujet Annonce La description diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 00e260222e..b10f00715f 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -39,6 +39,12 @@ सेटिंग्स चैनल बनाएं बनाएं + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite लोग आउट करें एक फ़ाइल जोडो पासवर्ड परिवर्तन की पुष्टि करें diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d0c7219017..e2cab9f830 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -39,6 +39,12 @@ Parametri Crea canale Crea + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite Disconnettersi Ceangail comhad Conferma Cambio Password diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 97b67eb741..6f70c4c869 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -40,6 +40,12 @@ チャンネル作成 作ります ログアウト + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite Attach a file 変更したパスワードの確認 チャットに参加 diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index aab1531b47..f5232d7758 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -23,6 +23,13 @@ Sobre Criar chat Licença + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite + Licença Você tem certeza? Detalhes do canal Tópico diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index ba90c51586..2b3c973193 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -39,6 +39,12 @@ Настройки Создать канал Создать + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite Выйти Прикрепить файл Подтверждение изменения пароля diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 69719c7923..1cf43e150e 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -40,6 +40,12 @@ Yeni Kanal Oluştur Oluştur Çıkış Yap + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite Attach a file Şifre Değişikliğini Onaylayın Sohbete Bağlan diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index b63e0f60f3..a60c67f3b5 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -40,6 +40,12 @@ Створити канал Створити Вийти + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite Attach a file Підтвердження зміни пароля Приєднатися до чату diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a2d2384b68..67c43011f5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -47,6 +47,12 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin Terms of Service Privacy Policy Search + Mark As Unread + Mark As Read + Hide Room + Leave Room + Favorite + Unfavorite Update Settings Create channel From 18426e47795cd018ba49a875cec2cea8b0d06037 Mon Sep 17 00:00:00 2001 From: shubhsherl Date: Thu, 20 Dec 2018 01:02:32 +0530 Subject: [PATCH 4/7] remove unnecessary imports/lines --- .../rocket/android/chatrooms/adapter/RoomsAdapter.kt | 5 ----- .../rocket/android/chatrooms/adapter/ViewHolder.kt | 10 ---------- .../chatrooms/presentation/ChatRoomsPresenter.kt | 5 +---- .../android/chatrooms/presentation/ChatRoomsView.kt | 1 - 4 files changed, 1 insertion(+), 20 deletions(-) diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt index e1aca5d725..c52068328b 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/RoomsAdapter.kt @@ -1,22 +1,17 @@ package chat.rocket.android.chatrooms.adapter -import android.util.Log import android.view.MenuItem import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import chat.rocket.android.R -import chat.rocket.android.chatroom.uimodel.toViewType import chat.rocket.android.chatrooms.adapter.model.RoomUiModel import chat.rocket.android.chatrooms.presentation.ChatRoomsPresenter -import chat.rocket.android.util.extensions.ifNotNullNorEmpty import chat.rocket.android.util.extensions.inflate -import chat.rocket.common.util.ifNull class RoomsAdapter(private val listener: (RoomUiModel) -> Unit, presenter: ChatRoomsPresenter) : RecyclerView.Adapter>() { private val enableActions: Boolean = true - init { setHasStableIds(true) } diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt index e9deabfae9..9305a50d60 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt @@ -1,24 +1,15 @@ package chat.rocket.android.chatrooms.adapter -import android.content.Context -import android.content.ContextWrapper -import android.util.Log import android.view.ContextThemeWrapper import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.core.view.children -import androidx.lifecycle.Lifecycle import androidx.recyclerview.widget.RecyclerView import chat.rocket.android.R import chat.rocket.android.chatroom.ui.bottomsheet.ChatRoomActionBottomSheet -import chat.rocket.android.chatroom.ui.bottomsheet.MessageActionsBottomSheet import chat.rocket.android.chatrooms.adapter.model.RoomUiModel -import chat.rocket.android.util.extensions.ifNotNullNorEmpty import chat.rocket.android.util.extensions.inflate import chat.rocket.android.util.extensions.toList -import chat.rocket.core.model.isSystemMessage abstract class ViewHolder>( itemView: View, @@ -43,7 +34,6 @@ abstract class ViewHolder>( fun onActionSelected(item: MenuItem, room: RoomUiModel) } - internal fun setupActionMenu(view: View) { view.setOnLongClickListener{ if (data?.data is RoomUiModel) { diff --git a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt index e73cf9c556..a259abca5d 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsPresenter.kt @@ -1,13 +1,11 @@ package chat.rocket.android.chatrooms.presentation -import android.util.Log import chat.rocket.android.R import chat.rocket.android.chatrooms.adapter.model.RoomUiModel import chat.rocket.android.chatrooms.domain.FetchChatRoomsInteractor import chat.rocket.android.core.lifecycle.CancelStrategy import chat.rocket.android.db.DatabaseManager import chat.rocket.android.db.model.ChatRoomEntity -import chat.rocket.android.db.model.FullMessage import chat.rocket.android.helper.UserHelper import chat.rocket.android.infrastructure.LocalRepository import chat.rocket.android.main.presentation.MainNavigator @@ -15,8 +13,6 @@ import chat.rocket.android.server.domain.SettingsRepository import chat.rocket.android.server.domain.useRealName import chat.rocket.android.server.domain.useSpecialCharsOnRoom import chat.rocket.android.server.infraestructure.ConnectionManager -import chat.rocket.android.server.infraestructure.DatabaseMessageMapper -import chat.rocket.android.server.infraestructure.DatabaseMessagesRepository import chat.rocket.android.util.extension.launchUI import chat.rocket.android.util.retryDB import chat.rocket.android.util.retryIO @@ -34,6 +30,7 @@ import javax.inject.Named import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine + class ChatRoomsPresenter @Inject constructor( private val view: ChatRoomsView, private val strategy: CancelStrategy, diff --git a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt index 08f8e412ee..638abd4234 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/presentation/ChatRoomsView.kt @@ -7,5 +7,4 @@ interface ChatRoomsView : LoadingView, MessageView { fun showLoadingRoom(name: CharSequence) fun hideLoadingRoom() - } \ No newline at end of file From 8015de31ede79caefd9a0d819ff67b7ae025e76c Mon Sep 17 00:00:00 2001 From: shubhsherl Date: Sat, 22 Dec 2018 01:19:26 +0530 Subject: [PATCH 5/7] change icons color --- .../chat/rocket/android/chatrooms/adapter/ViewHolder.kt | 2 +- .../drawable/{ic_flag_black_24dp.xml => ic_flag_24dp.xml} | 2 +- ...c_leave_room_black_24dp.xml => ic_leave_room_24dp.xml} | 2 +- .../drawable/{ic_star_black_24dp.xml => ic_star_24dp.xml} | 2 +- ...star_border_black_24dp.xml => ic_star_border_24dp.xml} | 2 +- ...lity_off_black_24dp.xml => ic_visibility_off_24dp.xml} | 2 +- app/src/main/res/menu/chatrooms_action.xml | 8 ++++---- 7 files changed, 10 insertions(+), 10 deletions(-) rename app/src/main/res/drawable/{ic_flag_black_24dp.xml => ic_flag_24dp.xml} (85%) rename app/src/main/res/drawable/{ic_leave_room_black_24dp.xml => ic_leave_room_24dp.xml} (89%) rename app/src/main/res/drawable/{ic_star_black_24dp.xml => ic_star_24dp.xml} (87%) rename app/src/main/res/drawable/{ic_star_border_black_24dp.xml => ic_star_border_24dp.xml} (89%) rename app/src/main/res/drawable/{ic_visibility_off_black_24dp.xml => ic_visibility_off_24dp.xml} (94%) diff --git a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt index 9305a50d60..e21410a3f2 100644 --- a/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/chatrooms/adapter/ViewHolder.kt @@ -42,7 +42,7 @@ abstract class ViewHolder>( val menuItems = view.context.inflate(R.menu.chatrooms_action).toList() menuItems.find { it.itemId == R.id.action_favorite_room }?.apply { setTitle(if ((it as RoomUiModel).favorite == true) R.string.action_unfavorite else R.string.action_favorite) - setIcon(if (it.favorite == true) R.drawable.ic_star_black_24dp else R.drawable.ic_star_border_black_24dp) + setIcon(if (it.favorite == true) R.drawable.ic_star_24dp else R.drawable.ic_star_border_24dp) isChecked = (it.favorite==true) } menuItems.find { it.itemId == R.id.action_read }?.apply { diff --git a/app/src/main/res/drawable/ic_flag_black_24dp.xml b/app/src/main/res/drawable/ic_flag_24dp.xml similarity index 85% rename from app/src/main/res/drawable/ic_flag_black_24dp.xml rename to app/src/main/res/drawable/ic_flag_24dp.xml index 82ef10455c..03cbf7d286 100644 --- a/app/src/main/res/drawable/ic_flag_black_24dp.xml +++ b/app/src/main/res/drawable/ic_flag_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_leave_room_black_24dp.xml b/app/src/main/res/drawable/ic_leave_room_24dp.xml similarity index 89% rename from app/src/main/res/drawable/ic_leave_room_black_24dp.xml rename to app/src/main/res/drawable/ic_leave_room_24dp.xml index 6f40d77253..3fc9f003b6 100644 --- a/app/src/main/res/drawable/ic_leave_room_black_24dp.xml +++ b/app/src/main/res/drawable/ic_leave_room_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_star_black_24dp.xml b/app/src/main/res/drawable/ic_star_24dp.xml similarity index 87% rename from app/src/main/res/drawable/ic_star_black_24dp.xml rename to app/src/main/res/drawable/ic_star_24dp.xml index a87ca098da..b85c696c2a 100644 --- a/app/src/main/res/drawable/ic_star_black_24dp.xml +++ b/app/src/main/res/drawable/ic_star_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_star_border_black_24dp.xml b/app/src/main/res/drawable/ic_star_border_24dp.xml similarity index 89% rename from app/src/main/res/drawable/ic_star_border_black_24dp.xml rename to app/src/main/res/drawable/ic_star_border_24dp.xml index b36536b997..8704105e1e 100644 --- a/app/src/main/res/drawable/ic_star_border_black_24dp.xml +++ b/app/src/main/res/drawable/ic_star_border_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_visibility_off_black_24dp.xml b/app/src/main/res/drawable/ic_visibility_off_24dp.xml similarity index 94% rename from app/src/main/res/drawable/ic_visibility_off_black_24dp.xml rename to app/src/main/res/drawable/ic_visibility_off_24dp.xml index 689f3f47c1..da65c447e5 100644 --- a/app/src/main/res/drawable/ic_visibility_off_black_24dp.xml +++ b/app/src/main/res/drawable/ic_visibility_off_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/menu/chatrooms_action.xml b/app/src/main/res/menu/chatrooms_action.xml index 41b9072d8f..d8dfe95707 100644 --- a/app/src/main/res/menu/chatrooms_action.xml +++ b/app/src/main/res/menu/chatrooms_action.xml @@ -4,22 +4,22 @@ \ No newline at end of file From 5da8aef700cfa760bd51322c07f2419985facbf3 Mon Sep 17 00:00:00 2001 From: shubhsherl Date: Tue, 19 Mar 2019 10:49:48 +0530 Subject: [PATCH 6/7] remove repeated strings --- app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 4 ---- app/src/main/res/values-hi-rIN/strings.xml | 1 - app/src/main/res/values-ja/strings.xml | 1 - app/src/main/res/values-pt-rBR/strings.xml | 2 -- app/src/main/res/values-ru-rRU/strings.xml | 1 - app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 1 - 9 files changed, 13 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b8a1e13f8d..8025b1e1ea 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -48,7 +48,6 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite Bestätige Passwort Änderung Trete Chat bei diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f3ecade422..4ffd72009e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -44,7 +44,6 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite Attach a file Confirmar cambio de contraseña diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 59e36453d9..2d12473cb2 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -29,11 +29,7 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite - Licence - Are you sure? - Channel Details Sujet Annonce La description diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index b10f00715f..2e4cee426a 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -43,7 +43,6 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite लोग आउट करें एक फ़ाइल जोडो diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 6f70c4c869..3fb6b94dfa 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -44,7 +44,6 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite Attach a file 変更したパスワードの確認 diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index f5232d7758..91228026da 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -27,9 +27,7 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite - Licença Você tem certeza? Detalhes do canal Tópico diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 2b3c973193..b33c6599ab 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -43,7 +43,6 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite Выйти Прикрепить файл diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 1cf43e150e..3086a5ec75 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -44,7 +44,6 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite Attach a file Şifre Değişikliğini Onaylayın diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index a60c67f3b5..e7d688b891 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -44,7 +44,6 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite Attach a file Підтвердження зміни пароля From 66629f1558fee5f1191996ddb84cd43240fb3d55 Mon Sep 17 00:00:00 2001 From: shubhsherl Date: Tue, 19 Mar 2019 11:38:19 +0530 Subject: [PATCH 7/7] add missing translation string --- app/src/main/res/values-fa/strings.xml | 5 +++++ app/src/main/res/values-it/strings.xml | 1 - app/src/main/res/values-zh-rCN/strings.xml | 5 +++++ app/src/main/res/values/strings.xml | 1 - 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 29026d081b..3b8c813a39 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -35,6 +35,11 @@ شرایط خدمات رسانی سیاست حفظ جریم خصوصی جست‌وجو + Mark As Unread + Mark As Read + Hide Room + Leave Room + Unfavorite به روزرسانی تنظیمات ایجاد کانال diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index e2cab9f830..41e50ac46c 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -43,7 +43,6 @@ Mark As Read Hide Room Leave Room - Favorite Unfavorite Disconnettersi Ceangail comhad diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 4bacccc750..1075792a6c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -35,6 +35,11 @@ 服务条款 隐私政策 搜索 + Mark As Unread + Mark As Read + Hide Room + Leave Room + Unfavorite 更新 设置 新建频道 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 67c43011f5..910a2126f3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -51,7 +51,6 @@ https://github.com/RocketChat/java-code-styles/blob/master/CODING_STYLE.md#strin Mark As Read Hide Room Leave Room - Favorite Unfavorite Update Settings