Skip to content
This repository was archived by the owner on Jun 7, 2020. It is now read-only.
Closed
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
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,11 @@ class ChatRoomAdapter(
view,
actionsListener,
reactionListener
) { userId -> navigator?.toUserDetails(userId) }
) { userId ->
if (roomId != null) {
navigator?.toUserDetails(userId,roomId)
}
}
}
BaseUiModel.ViewType.URL_PREVIEW -> {
val view = parent.inflate(R.layout.message_url_preview)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ import chat.rocket.android.util.extensions.addFragmentBackStack

class ChatRoomNavigator(internal val activity: ChatRoomActivity) {

fun toUserDetails(userId: String) {
fun toUserDetails(userId: String,chatRoomId: String) {
activity.addFragmentBackStack(TAG_USER_DETAILS_FRAGMENT, R.id.fragment_container) {
chat.rocket.android.userdetails.ui.newInstance(userId)
chat.rocket.android.userdetails.ui.newInstance(userId,chatRoomId)
}
}

Expand Down Expand Up @@ -69,9 +69,9 @@ class ChatRoomNavigator(internal val activity: ChatRoomActivity) {
}
}

fun toMemberDetails(userId: String) {
fun toMemberDetails(userId: String, chatRoomId: String) {
activity.addFragmentBackStack(TAG_USER_DETAILS_FRAGMENT, R.id.fragment_container) {
chat.rocket.android.userdetails.ui.newInstance(userId)
chat.rocket.android.userdetails.ui.newInstance(userId,chatRoomId)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class MembersPresenter @Inject constructor(
}
}

fun toMemberDetails(memberUiModel: MemberUiModel) {
navigator.toMemberDetails(memberUiModel.userId)
fun toMemberDetails(memberUiModel: MemberUiModel, chatRoomId: String) {
navigator.toMemberDetails(memberUiModel.userId,chatRoomId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class MembersFragment : Fragment(), MembersView {
@Inject
lateinit var analyticsManager: AnalyticsManager
private val adapter: MembersAdapter =
MembersAdapter { memberUiModel -> presenter.toMemberDetails(memberUiModel) }
MembersAdapter { memberUiModel -> presenter.toMemberDetails(memberUiModel,chatRoomId) }
private val linearLayoutManager = LinearLayoutManager(context)
private lateinit var chatRoomId: String

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@ import chat.rocket.android.util.extension.launchUI
import chat.rocket.android.util.extensions.avatarUrl
import chat.rocket.android.util.retryIO
import chat.rocket.common.model.RoomType
import chat.rocket.common.model.of
import chat.rocket.common.model.roomTypeOf
import chat.rocket.common.util.ifNull
import chat.rocket.core.internal.rest.createDirectMessage
import chat.rocket.core.internal.rest.kickUser
import kotlinx.coroutines.experimental.CommonPool
import kotlinx.coroutines.experimental.DefaultDispatcher
import kotlinx.coroutines.experimental.withContext
import timber.log.Timber
Expand Down Expand Up @@ -71,6 +75,46 @@ class UserDetailsPresenter @Inject constructor(
}
}

fun kickUser(userId: String,chatRoomId:String){
launchUI(strategy){
try {
view.showLoading()
dbManager.getRoom(chatRoomId)?.let {
val result = retryIO ("kickUser($userId,$chatRoomId,${roomTypeOf(it.chatRoom.type)})"){
client.kickUser(chatRoomId, roomTypeOf(it.chatRoom.type),userId)
}
if(result){
view.showKickedUserSuccessfullyMessage()
}
}.ifNull {
Timber.e("Couldn't find a room with id: $chatRoomId at current server.")
}
}catch (exception: Exception){
Timber.e(exception)
exception.message?.let {
view.showMessage(it)
}.ifNull {
view.showGenericErrorMessage()
}
}finally {
view.hideLoading()
}
}
}

fun checkDirectMessageRoomType(chatRoomId: String) {
launchUI(strategy){
dbManager.getRoom(chatRoomId)?.let {
when(roomTypeOf(it.chatRoom.type)){
is RoomType.DirectMessage -> view.disableKickButton()
else -> view.enableKickButton()
}
}.ifNull {
Timber.e("Couldn't find a room with id: $chatRoomId at current server.")
}
}
}

fun createDirectMessage(username: String) {
launchUI(strategy) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,17 @@ interface UserDetailsView : LoadingView, MessageView {
status: String,
utcOffset: String
)
/**
* Disable Kick Button
*/
fun disableKickButton()
/**
* Enable Kick Button
*/
fun enableKickButton()

/**
* Shows a message that a channel was successfully created.
*/
fun showKickedUserSuccessfullyMessage()
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,16 @@ import kotlinx.android.synthetic.main.app_bar_chat_room.*
import kotlinx.android.synthetic.main.fragment_user_details.*
import javax.inject.Inject

fun newInstance(userId: String): Fragment {
fun newInstance(userId: String,chatRoomId: String): Fragment {
return UserDetailsFragment().apply {
arguments = Bundle(1).apply {
arguments = Bundle(2).apply {
putString(BUNDLE_USER_ID, userId)
putString(BUNDLE_USER_CHATROOM_ID,chatRoomId)
}
}
}

private const val BUNDLE_USER_CHATROOM_ID = "user_chat_room_id"
internal const val TAG_USER_DETAILS_FRAGMENT = "UserDetailsFragment"
private const val BUNDLE_USER_ID = "user_id"

Expand All @@ -46,6 +48,7 @@ class UserDetailsFragment : Fragment(), UserDetailsView {
@Inject
lateinit var analyticsManager: AnalyticsManager
private lateinit var userId: String
private lateinit var chatRoomId: String
private val handler = Handler()

override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -55,6 +58,7 @@ class UserDetailsFragment : Fragment(), UserDetailsView {
val bundle = arguments
if (bundle != null) {
userId = bundle.getString(BUNDLE_USER_ID)
chatRoomId = bundle.getString(BUNDLE_USER_CHATROOM_ID)
} else {
requireNotNull(bundle) { "no arguments supplied when the fragment was instantiated" }
}
Expand All @@ -72,7 +76,8 @@ class UserDetailsFragment : Fragment(), UserDetailsView {
setupToolbar()
setupListeners()
presenter.loadUserDetails(userId)

presenter.checkDirectMessageRoomType(chatRoomId)
button_kick.setOnClickListener { presenter.kickUser(userId,chatRoomId) }
analyticsManager.logScreenView(ScreenViewEvent.UserDetails)
}

Expand Down Expand Up @@ -107,15 +112,23 @@ class UserDetailsFragment : Fragment(), UserDetailsView {
}

override fun showLoading() {
group_user_details.isVisible = false
view_loading.isVisible = true
}

override fun hideLoading() {
group_user_details.isVisible = true
view_loading.isVisible = false
}

override fun enableKickButton() {
button_kick.isVisible = true
}

override fun disableKickButton() {
button_kick.isVisible = false
}

override fun showKickedUserSuccessfullyMessage() = showMessage(getString(R.string.msg_kick_user_successfully))

override fun showMessage(resId: Int) {
ui { showToast(resId) }
}
Expand Down
16 changes: 16 additions & 0 deletions app/src/main/res/layout/fragment_user_details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -126,5 +126,21 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="image_blur, image_avatar, text_name, text_username, text_message, text_title_status, text_description_status, text_title_timezone, text_description_timezone" />

<Button
android:id="@+id/button_kick"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/screen_edge_left_and_right_margins"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="@string/action_kick_user"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_description_timezone" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
2 changes: 2 additions & 0 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
<string name="action_register">Registrieren</string>
<string name="action_confirm">Bestätigen</string>
<string name="action_delete_account">Konto löschen</string>
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -76,6 +77,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">Entschuldigung, ein Fehler ist aufgetreten, bitte versuchen Sie es noch einmal.</string>
<string name="msg_no_data_to_display">Keine Anzeigedaten vorhanden</string>
<string name="msg_check_this_out">Schau dir das an</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">Register</string> <!-- TODO Add translation -->
<string name="action_confirm">Confirm</string> <!-- TODO Add translation -->
<string name="action_delete_account">Delete account</string> <!-- TODO Add translation -->
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">Lo sentimos, ha ocurrido un error, por favor intente de nuevo</string>
<string name="msg_no_data_to_display">No hay información para mostrar</string>
<string name="msg_check_this_out">Mira esto</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-fa/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">ثبت‌نام</string>
<string name="action_confirm">تایید</string>
<string name="action_delete_account">حذف حساب کاربری</string>
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">متاسفانه مشکلی رخ داد، لطفا دوباره تلاش کنید</string>
<string name="msg_no_data_to_display">اطلاعاتی برای نمایش وجود نداد</string>
<string name="msg_check_this_out">اینجا را ببینید</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">Register</string> <!-- TODO Add translation -->
<string name="action_confirm">Confirm</string> <!-- TODO Add translation -->
<string name="action_delete_account">Delete account</string> <!-- TODO Add translation -->
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">Désolé, une erreur s\'est produite. Veuillez réessayer</string>
<string name="msg_no_data_to_display">Aucune donnée à afficher</string>
<string name="msg_check_this_out">regarde ça</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-hi-rIN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">रजिस्टर</string>
<string name="action_confirm">पुष्टि करें</string>
<string name="action_delete_account">खाता हटा दो</string>
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">क्षमा करें, एक त्रुटि हुई है, कृपया पुनः प्रयास करें</string>
<string name="msg_no_data_to_display">डेटा प्रदर्शित करने के लिए उपलब्ध नहीं हैं</string>
<string name="msg_check_this_out">इसकी जांच करें</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">Registra</string>
<string name="action_confirm">Conferma</string>
<string name="action_delete_account">Elimina utente</string>
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">Mi dispiace, si è verificato un errore, per favore riprova</string>
<string name="msg_no_data_to_display">Nessun dato da visualizzare</string>
<string name="msg_check_this_out">Controllalo</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-ja/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">登録</string>
<string name="action_confirm">確認</string>
<string name="action_delete_account">アカウントを削除する</string>
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">エラーが発生しました。もう一度お試しください。</string>
<string name="msg_no_data_to_display">表示するデータがありません</string>
<string name="msg_check_this_out">これをチェックする</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-pt-rBR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">Registrar</string>
<string name="action_confirm">Confirmar</string>
<string name="action_delete_account">Deletar conta</string>
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">Desculpe, ocorreu um erro, tente novamente</string>
<string name="msg_no_data_to_display">Nenhum dado para exibir</string>
<string name="msg_check_this_out">Veja isso</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-ru-rRU/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">Зарегистрировать</string>
<string name="action_confirm">Подтвердить</string>
<string name="action_delete_account">Удалить аккаунт</string>
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">Произошла ошибка, повторите попытку.</string>
<string name="msg_no_data_to_display">Нет данных для отображения</string>
<string name="msg_check_this_out">Проверь это</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-tr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<string name="action_register">Register</string> <!-- TODO Add translation -->
<string name="action_confirm">Confirm</string> <!-- TODO Add translation -->
<string name="action_delete_account">Delete account</string> <!-- TODO Add translation -->
<string name="action_kick_user">Kick user</string> <!-- TODO Add translation -->

<!-- Settings List -->
<string-array name="settings_actions">
Expand All @@ -73,6 +74,7 @@
</string-array>

<!-- Regular information messages -->
<string name="msg_kick_user_successfully">Kicked user successfully</string> <!-- TODO Add translation -->
<string name="msg_generic_error">Üzgünüz! bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.</string>
<string name="msg_no_data_to_display">Görüntülenecek veri bulunmamaktadır.</string>
<string name="msg_check_this_out">bunu kontrol et</string>
Expand Down
Loading