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
|
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()
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Ładowanie…
Reference in New Issue