Only display stories if you entered through stories.

fork-5.53.8
Alex Hart 2022-03-10 16:44:21 -04:00 zatwierdzone przez Cody Henthorne
rodzic 4dca554967
commit 9281bcdd7d
6 zmienionych plików z 63 dodań i 19 usunięć

Wyświetl plik

@ -267,7 +267,7 @@ class MultiselectForwardFragment :
}
private fun getConfiguration(contactSearchState: ContactSearchState): ContactSearchConfiguration {
return ContactSearchConfiguration.build {
return findListener<SearchConfigurationProvider>()?.getSearchConfiguration(contactSearchState) ?: ContactSearchConfiguration.build {
query = contactSearchState.query
if (Stories.isFeatureEnabled() && isSelectedMediaValidForStories()) {

Wyświetl plik

@ -0,0 +1,8 @@
package org.thoughtcrime.securesms.conversation.mutiselect.forward
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
import org.thoughtcrime.securesms.contacts.paged.ContactSearchState
interface SearchConfigurationProvider {
fun getSearchConfiguration(contactSearchState: ContactSearchState): ContactSearchConfiguration? = null
}

Wyświetl plik

@ -18,6 +18,9 @@ import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.TransportOption
import org.thoughtcrime.securesms.TransportOptions
import org.thoughtcrime.securesms.components.emoji.EmojiEventListener
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
import org.thoughtcrime.securesms.contacts.paged.ContactSearchState
import org.thoughtcrime.securesms.conversation.mutiselect.forward.SearchConfigurationProvider
import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageFragment
import org.thoughtcrime.securesms.keyboard.emoji.search.EmojiSearchFragment
import org.thoughtcrime.securesms.mediasend.Media
@ -35,7 +38,8 @@ class MediaSelectionActivity :
MediaReviewFragment.Callback,
EmojiKeyboardPageFragment.Callback,
EmojiEventListener,
EmojiSearchFragment.Callback {
EmojiSearchFragment.Callback,
SearchConfigurationProvider {
lateinit var viewModel: MediaSelectionViewModel
@ -44,6 +48,9 @@ class MediaSelectionActivity :
private val destination: MediaSelectionDestination
get() = MediaSelectionDestination.fromBundle(requireNotNull(intent.getBundleExtra(DESTINATION)))
private val isStory: Boolean
get() = intent.getBooleanExtra(IS_STORY, false)
override fun attachBaseContext(newBase: Context) {
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES
super.attachBaseContext(newBase)
@ -201,6 +208,24 @@ class MediaSelectionActivity :
viewModel.sendCommand(HudCommand.CloseEmojiSearch)
}
override fun getSearchConfiguration(contactSearchState: ContactSearchState): ContactSearchConfiguration? {
return if (isStory) {
ContactSearchConfiguration.build {
query = contactSearchState.query
addSection(
ContactSearchConfiguration.Section.Stories(
groupStories = contactSearchState.groupStories,
includeHeader = true,
headerAction = Stories.getHeaderAction(supportFragmentManager)
)
)
}
} else {
null
}
}
private inner class OnBackPressed : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
val navController = Navigation.findNavController(this@MediaSelectionActivity, R.id.fragment_container)
@ -221,12 +246,19 @@ class MediaSelectionActivity :
private const val MESSAGE = "message"
private const val DESTINATION = "destination"
private const val IS_REPLY = "is_reply"
private const val IS_STORY = "is_story"
@JvmStatic
fun camera(context: Context): Intent {
return camera(context, false)
}
@JvmStatic
fun camera(context: Context, isStory: Boolean): Intent {
return buildIntent(
context = context,
startAction = R.id.action_directly_to_mediaCaptureFragment
startAction = R.id.action_directly_to_mediaCaptureFragment,
isStory = isStory
)
}
@ -307,7 +339,8 @@ class MediaSelectionActivity :
media: List<Media> = listOf(),
destination: MediaSelectionDestination = MediaSelectionDestination.ChooseAfterMediaSelection,
message: CharSequence? = null,
isReply: Boolean = false
isReply: Boolean = false,
isStory: Boolean = false
): Intent {
return Intent(context, MediaSelectionActivity::class.java).apply {
putExtra(START_ACTION, startAction)
@ -316,6 +349,7 @@ class MediaSelectionActivity :
putExtra(MESSAGE, message)
putExtra(DESTINATION, destination.toBundle())
putExtra(IS_REPLY, isReply)
putExtra(IS_STORY, isStory)
}
}
}

Wyświetl plik

@ -13,7 +13,6 @@ import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.RecyclerView
import org.signal.core.util.DimensionUnit
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.contacts.HeaderAction
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
import org.thoughtcrime.securesms.contacts.paged.ContactSearchMediator
@ -25,6 +24,7 @@ import org.thoughtcrime.securesms.mediasend.v2.text.TextStoryPostCreationViewMod
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.sharing.ShareSelectionAdapter
import org.thoughtcrime.securesms.sharing.ShareSelectionMappingModel
import org.thoughtcrime.securesms.stories.Stories
import org.thoughtcrime.securesms.stories.dialogs.StoryDialogs
import org.thoughtcrime.securesms.stories.settings.create.CreateStoryWithViewersFragment
import org.thoughtcrime.securesms.stories.settings.hide.HideStoryFromDialogFragment
@ -131,10 +131,7 @@ class TextStoryPostSendFragment : Fragment(R.layout.stories_send_text_post_fragm
ContactSearchConfiguration.Section.Stories(
groupStories = contactSearchState.groupStories,
includeHeader = true,
headerAction = getHeaderAction(),
expandConfig = ContactSearchConfiguration.ExpandConfig(
isExpanded = contactSearchState.expandedSections.contains(ContactSearchConfiguration.SectionKey.STORIES)
)
headerAction = Stories.getHeaderAction(childFragmentManager)
)
)
}
@ -183,15 +180,6 @@ class TextStoryPostSendFragment : Fragment(R.layout.stories_send_text_post_fragm
.alpha(0f)
}
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)
}
}
override fun onNewStoryClicked() {
findNavController().navigate(R.id.action_textStoryPostSendFragment_to_newStory)
}

Wyświetl plik

@ -1,7 +1,12 @@
package org.thoughtcrime.securesms.stories
import androidx.fragment.app.FragmentManager
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.contacts.HeaderAction
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mediasend.v2.stories.ChooseStoryTypeBottomSheet
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.BottomSheetUtil
import org.thoughtcrime.securesms.util.FeatureFlags
object Stories {
@ -14,4 +19,13 @@ object Stories {
fun isFeatureEnabled(): Boolean {
return isFeatureAvailable() && !SignalStore.storyValues().isFeatureDisabled
}
fun getHeaderAction(fragmentManager: FragmentManager): HeaderAction {
return HeaderAction(
R.string.ContactsCursorLoader_new_story,
R.drawable.ic_plus_20
) {
ChooseStoryTypeBottomSheet().show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
}
}
}

Wyświetl plik

@ -70,7 +70,7 @@ class StoriesLandingFragment :
.ifNecessary()
.withRationaleDialog(getString(R.string.ConversationActivity_to_capture_photos_and_video_allow_signal_access_to_the_camera), R.drawable.ic_camera_24)
.withPermanentDenialDialog(getString(R.string.ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video))
.onAllGranted { startActivity(MediaSelectionActivity.camera(requireContext())) }
.onAllGranted { startActivity(MediaSelectionActivity.camera(requireContext(), isStory = true)) }
.onAnyDenied { Toast.makeText(requireContext(), R.string.ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video, Toast.LENGTH_LONG).show() }
.execute()
}