Fix issue where user could not select a group story.
This commit is contained in:
parent
78de70881f
commit
87ad4be117
4 changed files with 20 additions and 18 deletions
|
@ -20,7 +20,6 @@ import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import org.thoughtcrime.securesms.R
|
import org.thoughtcrime.securesms.R
|
||||||
import org.thoughtcrime.securesms.components.ContactFilterView
|
import org.thoughtcrime.securesms.components.ContactFilterView
|
||||||
import org.thoughtcrime.securesms.contacts.HeaderAction
|
|
||||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
|
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
|
||||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
||||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchMediator
|
import org.thoughtcrime.securesms.contacts.paged.ContactSearchMediator
|
||||||
|
@ -35,6 +34,7 @@ import org.thoughtcrime.securesms.sharing.MultiShareArgs
|
||||||
import org.thoughtcrime.securesms.sharing.ShareSelectionAdapter
|
import org.thoughtcrime.securesms.sharing.ShareSelectionAdapter
|
||||||
import org.thoughtcrime.securesms.sharing.ShareSelectionMappingModel
|
import org.thoughtcrime.securesms.sharing.ShareSelectionMappingModel
|
||||||
import org.thoughtcrime.securesms.stories.Stories
|
import org.thoughtcrime.securesms.stories.Stories
|
||||||
|
import org.thoughtcrime.securesms.stories.Stories.getHeaderAction
|
||||||
import org.thoughtcrime.securesms.stories.settings.create.CreateStoryFlowDialogFragment
|
import org.thoughtcrime.securesms.stories.settings.create.CreateStoryFlowDialogFragment
|
||||||
import org.thoughtcrime.securesms.stories.settings.create.CreateStoryWithViewersFragment
|
import org.thoughtcrime.securesms.stories.settings.create.CreateStoryWithViewersFragment
|
||||||
import org.thoughtcrime.securesms.util.BottomSheetUtil
|
import org.thoughtcrime.securesms.util.BottomSheetUtil
|
||||||
|
@ -257,17 +257,8 @@ class MultiselectForwardFragment :
|
||||||
viewModel.cancelSend()
|
viewModel.cancelSend()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getHeaderAction(): HeaderAction {
|
|
||||||
return HeaderAction(
|
|
||||||
R.string.ContactsCursorLoader_new_story,
|
|
||||||
R.drawable.ic_plus_20
|
|
||||||
) {
|
|
||||||
ChooseStoryTypeBottomSheet().show(childFragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getConfiguration(contactSearchState: ContactSearchState): ContactSearchConfiguration {
|
private fun getConfiguration(contactSearchState: ContactSearchState): ContactSearchConfiguration {
|
||||||
return findListener<SearchConfigurationProvider>()?.getSearchConfiguration(contactSearchState) ?: ContactSearchConfiguration.build {
|
return findListener<SearchConfigurationProvider>()?.getSearchConfiguration(childFragmentManager, contactSearchState) ?: ContactSearchConfiguration.build {
|
||||||
query = contactSearchState.query
|
query = contactSearchState.query
|
||||||
|
|
||||||
if (Stories.isFeatureEnabled() && isSelectedMediaValidForStories()) {
|
if (Stories.isFeatureEnabled() && isSelectedMediaValidForStories()) {
|
||||||
|
@ -275,7 +266,7 @@ class MultiselectForwardFragment :
|
||||||
ContactSearchConfiguration.Section.Stories(
|
ContactSearchConfiguration.Section.Stories(
|
||||||
groupStories = contactSearchState.groupStories,
|
groupStories = contactSearchState.groupStories,
|
||||||
includeHeader = true,
|
includeHeader = true,
|
||||||
headerAction = getHeaderAction(),
|
headerAction = getHeaderAction(childFragmentManager),
|
||||||
expandConfig = ContactSearchConfiguration.ExpandConfig(
|
expandConfig = ContactSearchConfiguration.ExpandConfig(
|
||||||
isExpanded = contactSearchState.expandedSections.contains(ContactSearchConfiguration.SectionKey.STORIES)
|
isExpanded = contactSearchState.expandedSections.contains(ContactSearchConfiguration.SectionKey.STORIES)
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,8 +1,18 @@
|
||||||
package org.thoughtcrime.securesms.conversation.mutiselect.forward
|
package org.thoughtcrime.securesms.conversation.mutiselect.forward
|
||||||
|
|
||||||
|
import androidx.fragment.app.FragmentManager
|
||||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
|
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
|
||||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchState
|
import org.thoughtcrime.securesms.contacts.paged.ContactSearchState
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows a parent of MultiselectForwardFragment to provide a custom search page configuration.
|
||||||
|
*/
|
||||||
interface SearchConfigurationProvider {
|
interface SearchConfigurationProvider {
|
||||||
fun getSearchConfiguration(contactSearchState: ContactSearchState): ContactSearchConfiguration? = null
|
/**
|
||||||
|
* @param fragmentManager The child fragment manager of the MultiselectForwardFragment, to launch actions in to.
|
||||||
|
* @param contactSearchState The search state, to build the configuration from.
|
||||||
|
*
|
||||||
|
* @return A configuration or null. Returning null will result in MultiselectForwardFragment using it's default configuration.
|
||||||
|
*/
|
||||||
|
fun getSearchConfiguration(fragmentManager: FragmentManager, contactSearchState: ContactSearchState): ContactSearchConfiguration? = null
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import android.view.ViewGroup
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.Navigation
|
import androidx.navigation.Navigation
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
|
@ -208,7 +209,7 @@ class MediaSelectionActivity :
|
||||||
viewModel.sendCommand(HudCommand.CloseEmojiSearch)
|
viewModel.sendCommand(HudCommand.CloseEmojiSearch)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSearchConfiguration(contactSearchState: ContactSearchState): ContactSearchConfiguration? {
|
override fun getSearchConfiguration(fragmentManager: FragmentManager, contactSearchState: ContactSearchState): ContactSearchConfiguration? {
|
||||||
return if (isStory) {
|
return if (isStory) {
|
||||||
ContactSearchConfiguration.build {
|
ContactSearchConfiguration.build {
|
||||||
query = contactSearchState.query
|
query = contactSearchState.query
|
||||||
|
@ -217,7 +218,7 @@ class MediaSelectionActivity :
|
||||||
ContactSearchConfiguration.Section.Stories(
|
ContactSearchConfiguration.Section.Stories(
|
||||||
groupStories = contactSearchState.groupStories,
|
groupStories = contactSearchState.groupStories,
|
||||||
includeHeader = true,
|
includeHeader = true,
|
||||||
headerAction = Stories.getHeaderAction(supportFragmentManager)
|
headerAction = Stories.getHeaderAction(fragmentManager)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsIcon
|
||||||
import org.thoughtcrime.securesms.components.settings.DSLSettingsText
|
import org.thoughtcrime.securesms.components.settings.DSLSettingsText
|
||||||
import org.thoughtcrime.securesms.components.settings.configure
|
import org.thoughtcrime.securesms.components.settings.configure
|
||||||
import org.thoughtcrime.securesms.components.settings.conversation.preferences.LargeIconClickPreference
|
import org.thoughtcrime.securesms.components.settings.conversation.preferences.LargeIconClickPreference
|
||||||
import org.thoughtcrime.securesms.util.fragments.findListener
|
import org.thoughtcrime.securesms.util.fragments.requireListener
|
||||||
|
|
||||||
class ChooseStoryTypeBottomSheet : DSLSettingsBottomSheetFragment(
|
class ChooseStoryTypeBottomSheet : DSLSettingsBottomSheetFragment(
|
||||||
layoutId = R.layout.dsl_settings_bottom_sheet_no_handle
|
layoutId = R.layout.dsl_settings_bottom_sheet_no_handle
|
||||||
|
@ -45,7 +45,7 @@ class ChooseStoryTypeBottomSheet : DSLSettingsBottomSheetFragment(
|
||||||
),
|
),
|
||||||
onClick = {
|
onClick = {
|
||||||
dismissAllowingStateLoss()
|
dismissAllowingStateLoss()
|
||||||
findListener<Callback>()?.onNewStoryClicked()
|
requireListener<Callback>().onNewStoryClicked()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -67,7 +67,7 @@ class ChooseStoryTypeBottomSheet : DSLSettingsBottomSheetFragment(
|
||||||
),
|
),
|
||||||
onClick = {
|
onClick = {
|
||||||
dismissAllowingStateLoss()
|
dismissAllowingStateLoss()
|
||||||
findListener<Callback>()?.onGroupStoryClicked()
|
requireListener<Callback>().onGroupStoryClicked()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue