kopia lustrzana https://github.com/ryukoposting/Signal-Android
Start viewer when clicking on story ring.
rodzic
0ef215dfc5
commit
267efb0763
|
@ -51,6 +51,10 @@ class AvatarView @JvmOverloads constructor(
|
|||
avatar.scaleY = 1f
|
||||
}
|
||||
|
||||
fun hasStory(): Boolean {
|
||||
return storyRing.visible
|
||||
}
|
||||
|
||||
fun setStoryRingFromState(storyViewState: StoryViewState) {
|
||||
when (storyViewState) {
|
||||
StoryViewState.NONE -> hideStoryRing()
|
||||
|
|
|
@ -75,6 +75,7 @@ import org.thoughtcrime.securesms.recipients.Recipient
|
|||
import org.thoughtcrime.securesms.recipients.RecipientExporter
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
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.ContextUtil
|
||||
import org.thoughtcrime.securesms.util.ExpirationUtil
|
||||
|
@ -268,10 +269,9 @@ class ConversationSettingsFragment : DSLSettingsFragment(
|
|||
recipient = state.recipient,
|
||||
storyViewState = state.storyViewState,
|
||||
onAvatarClick = { avatar ->
|
||||
if (!state.recipient.isSelf) {
|
||||
// startActivity(StoryViewerActivity.createIntent(requireContext(), state.recipient.id))
|
||||
|
||||
// TODO [stories] -- If recipient has a story, go to story viewer.
|
||||
if (avatar.hasStory()) {
|
||||
startActivity(StoryViewerActivity.createIntent(requireContext(), state.recipient.id))
|
||||
} else if (!state.recipient.isSelf) {
|
||||
requireActivity().apply {
|
||||
startActivity(
|
||||
AvatarPreviewActivity.intentFromRecipientId(this, state.recipient.id),
|
||||
|
|
|
@ -28,7 +28,7 @@ object AvatarPreference {
|
|||
class Model(
|
||||
val recipient: Recipient,
|
||||
val storyViewState: StoryViewState,
|
||||
val onAvatarClick: (View) -> Unit,
|
||||
val onAvatarClick: (AvatarView) -> Unit,
|
||||
val onBadgeClick: (Badge) -> Unit
|
||||
) : PreferenceModel<Model>() {
|
||||
override fun areItemsTheSame(newItem: Model): Boolean {
|
||||
|
|
|
@ -112,6 +112,7 @@ import org.thoughtcrime.securesms.ShortcutLauncherActivity;
|
|||
import org.thoughtcrime.securesms.TransportOption;
|
||||
import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel;
|
||||
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.LifecycleDisposable;
|
||||
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() {
|
||||
if (isGroupConversation()) {
|
||||
handleManageGroup();
|
||||
|
@ -2121,6 +2126,7 @@ public class ConversationParentFragment extends Fragment
|
|||
if (manuallySelected) recordTransportPreference(newTransport);
|
||||
});
|
||||
|
||||
titleView.setOnStoryRingClickListener(v -> handleStoryRingClick());
|
||||
titleView.setOnClickListener(v -> handleConversationSettings());
|
||||
titleView.setOnLongClickListener(v -> handleDisplayQuickContact());
|
||||
unblockButton.setOnClickListener(v -> handleUnblock());
|
||||
|
|
|
@ -128,6 +128,16 @@ public class ConversationTitleView extends RelativeLayout {
|
|||
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) {
|
||||
this.verified.setVisibility(verified ? View.VISIBLE : View.GONE);
|
||||
|
||||
|
|
|
@ -169,7 +169,7 @@ public final class RecipientBottomSheetDialogFragment extends BottomSheetDialogF
|
|||
if (recipient.isSelf()) {
|
||||
avatar.setOnClickListener(v -> {
|
||||
dismiss();
|
||||
viewModel.onMessageClicked(requireActivity());
|
||||
viewModel.onNoteToSelfClicked(requireActivity());
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ import org.thoughtcrime.securesms.groups.ui.addtogroup.AddToGroupsActivity;
|
|||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientUtil;
|
||||
import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity;
|
||||
import org.thoughtcrime.securesms.util.CommunicationActions;
|
||||
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
|
||||
import org.thoughtcrime.securesms.verify.VerifyIdentityActivity;
|
||||
|
@ -135,6 +136,14 @@ final class RecipientDialogViewModel extends ViewModel {
|
|||
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) {
|
||||
recipientDialogRepository.getRecipient(recipient -> CommunicationActions.startConversation(activity, recipient, null));
|
||||
}
|
||||
|
@ -164,7 +173,11 @@ final class RecipientDialogViewModel extends ViewModel {
|
|||
}
|
||||
|
||||
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) {
|
||||
|
|
|
@ -38,6 +38,7 @@ class StoryViewerActivity : PassphraseRequiredActivity() {
|
|||
private const val ARG_START_RECIPIENT_ID = "start.recipient.id"
|
||||
private const val ARG_START_STORY_ID = "start.story.id"
|
||||
|
||||
@JvmStatic
|
||||
fun createIntent(context: Context, recipientId: RecipientId, storyId: Long = -1L): Intent {
|
||||
return Intent(context, StoryViewerActivity::class.java)
|
||||
.putExtra(ARG_START_RECIPIENT_ID, recipientId)
|
||||
|
|
|
@ -59,7 +59,6 @@ import org.thoughtcrime.securesms.util.DateUtils
|
|||
import org.thoughtcrime.securesms.util.LifecycleDisposable
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
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.visible
|
||||
import java.util.Locale
|
||||
|
|
Ładowanie…
Reference in New Issue