Improvements to separation

This commit is contained in:
Mario Danic 2019-12-29 15:19:51 +01:00 committed by Mario Đanić
parent a9b4846de9
commit f311aa1d16
2 changed files with 81 additions and 77 deletions

View File

@ -22,6 +22,7 @@ package com.nextcloud.talk.newarch.features.conversationsList
import android.app.SearchManager import android.app.SearchManager
import android.content.Context import android.content.Context
import android.content.Intent
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
@ -50,7 +51,9 @@ import com.nextcloud.talk.R.drawable
import com.nextcloud.talk.adapters.items.ConversationItem import com.nextcloud.talk.adapters.items.ConversationItem
import com.nextcloud.talk.controllers.ContactsController import com.nextcloud.talk.controllers.ContactsController
import com.nextcloud.talk.controllers.SettingsController import com.nextcloud.talk.controllers.SettingsController
import com.nextcloud.talk.controllers.bottomsheet.items.BasicListItemWithImage
import com.nextcloud.talk.controllers.bottomsheet.items.listItemsWithImage import com.nextcloud.talk.controllers.bottomsheet.items.listItemsWithImage
import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.newarch.conversationsList.mvp.BaseView import com.nextcloud.talk.newarch.conversationsList.mvp.BaseView
import com.nextcloud.talk.newarch.features.conversationsList.ConversationsListViewState.* import com.nextcloud.talk.newarch.features.conversationsList.ConversationsListViewState.*
import com.nextcloud.talk.newarch.mvvm.ext.initRecyclerView import com.nextcloud.talk.newarch.mvvm.ext.initRecyclerView
@ -58,6 +61,7 @@ import com.nextcloud.talk.newarch.utils.Images
import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.ConductorRemapping import com.nextcloud.talk.utils.ConductorRemapping
import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.ShareUtils
import com.nextcloud.talk.utils.animations.SharedElementTransition import com.nextcloud.talk.utils.animations.SharedElementTransition
import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.bundle.BundleKeys
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
@ -335,6 +339,81 @@ class ConversationsListView : BaseView(), OnQueryTextListener,
) )
} }
private fun getShareIntentForConversation(conversation: Conversation): Intent {
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(
Intent.EXTRA_SUBJECT,
String.format(
context.getString(R.string.nc_share_subject),
context.getString(R.string.nc_app_name)
)
)
// TODO, make sure we ask for password if needed
putExtra(
Intent.EXTRA_TEXT, ShareUtils.getStringForIntent(
context, null, conversation
)
)
type = "text/plain"
}
// TODO filter our own app once we're there
return Intent.createChooser(sendIntent, context.getString(R.string.nc_share_link))
}
private fun getConversationMenuItemsForConversation(conversation: Conversation): MutableList<BasicListItemWithImage> {
val items = mutableListOf<BasicListItemWithImage>()
if (conversation.favorite) {
items.add(
BasicListItemWithImage(
drawable.ic_star_border_black_24dp,
context.getString(R.string.nc_remove_from_favorites)
)
)
} else {
items.add(
BasicListItemWithImage(
drawable.ic_star_black_24dp,
context.getString(R.string.nc_add_to_favorites)
)
)
}
if (conversation.isPublic) {
items.add(
(BasicListItemWithImage(
drawable
.ic_share_black_24dp, context.getString(R.string.nc_share_link)
))
)
}
if (conversation.canLeave(viewModel.currentUserLiveData.value!!)) {
items.add(
BasicListItemWithImage(
drawable.ic_exit_to_app_black_24dp, context.getString
(R.string.nc_leave)
)
)
}
if (conversation.canModerate(viewModel.currentUserLiveData.value!!)) {
items.add(
BasicListItemWithImage(
drawable.ic_delete_grey600_24dp, context.getString(
R.string.nc_delete_call
)
)
)
}
return items
}
override fun getTitle(): String? { override fun getTitle(): String? {
return resources?.getString(R.string.nc_app_name) return resources?.getString(R.string.nc_app_name)
} }
@ -377,8 +456,7 @@ class ConversationsListView : BaseView(), OnQueryTextListener,
MaterialDialog(activity, BottomSheet(WRAP_CONTENT)).show { MaterialDialog(activity, BottomSheet(WRAP_CONTENT)).show {
cornerRadius(res = R.dimen.corner_radius) cornerRadius(res = R.dimen.corner_radius)
title(text = conversation.displayName) title(text = conversation.displayName)
listItemsWithImage( listItemsWithImage(getConversationMenuItemsForConversation(conversation)
viewModel.getConversationMenuItemsForConversation(conversation)
) { dialog, ) { dialog,
index, item -> index, item ->
@ -391,7 +469,7 @@ class ConversationsListView : BaseView(), OnQueryTextListener,
viewModel.changeFavoriteValueForConversation(conversation, true) viewModel.changeFavoriteValueForConversation(conversation, true)
} }
drawable.ic_share_black_24dp -> { drawable.ic_share_black_24dp -> {
startActivity(viewModel.getShareIntentForConversation(conversation)) startActivity(getShareIntentForConversation(conversation))
} }
drawable.ic_exit_to_app_black_24dp -> { drawable.ic_exit_to_app_black_24dp -> {
MaterialDialog(activity).show { MaterialDialog(activity).show {

View File

@ -172,80 +172,6 @@ class ConversationsListViewModel constructor(
}) })
} }
fun getShareIntentForConversation(conversation: Conversation): Intent {
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(
Intent.EXTRA_SUBJECT,
String.format(
context.getString(string.nc_share_subject),
context.getString(R.string.nc_app_name)
)
)
// TODO, make sure we ask for password if needed
putExtra(
Intent.EXTRA_TEXT, ShareUtils.getStringForIntent(
context, null, conversation
)
)
type = "text/plain"
}
// TODO filter our own app once we're there
return Intent.createChooser(sendIntent, context.getString(string.nc_share_link))
}
fun getConversationMenuItemsForConversation(conversation: Conversation): MutableList<BasicListItemWithImage> {
val items = mutableListOf<BasicListItemWithImage>()
if (conversation.favorite) {
items.add(
BasicListItemWithImage(
drawable.ic_star_border_black_24dp,
context.getString(string.nc_remove_from_favorites)
)
)
} else {
items.add(
BasicListItemWithImage(
drawable.ic_star_black_24dp,
context.getString(string.nc_add_to_favorites)
)
)
}
if (conversation.isPublic) {
items.add(
(BasicListItemWithImage(
drawable
.ic_share_black_24dp, context.getString(string.nc_share_link)
))
)
}
if (conversation.canLeave(currentUserLiveData.value!!)) {
items.add(
BasicListItemWithImage(
drawable.ic_exit_to_app_black_24dp, context.getString
(string.nc_leave)
)
)
}
if (conversation.canModerate(currentUserLiveData.value!!)) {
items.add(
BasicListItemWithImage(
drawable.ic_delete_grey600_24dp, context.getString(
string.nc_delete_call
)
)
)
}
return items
}
private suspend fun setConversationUpdateStatus( private suspend fun setConversationUpdateStatus(
conversation: Conversation, conversation: Conversation,