Start viewer when clicking on story ring.

fork-5.53.8
Alex Hart 2022-03-30 14:44:13 -03:00 zatwierdzone przez Cody Henthorne
rodzic 0ef215dfc5
commit 267efb0763
9 zmienionych plików z 41 dodań i 8 usunięć

Wyświetl plik

@ -51,6 +51,10 @@ class AvatarView @JvmOverloads constructor(
avatar.scaleY = 1f avatar.scaleY = 1f
} }
fun hasStory(): Boolean {
return storyRing.visible
}
fun setStoryRingFromState(storyViewState: StoryViewState) { fun setStoryRingFromState(storyViewState: StoryViewState) {
when (storyViewState) { when (storyViewState) {
StoryViewState.NONE -> hideStoryRing() StoryViewState.NONE -> hideStoryRing()

Wyświetl plik

@ -75,6 +75,7 @@ import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientExporter import org.thoughtcrime.securesms.recipients.RecipientExporter
import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.recipients.ui.bottomsheet.RecipientBottomSheetDialogFragment import org.thoughtcrime.securesms.recipients.ui.bottomsheet.RecipientBottomSheetDialogFragment
import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity
import org.thoughtcrime.securesms.util.CommunicationActions import org.thoughtcrime.securesms.util.CommunicationActions
import org.thoughtcrime.securesms.util.ContextUtil import org.thoughtcrime.securesms.util.ContextUtil
import org.thoughtcrime.securesms.util.ExpirationUtil import org.thoughtcrime.securesms.util.ExpirationUtil
@ -268,10 +269,9 @@ class ConversationSettingsFragment : DSLSettingsFragment(
recipient = state.recipient, recipient = state.recipient,
storyViewState = state.storyViewState, storyViewState = state.storyViewState,
onAvatarClick = { avatar -> onAvatarClick = { avatar ->
if (!state.recipient.isSelf) { if (avatar.hasStory()) {
// startActivity(StoryViewerActivity.createIntent(requireContext(), state.recipient.id)) startActivity(StoryViewerActivity.createIntent(requireContext(), state.recipient.id))
} else if (!state.recipient.isSelf) {
// TODO [stories] -- If recipient has a story, go to story viewer.
requireActivity().apply { requireActivity().apply {
startActivity( startActivity(
AvatarPreviewActivity.intentFromRecipientId(this, state.recipient.id), AvatarPreviewActivity.intentFromRecipientId(this, state.recipient.id),

Wyświetl plik

@ -28,7 +28,7 @@ object AvatarPreference {
class Model( class Model(
val recipient: Recipient, val recipient: Recipient,
val storyViewState: StoryViewState, val storyViewState: StoryViewState,
val onAvatarClick: (View) -> Unit, val onAvatarClick: (AvatarView) -> Unit,
val onBadgeClick: (Badge) -> Unit val onBadgeClick: (Badge) -> Unit
) : PreferenceModel<Model>() { ) : PreferenceModel<Model>() {
override fun areItemsTheSame(newItem: Model): Boolean { override fun areItemsTheSame(newItem: Model): Boolean {

Wyświetl plik

@ -112,6 +112,7 @@ import org.thoughtcrime.securesms.ShortcutLauncherActivity;
import org.thoughtcrime.securesms.TransportOption; import org.thoughtcrime.securesms.TransportOption;
import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel; import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel;
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery; import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery;
import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity;
import org.thoughtcrime.securesms.util.Debouncer; import org.thoughtcrime.securesms.util.Debouncer;
import org.thoughtcrime.securesms.util.LifecycleDisposable; import org.thoughtcrime.securesms.util.LifecycleDisposable;
import org.thoughtcrime.securesms.verify.VerifyIdentityActivity; import org.thoughtcrime.securesms.verify.VerifyIdentityActivity;
@ -1246,6 +1247,10 @@ public class ConversationParentFragment extends Fragment
}); });
} }
private void handleStoryRingClick() {
startActivity(StoryViewerActivity.createIntent(requireContext(), recipient.getId(), -1L));
}
private void handleConversationSettings() { private void handleConversationSettings() {
if (isGroupConversation()) { if (isGroupConversation()) {
handleManageGroup(); handleManageGroup();
@ -2121,6 +2126,7 @@ public class ConversationParentFragment extends Fragment
if (manuallySelected) recordTransportPreference(newTransport); if (manuallySelected) recordTransportPreference(newTransport);
}); });
titleView.setOnStoryRingClickListener(v -> handleStoryRingClick());
titleView.setOnClickListener(v -> handleConversationSettings()); titleView.setOnClickListener(v -> handleConversationSettings());
titleView.setOnLongClickListener(v -> handleDisplayQuickContact()); titleView.setOnLongClickListener(v -> handleDisplayQuickContact());
unblockButton.setOnClickListener(v -> handleUnblock()); unblockButton.setOnClickListener(v -> handleUnblock());

Wyświetl plik

@ -128,6 +128,16 @@ public class ConversationTitleView extends RelativeLayout {
avatar.setStoryRingFromState(storyViewState); avatar.setStoryRingFromState(storyViewState);
} }
public void setOnStoryRingClickListener(@NonNull OnClickListener onStoryRingClickListener) {
avatar.setOnClickListener(v -> {
if (avatar.hasStory()) {
onStoryRingClickListener.onClick(v);
} else {
performClick();
}
});
}
public void setVerified(boolean verified) { public void setVerified(boolean verified) {
this.verified.setVisibility(verified ? View.VISIBLE : View.GONE); this.verified.setVisibility(verified ? View.VISIBLE : View.GONE);

Wyświetl plik

@ -169,7 +169,7 @@ public final class RecipientBottomSheetDialogFragment extends BottomSheetDialogF
if (recipient.isSelf()) { if (recipient.isSelf()) {
avatar.setOnClickListener(v -> { avatar.setOnClickListener(v -> {
dismiss(); dismiss();
viewModel.onMessageClicked(requireActivity()); viewModel.onNoteToSelfClicked(requireActivity());
}); });
} }

Wyświetl plik

@ -32,6 +32,7 @@ import org.thoughtcrime.securesms.groups.ui.addtogroup.AddToGroupsActivity;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.recipients.RecipientUtil;
import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity;
import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.CommunicationActions;
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil; import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
import org.thoughtcrime.securesms.verify.VerifyIdentityActivity; import org.thoughtcrime.securesms.verify.VerifyIdentityActivity;
@ -135,6 +136,14 @@ final class RecipientDialogViewModel extends ViewModel {
return adminActionBusy; return adminActionBusy;
} }
void onNoteToSelfClicked(@NonNull Activity activity) {
if (storyViewState.getValue() == null || storyViewState.getValue() == StoryViewState.NONE) {
onMessageClicked(activity);
} else {
activity.startActivity(StoryViewerActivity.createIntent(activity, recipientDialogRepository.getRecipientId(), -1L));
}
}
void onMessageClicked(@NonNull Activity activity) { void onMessageClicked(@NonNull Activity activity) {
recipientDialogRepository.getRecipient(recipient -> CommunicationActions.startConversation(activity, recipient, null)); recipientDialogRepository.getRecipient(recipient -> CommunicationActions.startConversation(activity, recipient, null));
} }
@ -164,7 +173,11 @@ final class RecipientDialogViewModel extends ViewModel {
} }
void onAvatarClicked(@NonNull Activity activity) { void onAvatarClicked(@NonNull Activity activity) {
activity.startActivity(ConversationSettingsActivity.forRecipient(activity, recipientDialogRepository.getRecipientId())); if (storyViewState.getValue() == null || storyViewState.getValue() == StoryViewState.NONE) {
activity.startActivity(ConversationSettingsActivity.forRecipient(activity, recipientDialogRepository.getRecipientId()));
} else {
activity.startActivity(StoryViewerActivity.createIntent(activity, recipientDialogRepository.getRecipientId(), -1L));
}
} }
void onMakeGroupAdminClicked(@NonNull Activity activity) { void onMakeGroupAdminClicked(@NonNull Activity activity) {

Wyświetl plik

@ -38,6 +38,7 @@ class StoryViewerActivity : PassphraseRequiredActivity() {
private const val ARG_START_RECIPIENT_ID = "start.recipient.id" private const val ARG_START_RECIPIENT_ID = "start.recipient.id"
private const val ARG_START_STORY_ID = "start.story.id" private const val ARG_START_STORY_ID = "start.story.id"
@JvmStatic
fun createIntent(context: Context, recipientId: RecipientId, storyId: Long = -1L): Intent { fun createIntent(context: Context, recipientId: RecipientId, storyId: Long = -1L): Intent {
return Intent(context, StoryViewerActivity::class.java) return Intent(context, StoryViewerActivity::class.java)
.putExtra(ARG_START_RECIPIENT_ID, recipientId) .putExtra(ARG_START_RECIPIENT_ID, recipientId)

Wyświetl plik

@ -59,7 +59,6 @@ import org.thoughtcrime.securesms.util.DateUtils
import org.thoughtcrime.securesms.util.LifecycleDisposable import org.thoughtcrime.securesms.util.LifecycleDisposable
import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.fragments.requireListener import org.thoughtcrime.securesms.util.fragments.requireListener
import org.thoughtcrime.securesms.util.hasThumbnail
import org.thoughtcrime.securesms.util.views.TouchInterceptingFrameLayout import org.thoughtcrime.securesms.util.views.TouchInterceptingFrameLayout
import org.thoughtcrime.securesms.util.visible import org.thoughtcrime.securesms.util.visible
import java.util.Locale import java.util.Locale