Fixed file sharing in newly created room
This commit is contained in:
parent
3aafed8677
commit
f7064b81f5
9 changed files with 52 additions and 57 deletions
|
@ -413,18 +413,18 @@ internal fun ChatRoomCreationFragment.navigateToGroupInfo() {
|
|||
}
|
||||
}
|
||||
|
||||
internal fun ChatRoomCreationFragment.navigateToChatRoom() {
|
||||
internal fun ChatRoomCreationFragment.navigateToChatRoom(args: Bundle) {
|
||||
if (findNavController().currentDestination?.id == R.id.chatRoomCreationFragment) {
|
||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||
findNavController().navigate(
|
||||
R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment,
|
||||
null,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
} else {
|
||||
findNavController().navigate(
|
||||
R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment,
|
||||
null,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyFragment, true)
|
||||
)
|
||||
}
|
||||
|
@ -440,18 +440,18 @@ internal fun GroupInfoFragment.navigateToChatRoomCreation(args: Bundle?) {
|
|||
}
|
||||
}
|
||||
|
||||
internal fun GroupInfoFragment.navigateToChatRoom() {
|
||||
internal fun GroupInfoFragment.navigateToChatRoom(args: Bundle?) {
|
||||
if (findNavController().currentDestination?.id == R.id.groupInfoFragment) {
|
||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||
findNavController().navigate(
|
||||
R.id.action_groupInfoFragment_to_detailChatRoomFragment,
|
||||
null,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
} else {
|
||||
findNavController().navigate(
|
||||
R.id.action_groupInfoFragment_to_detailChatRoomFragment,
|
||||
null,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyFragment, true)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import org.linphone.LinphoneApplication
|
||||
import org.linphone.R
|
||||
|
@ -37,6 +36,7 @@ import org.linphone.activities.navigateToChatRoom
|
|||
import org.linphone.activities.navigateToGroupInfo
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.ChatRoomCreationFragmentBinding
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.PermissionHelper
|
||||
|
||||
class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>() {
|
||||
|
@ -73,9 +73,7 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
|||
binding.contactsList.layoutManager = layoutManager
|
||||
|
||||
// Divider between items
|
||||
val dividerItemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||
binding.contactsList.addItemDecoration(dividerItemDecoration)
|
||||
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
|
@ -109,7 +107,7 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
|||
viewModel.chatRoomCreatedEvent.observe(viewLifecycleOwner, {
|
||||
it.consume { chatRoom ->
|
||||
sharedViewModel.selectedChatRoom.value = chatRoom
|
||||
navigateToChatRoom()
|
||||
navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel))
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -148,13 +146,6 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
|||
}
|
||||
}
|
||||
|
||||
private fun addParticipantsFromSharedViewModel() {
|
||||
val participants = sharedViewModel.chatRoomParticipants.value
|
||||
if (participants != null && participants.size > 0) {
|
||||
viewModel.selectedAddresses.value = participants
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(
|
||||
requestCode: Int,
|
||||
permissions: Array<out String>,
|
||||
|
@ -171,4 +162,11 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun addParticipantsFromSharedViewModel() {
|
||||
val participants = sharedViewModel.chatRoomParticipants.value
|
||||
if (participants != null && participants.size > 0) {
|
||||
viewModel.selectedAddresses.value = participants
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.MainActivity
|
||||
|
@ -41,6 +40,7 @@ import org.linphone.core.Address
|
|||
import org.linphone.core.ChatRoom
|
||||
import org.linphone.core.ChatRoomCapabilities
|
||||
import org.linphone.databinding.ChatRoomGroupInfoFragmentBinding
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.DialogUtils
|
||||
|
||||
class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
|
||||
|
@ -81,9 +81,7 @@ class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
|
|||
binding.participants.layoutManager = layoutManager
|
||||
|
||||
// Divider between items
|
||||
val dividerItemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||
binding.participants.addItemDecoration(dividerItemDecoration)
|
||||
binding.participants.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
viewModel.participants.observe(viewLifecycleOwner, {
|
||||
adapter.submitList(it)
|
||||
|
@ -114,7 +112,7 @@ class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
|
|||
viewModel.createdChatRoomEvent.observe(viewLifecycleOwner, {
|
||||
it.consume { chatRoom ->
|
||||
sharedViewModel.selectedChatRoom.value = chatRoom
|
||||
navigateToChatRoom()
|
||||
navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel))
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.MainActivity
|
||||
|
@ -34,6 +33,7 @@ import org.linphone.activities.main.fragments.SecureFragment
|
|||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.ChatRoomImdnFragmentBinding
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.RecyclerViewHeaderDecoration
|
||||
|
||||
class ImdnFragment : SecureFragment<ChatRoomImdnFragmentBinding>() {
|
||||
|
@ -92,9 +92,7 @@ class ImdnFragment : SecureFragment<ChatRoomImdnFragmentBinding>() {
|
|||
binding.participantsList.layoutManager = layoutManager
|
||||
|
||||
// Divider between items
|
||||
val dividerItemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||
binding.participantsList.addItemDecoration(dividerItemDecoration)
|
||||
binding.participantsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
// Displays state header
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
|
@ -138,9 +137,7 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
.attachToRecyclerView(binding.chatList)
|
||||
|
||||
// Divider between items
|
||||
val dividerItemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||
binding.chatList.addItemDecoration(dividerItemDecoration)
|
||||
binding.chatList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
listViewModel.chatRooms.observe(viewLifecycleOwner, { chatRooms ->
|
||||
adapter.submitList(chatRooms)
|
||||
|
@ -159,7 +156,7 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
sharedViewModel.destructionPendingChatRoom = chatRoom
|
||||
} else {
|
||||
sharedViewModel.selectedChatRoom.value = chatRoom
|
||||
navigateToChatRoom(createBundleWithSharedTextAndFiles())
|
||||
navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -200,7 +197,7 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
Log.w("[Chat] Found pending chat room from before activity was recreated")
|
||||
sharedViewModel.destructionPendingChatRoom = null
|
||||
sharedViewModel.selectedChatRoom.value = pendingDestructionChatRoom
|
||||
navigateToChatRoom(createBundleWithSharedTextAndFiles())
|
||||
navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel))
|
||||
}
|
||||
|
||||
val localSipUri = arguments?.getString("LocalSipUri")
|
||||
|
@ -274,16 +271,4 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
private fun scrollToTop() {
|
||||
binding.chatList.scrollToPosition(0)
|
||||
}
|
||||
|
||||
private fun createBundleWithSharedTextAndFiles(): Bundle {
|
||||
val bundle = Bundle()
|
||||
bundle.putString("TextToShare", sharedViewModel.textToShare.value.orEmpty())
|
||||
bundle.putStringArrayList("FilesToShare", sharedViewModel.filesToShare.value)
|
||||
|
||||
// Remove values from shared view model
|
||||
sharedViewModel.textToShare.value = ""
|
||||
sharedViewModel.filesToShare.value = arrayListOf()
|
||||
|
||||
return bundle
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
|
@ -122,9 +121,7 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
.attachToRecyclerView(binding.contactsList)
|
||||
|
||||
// Divider between items
|
||||
val dividerItemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||
binding.contactsList.addItemDecoration(dividerItemDecoration)
|
||||
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
// Displays the first letter header
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
|
@ -123,9 +122,7 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
|
|||
.attachToRecyclerView(binding.callLogsList)
|
||||
|
||||
// Divider between items
|
||||
val dividerItemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||
binding.callLogsList.addItemDecoration(dividerItemDecoration)
|
||||
binding.callLogsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
// Displays formatted date header
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.view.MotionEvent
|
|||
import android.view.View
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.fragments.MasterFragment
|
||||
|
@ -32,6 +31,7 @@ import org.linphone.activities.main.recordings.adapters.RecordingsListAdapter
|
|||
import org.linphone.activities.main.recordings.data.RecordingData
|
||||
import org.linphone.activities.main.recordings.viewmodels.RecordingsViewModel
|
||||
import org.linphone.databinding.RecordingsFragmentBinding
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.RecyclerViewHeaderDecoration
|
||||
|
||||
class RecordingsFragment : MasterFragment<RecordingsFragmentBinding, RecordingsListAdapter>() {
|
||||
|
@ -63,9 +63,7 @@ class RecordingsFragment : MasterFragment<RecordingsFragmentBinding, RecordingsL
|
|||
binding.recordingsList.layoutManager = layoutManager
|
||||
|
||||
// Divider between items
|
||||
val dividerItemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||
binding.recordingsList.addItemDecoration(dividerItemDecoration)
|
||||
binding.recordingsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
// Displays the first letter header
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||
|
|
|
@ -21,12 +21,17 @@ package org.linphone.utils
|
|||
|
||||
import android.app.Activity
|
||||
import android.content.*
|
||||
import android.os.Bundle
|
||||
import android.text.format.Formatter.formatShortFileSize
|
||||
import android.util.TypedValue
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.emoji.text.EmojiCompat
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import java.util.*
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.core.tools.Log
|
||||
|
||||
/**
|
||||
|
@ -101,5 +106,24 @@ class AppUtils {
|
|||
Log.e(ex)
|
||||
}
|
||||
}
|
||||
|
||||
fun getDividerDecoration(context: Context, layoutManager: LinearLayoutManager): DividerItemDecoration {
|
||||
val dividerItemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
val divider = ResourcesCompat.getDrawable(context.resources, R.drawable.divider, null)
|
||||
if (divider != null) dividerItemDecoration.setDrawable(divider)
|
||||
return dividerItemDecoration
|
||||
}
|
||||
|
||||
fun createBundleWithSharedTextAndFiles(sharedViewModel: SharedMainViewModel): Bundle {
|
||||
val bundle = Bundle()
|
||||
bundle.putString("TextToShare", sharedViewModel.textToShare.value.orEmpty())
|
||||
bundle.putStringArrayList("FilesToShare", sharedViewModel.filesToShare.value)
|
||||
|
||||
// Remove values from shared view model
|
||||
sharedViewModel.textToShare.value = ""
|
||||
sharedViewModel.filesToShare.value = arrayListOf()
|
||||
|
||||
return bundle
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue